前言¶
在 DSH(DeepSeek Harness)里,技能来自多个根目录,但系统默认只扫描 ~/.dsh/skills,很容易漏掉其他根里的技能;技能文件的前置声明(frontmatter)写错时,运行时静默丢弃,难以排查;开启或关闭技能通常需要编辑文件名,改动分散。这些问题会让技能列表与实际可用能力不一致,影响模型调用效率。
插件定位¶
dsh-skill-cockpit 是一个面向 DSH 的技能驾驶舱插件。它在应用级导航中占据一个官方页面,列出机器实际暴露的全部技能,说明某技能为何不可见,并支持按技能重命名入口文件来启停。由 huanlin-labs 维护,分类为客户端。
核心功能¶
- 导航栏页面:占据
sidebar.panellist位置(order:5),位于“Plugins”与“Schedule”之间,与官方页面使用相同的扩展点注册。 - 全根扫描:扫描全部六类 skill 根:
project-dsh、project-agents、custom、user-dsh、user-agents、bundled,避免漏报。 - 可解释的不可见原因:对因 frontmatter 错误导致的静默丢弃,给出具体原因(如
dropped:no-frontmatter、dropped:unclosed、dropped:bad-yaml等),并提示根缺失、名称冲突或显式错误。 - 使用次数统计:从会话日志中解析
tool-call形式的技能调用,按技能名聚合计数,数据存储在<dshHome>/dsh-skill-cockpit/usage.json,仅含名称、次数和时间戳,不记录消息正文。 - “加载但不被使用”检查:识别四类技术上有效但模型不会选用的技能:
shadowed(名称冲突)、short-description(描述过短)、dir-name-mismatch(目录名与 frontmatter 不符)、empty-body(内容为空或极小)。 - 仅改入口文件即可启停:启用/禁用通过重命名
SKILL.md↔SKILL.md.disabled实现,没有额外状态文件,入口文件名是唯一事实来源。项目级 skill 根始终只读。 - 诚实标明能力边界:无法禁用第三方或 bundled 提供的技能,相关行会说明原因,避免误操作。
- 无 peer 依赖:插件声明
inject = [],客户端只声明slots,不依赖@deepseek-ai/dsh*系列,不触碰凭据面。
安装与启用¶
通过 npm 安装:
npm i dsh-skill-cockpit
也可在 DSH 插件管理器中将该包作为 bundle 安装。安装后重启 DSH,该页面会出现在左侧导航中。
典型用法¶
- 打开技能驾驶舱页面,查看全部已加载技能及其来源根。
- 若某技能不在列表中,查看“问题”视图,了解不可见原因。
- 在“列表”页为可写技能启用/禁用,或通过拖拽调整分组。
- 在“用量”页查看各技能调用次数,识别从未被选用的技能。
- 在“管理”页新建、导入或编辑技能,支持备份与回收站机制。
适用场景与注意¶
适合需要在导航中统一管理技能、排查技能不可见原因、统计技能使用情况、通过简单文件重命名控制技能可用性的 DSH 用户。插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。
短结尾¶
dsh-skill-cockpit 提供了一个集中的技能视图、可解释的不可见诊断、使用统计与轻量启停机制,帮助维护技能清单与可用性。目录页与代码仓库见下。