---
title: "capabilities"
description: "查询当前宿主的平台、已实现命令和当前可用权限。"
---


> 查询当前宿主的平台、已实现命令和当前可用权限。

## 签名

```ts
KSM.capabilities(): Promise<KSMCapabilities>
KSM.get(): Promise<KSMCapabilities>
```

`get()` 是兼容别名，与 `capabilities()` 共用同一份缓存。

## 平台与权限

| Windows | Android |权限 |
| --- | --- | --- |
|支持 |支持 |无 |

## 参数

无。

## 返回值

```ts
interface KSMCapabilities {
  platform: 'windows' | 'android';
  commands: string[];
  permissions: string[];
}
```

`commands` 是当前宿主实际注册的命令，Android 不会包含 `window.setTitle`、
`window.minimize` 和 `window.maximize`。

## 行为

- 第一次调用发送 `capabilities.query`，成功后缓存返回值。
- 同一时刻的多个调用复用同一个在途 Promise。
- 后续调用直接返回缓存，不会再次访问宿主。
- `permission.request` 改变权限后不会自动刷新缓存。
- WebView 重建恢复时会清除缓存并重新查询。
- 当前没有公开的缓存失效方法；需要主动刷新时，可重新初始化桥接。

## 示例

```ts
const { platform, commands } = await KSM.capabilities();

if (!commands.includes('notification.show')) {
  throw new Error(`通知能力不可用: ${platform}`);
}
```

## 错误

|错误 |场景 |
| --- | --- |
|普通 `Error` |桥接尚未初始化 |
| `TIMEOUT` |能力查询超时 |
| `UNKNOWN_COMMAND` |自定义宿主未实现能力查询 |

## 相关

- [initialize](/docs/kasumi/api/core/initialize)
- [permission.request](/docs/kasumi/api/permission/request)
- [types](/docs/kasumi/api/types)