PKUfudawei/dsh-capability-menu ↗★ 86
@daweifu/capability-menu
统一的技能与工具常驻/按需管理菜单 适合需要精细化控制不同工具和技能的启用、禁用状态的管理人员。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:PKUfudawei/dsh-capability-menu說明文件
閱讀完整 README ↗配置
规则写在本插件 capability-menu-policy entry 的 config 下:
- 默认文件是
~/.dsh/cordis.patch.yml;设置了$DSH_HOME时使用$DSH_HOME/cordis.patch.yml。 - 可手写 YAML,也可在「能力菜单」里点选。点选立即更新内存,停手约 1.5 秒后统一写回,避免频繁热重载和能力重建。
- Profile 可在自己的
cordis.patch.yml中按 entry ID 覆盖规则。示例中的- insert:、id、name属于 Cordis 补丁结构,不是策略字段。
config:
tools:
resident: # 常驻
- execute_cmd
- get_session_context
- search_kb
- 'mcp__gongfeng__*' # 通配:该 server 下全部常驻
on-demand: # 按需
- 'mcp__*' # 通配兜底
- 'server:km:*' # 按 server 前缀批量按需
disabled: # 禁用
- 'mcp__secret__*' # 禁用优先级最高,压过常驻
skills:
resident: # 常驻
- debugging
- coding
on-demand: # 按需
- legacy_skill # 显式按需(未列出即默认常驻)
disabled: # 禁用
- forbidden_skill
metaTools:
- meta_search # 恒常驻,不可被禁用
- meta_invoke
全部配置项
| 配置项 | 归属 entry | 默认值 | 说明 |
|---|---|---|---|
tools / skills / metaTools | capability-menu-policy | 见上 | 三档分类规则;能力菜单的改动会(防抖后)自动写回本 entry 的 config |
catalogFile | capability-menu-registry | ~/.dsh/capability-catalog.yaml | 按需能力目录物化路径,置空禁用 |
refreshDebounceMs | capability-menu-registry | 200 | 变更事件的重建防抖窗口(ms);0 关闭防抖 |
patchFile | capability-menu-policy | ~/.dsh/cordis.patch.yml($DSH_HOME 优先) | 注册 MCP 服务器写入的 patch 文件 |
skillsDir | capability-menu-policy | ~/.dsh/skills | 注册 Skill 目录的技能根 |
persistDebounceMs | capability-menu-policy | 1500 | 点选改动写回 patch 文件前的防抖窗口(ms) |
这些配置项分别属于对应的插件 entry,通常都写在同一份 cordis.patch.yml 里,不需要为每项单独建配置文件。catalogFile 是插件自动生成、供模型检索的目录文件;skillsDir 是 Skill 存放目录。
规则优先级(按序匹配:禁用始终优先;在常驻与按需之间,精确规则优先于通配):
| 优先级 | 规则 | 示例 | 效果 |
|---|---|---|---|
| 1 | disabled 精确 | disabled: [forbidden_skill] | 最硬禁用,压过一切 |
| 2 | disabled 通配 | disabled: ['mcp__secret__*'] | 整组禁用 |
| 3 | resident 精确 | resident: [bash] | 单个能力显式常驻 |
| 4 | on-demand 精确 | on-demand: [legacy_skill] | 单个能力显式按需(能力菜单点击写入的就是这类) |
| 5 | resident 通配 | resident: ['mcp__gongfeng__*'] | 整组常驻 |
| 6 | on-demand 通配 | on-demand: ['mcp__*'] | 兜底批量按需 |
| 默认 | 未命中任何规则 | — | 常驻 |
若更高优先级规则覆盖了所选档位,界面会提示「分类未生效」。
按需能力目录(catalogFile)
插件会把按需 Tool 和 Skill 写入 catalogFile 指定的 YAML 文件,供模型检索。默认路径为 ~/.dsh/capability-catalog.yaml,设为空字符串可关闭;没有按需能力时,模型不会收到目录提示。目录会在 Tool、Skill 或档位变化后自动更新。
Skill 需要先注册到 ctx.skills 才会出现在目录中。模型可以用 grep / read 搜索目录,或调用 meta_search 查找条目,再通过 meta_invoke 使用对应能力。每个条目包含 id 和 kind,Skill 的 id 使用其名称。
### 全部配置项
| 配置项 | 归属 entry | 默认值 | 说明 |
| --- | --- | --- | --- |
| `tools` / `skills` / `metaTools` | `capability-menu-policy` | 见上 | 三档分类规则;能力菜单的改动会(防抖后)自动写回本 entry 的 `config` |
| `catalogFile` | `capability-menu-registry` | `~/.dsh/capability-catalog.yaml` | 按需能力目录物化路径,置空禁用 |
| `refreshDebounceMs` | `capability-menu-registry` | `200` | 变更事件的重建防抖窗口(ms);`0` 关闭防抖 |
| `patchFile` | `capability-menu-policy` | `~/.dsh/cordis.patch.yml`(`$DSH_HOME` 优先) | 注册 MCP 服务器写入的 patch 文件 |
| `skillsDir` | `capability-menu-policy` | `~/.dsh/skills` | 注册 Skill 目录的技能根 |
| `persistDebounceMs` | `capability-menu-policy` | `1500` | 点选改动写回 patch 文件前的防抖窗口(ms)|
这些配置项分别属于对应的插件 entry,通常都写在同一份 `cordis.patch.yml` 里,不需要为每项单独建配置文件。`catalogFile` 是插件自动生成、供模型检索的目录文件;`skillsDir` 是 Skill 存放目录。
**规则优先级**(按序匹配:禁用始终优先;在常驻与按需之间,精确规则优先于通配):
| 优先级 | 规则 | 示例 | 效果 |
| --- | --- | --- | --- |
| 1 | `disabled` 精确 | `disabled: [forbidden_skill]` | 最硬禁用,压过一切 |
| 2 | `disabled` 通配 | `disabled: ['mcp__secret__*']` | 整组禁用 |
| 3 | `resident` 精确 | `resident: [bash]` | 单个能力显式常驻 |
| 4 | `on-demand` 精确 | `on-demand: [legacy_skill]` | 单个能力显式按需(能力菜单点击写入的就是这类) |
| 5 | `resident` 通配 | `resident: ['mcp__gongfeng__*']` | 整组常驻 |
| 6 | `on-demand` 通配 | `on-demand: ['mcp__*']` | 兜底批量按需 |
| 默认 | 未命中任何规则 | — | 常驻 |
若更高优先级规则覆盖了所选档位,界面会提示「分类未生效」。