以可视化菜单查看和管理 Agent 的工具与技能,按常驻、按需、禁用三档控制能力暴露;支持按需检索和使用,减少上下文占用。
安装
# npm 包(预构建)
dsh plugin --profile web add @daweifu/capability-menu
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:PKUfudawei/dsh-capability-menu
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
目录
能力总览
- 为 DeepSeek Harness 的 tools(包括 MCP 工具和内置工具)与 skills 建立统一能力目录:
ctx.capability。 - 提供常驻 / 按需 / 禁用三档策略,管理能力的暴露与调用。
- 按需能力只在需要时提供给 Agent,减少单次请求携带的工具定义,节省 token 和上下文。
能力模型
Capability 是本插件引入的上位概念:Tool / Skill 是不同类型的 capability。
| kind | 对 Agent 提供 | action | 备注 |
|---|---|---|---|
tool |
执行一个动作(MCP 工具或内置原生工具) | execute |
由 ctx.tools 索引 |
skill |
某类任务的方法/流程/知识 | load |
由 ctx.skills 索引 |
模型获得两个元工具:
| 工具 | 作用 | 对应 entry |
|---|---|---|
meta_search |
在当前会话可见能力中搜索;列表支持 offset 分页并返回总数、已返回数和是否还有下一页;详情返回说明及工具参数 schema | @daweifu/capability-menu/search |
meta_invoke |
统一执行面:Tool 真执行(走完整 ctx.tools 管线)+ Skill 加载;force: true 可重载已更新的 Skill |
@daweifu/capability-menu/invoke |
能力菜单
安装后,在「设置」导航中选择「能力菜单」,即可管理 Tools 和 Skills。
| 操作 | 用法 |
|---|---|
| 更改档位 | 点击能力旁的圆点;也可以点击顶部档位计数,批量切换该组能力 |
| 查找能力 | 使用页签下方的过滤框搜索名称或分组;支持正则表达式,不区分大小写 |
| 查看能力详情 | 点击 Tool 查看定义;点击 Skill 展开文件列表并预览文件,内容按 Markdown 渲染 |
| 注册能力 | 点击右上角「注册能力」,添加 MCP 服务器或 Skill 目录;Skill 支持本机目录或公开 GitHub 链接 |
| 编辑或移除 | 在 Tools 的服务器分组或 Skills 的技能项中点击「编辑」 |
| 查看规则和检索目录 | 点击页头右侧的「策略与目录」,查看生效规则及自动生成的按需能力检索目录;可在目录页调整检索描述上限 |
| 编辑检索描述 | 将 Tool 或 Skill 设为「按需」后,点击旁边的「检索描述」,在来源描述的简短版本上修改 |
MCP 工具在服务器分组内省略重复的 mcp__服务器名__ 显示前缀;悬停可查看完整名称,检索和调用仍使用完整 ID。
注册 MCP 会写入 patch 配置;文件或父目录缺失时会自动创建。MCP 请求头等凭据保存在配置中,请妥善保管。注册 Skill 则会在所选技能根目录创建链接或导入目录。
GitHub Skill 支持默认分支根目录链接(需含 SKILL.md)、指定分支根目录 https://github.com/{owner}/{repo}/tree/{branch},以及指定分支下的技能目录 https://github.com/{owner}/{repo}/tree/{branch}/{skill-directory}。也可输入本机目录。仅支持公开仓库;导入需要运行 dsh 的机器安装 Git,插件会校验 SKILL.md 并只复制所选目录。
安装与卸载
前置:Node.js 与 dsh CLI。从 npm 安装无需单独安装 pnpm;从源码安装需要 pnpm。
从 npm 安装(推荐)
在 Web Profile 安装:
dsh plugin --profile web add @daweifu/capability-menu
从源码安装
git clone https://github.com/PKUfudawei/dsh-capability-menu.git
cd dsh-capability-menu
pnpm install # prepare 脚本自动构建 lib/(服务端)与 lib/client.js(前端)
dsh plugin --profile web add .
验证安装
cd "${DSH_HOME:-$HOME/.dsh}/profiles/web" && pnpm list @daweifu/capability-menu && dsh --profile web --dump-config | grep -m1 '== @daweifu/capability-menu'
卸载
dsh plugin --profile web remove @daweifu/capability-menu
暴露策略
所有能力(Tool 与 Skill)按 暴露程度(模型在上下文中看到什么)与 执行方式 分为三档:
Tools 和 Skills 三档暴露与执行对照
| 档位 | 能力 | 模型能看到什么 | 如何找到 | 如何使用 |
|---|---|---|---|---|
| 常驻 | tool | 工具定义始终随请求提供 | 无需查找 | 直接调用;运行时经过完整 ctx.tools 管线 |
| skill | 名称和简介显示在 <available_skills> 中 |
无需查找 | skill 工具按需加载正文 |
|
| 按需 | tool | 不随请求提供工具定义 | 用 meta_search 搜索候选项,或搜索能力目录 YAML(catalogFile) |
按精确 ID 查看参数后,用 meta_invoke 调用 |
| skill | 不显示在 <available_skills> 中 |
用 meta_search 搜索,或搜索能力目录 YAML(catalogFile) |
用 meta_invoke 加载 SKILL.md |
|
| 禁用 | tool | 不随请求提供工具定义 | 搜索结果和能力目录中均不可见 | 调用会被拒绝 |
| skill | 不显示在 <available_skills> 中 |
搜索结果和能力目录中均不可见 | 加载会被拒绝 |
覆盖与保留:
- 三档策略同时覆盖 MCP 与内置原生工具;内置工具归入保留组
built-in。请勿把 MCP server 命名为built-in。meta_search和meta_invoke固定常驻且不可禁用。run_code是 Code Mode 保留工具,不进目录或菜单,也无需配置档位。- 高频核心工具建议设为常驻:按需内置工具先用
meta_search({query})找 ID,再用精确 ID 查看 schema,最后通过meta_invoke调用。
配置
手写规则位于 capability-menu-policy entry 的 config 下。以下是配置片段;完整安装补丁见 cordis.patch.yml。
- 默认 patch 是
${DSH_HOME:-~/.dsh}/cordis.patch.yml;Profile 也可在自己的 patch 中覆盖该 entry。 - 菜单中的档位调整立即生效,停手约 1.5 秒后写入独立的
stateFile,不会因档位写入而重载插件。手写规则仍是基础;界面选择覆盖同一能力的精确规则,禁用通配规则仍优先。 stateFile默认与patchFile同目录,各 Profile 共用;需要隔离时,分别指定stateFile。要清除界面选择,停止 DSH 后删除该状态文件;原有 patch 规则仍会生效。
config:
tools:
on-demand: # 按需
- 'mcp__example__*' # 某个 MCP 服务器下的工具
disabled: # 禁用
- 'mcp__secret__*'
skills:
on-demand: # 按需
- example_skill # 未列出的能力默认常驻
全部配置项
| 配置项 | 归属 entry | 默认值 | 说明 |
|---|---|---|---|
tools / skills / metaTools |
capability-menu-policy |
见随包补丁 | patch 中的基础分类规则;界面档位改动保存在独立状态文件 |
catalogFile |
capability-menu-registry |
${DSH_HOME:-~/.dsh}/capability-catalog.yaml |
按需能力目录物化路径,置空禁用 |
searchMetadataFile |
capability-menu-registry |
${DSH_HOME:-~/.dsh}/capability-menu-search-metadata.json |
检索描述与前端上限设置的状态文件;置空后无法保存修改 |
summaryMaxChars |
capability-menu-registry |
320 |
检索描述、meta_search 列表摘要及目录描述的初始字符上限;最小为 20;前端保存的值优先 |
refreshDebounceMs |
capability-menu-registry |
200 |
变更事件的重建防抖窗口(ms);0 关闭防抖 |
patchFile |
capability-menu-policy |
~/.dsh/cordis.patch.yml($DSH_HOME 优先) |
注册 MCP 服务器写入的 patch 文件 |
stateFile |
capability-menu-policy |
与 patchFile 同目录的 capability-menu-policy.json |
界面档位改动的状态文件,置空禁用持久化 |
skillsDir |
capability-menu-policy |
~/.dsh/skills |
注册 Skill 目录的技能根 |
persistDebounceMs |
capability-menu-policy |
1500 |
点选改动写入状态文件前的防抖窗口(ms) |
这些配置项分别属于对应的插件 entry,通常都写在同一份 cordis.patch.yml 里。stateFile 和 searchMetadataFile 由插件自动创建;catalogFile 是供模型检索的生成文件,skillsDir 是 Skill 存放目录。
规则优先级(按序匹配:禁用始终优先;在常驻与按需之间,精确规则优先于通配):
| 优先级 | 规则 | 示例 | 效果 |
|---|---|---|---|
| 1 | disabled 精确 |
disabled: [forbidden_skill] |
最硬禁用,压过一切 |
| 2 | disabled 通配 |
disabled: ['mcp__secret__*'] |
整组禁用 |
| 3 | resident 精确 |
resident: [bash] |
单个能力显式常驻 |
| 4 | on-demand 精确 |
on-demand: [example_skill] |
单个能力显式按需(能力菜单点击写入的就是这类) |
| 5 | resident 通配 |
resident: ['mcp__gongfeng__*'] |
整组常驻 |
| 6 | on-demand 通配 |
on-demand: ['mcp__*'] |
兜底批量按需 |
| 默认 | 未命中任何规则 | — | 常驻 |
若更高优先级规则覆盖了所选档位,界面会提示「分类未生效」。
按需能力检索目录(catalogFile)
插件将按需 Tool 和 Skill 写入 YAML 检索目录;常驻与禁用能力不写入。
- 目录文件: 默认为
${DSH_HOME:-~/.dsh}/capability-catalog.yaml;无按需能力时内容是capabilities: []。设置catalogFile: ''可关闭生成。目录随能力、档位和检索描述变化自动更新,请勿直接编辑生成文件。 - 检索描述: 按需能力旁可打开编辑框。它预填最多
summaryMaxChars个字符的来源描述(默认 320,截断时优先保留完整词句);修改后用于meta_search列表与关键词匹配,并同步到目录,不改变来源定义或精确详情。「还原」仅重置输入框,仍需「保存」。 - 描述上限: 在「策略与目录 → 按需能力检索目录」修改,最小 20 字符。设置保存在
searchMetadataFile,优先于 patch 中的summaryMaxChars;降低上限前需先缩短超限的自定义描述。 - 检索与调用: 使用
meta_search({query})或目录中的id查找候选项,再用meta_search({id, kind})查看完整参数 schema,最后用meta_invoke({id, kind, args})调用或加载。目录只保存检索摘要,不包含参数 schema。模型能读取目录路径时,也可用grep/read检索。meta_search默认每页 20 项、最多 50 项;下一页的offset等于当前offset + returned。Skill 须先注册到ctx.skills;若要重新加载会话中已读取的 Skill,传force: true。
生成文件示例:
capabilities:
- id: mcp__km__search
kind: tool
description: 搜索知识库
server: km
- id: example_skill
kind: skill
description: 处理日志的低频技能
whenToUse: 排查日志问题时使用
License
本项目遵循 Apache License 2.0。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 35014
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 5944
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
T-Auto/dsh-ops★ 3709
为 Windows 的 DSH 提供 bash、PowerShell 7 及 Rust 高性能工具,减少 token 消耗。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1141
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
sixtysevenlf/dsh-blender-plugin★ 1019
让 DSH agent 通过直连 TCP 通道驱动本地 Blender,提供 16 个工具:视口帧、自定义视角渲染、Python 执行、无头与作业卸载、事务回滚,以及 28 个 family / 186 个 op 的规划层。
anysearch-team/anysearch-dsh★ 634
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。