前言¶
DeepSeek Harness(dsh)允许通过插件扩展智能体行为,也允许在会话中加载技能清单。默认情况下,没有做过选择的对话会保持 dsh 默认行为,即全部载入。如果一次只想让某些技能进入当前对话,就需要一个按对话控制的入口。
dsh-skill-loader 是 dsh 的一个插件。它在新建对话的开始页增加「技能清单」选择器,让你决定本次对话载入哪些技能的清单条目。未勾选的技能在该对话中不可用。
这是什么¶
dsh-skill-loader 的仓库位于 kezboardpj/dsh-skill-loader,许可证为 MIT。它解决的是 dsh 会话中技能可见性的问题:在开始对话前选择技能清单,而不是在对话开始后通过外部配置逐个排除。
核心功能¶
开始页增加「技能清单」chip¶
在新建对话的开始页,「工作目录」「agent 预设」chip 旁会出现「技能清单」chip。它只在当前会话处于 blank(未开始对话)时显示;对话开始后自动消失。
实现上,它不是声明一个新的内置槽位,而是在开始页该行内追加自己的 chip 节点,并用 react-dom 渲染。
按勾选载入技能¶
勾选某个 skill 后,该 skill 的清单条目会载入本对话;模型看到的 <available_skills> 只包含勾选的技能。
未勾选的 skill 在本对话不可用。模型目录、/名称 手势与 skill 工具都会拒绝调用未选中的技能。
没有做过选择的对话保持 dsh 默认行为,即全部载入。
选择状态持久化¶
选择状态写入 dsh settings 的 skill-loader 命名空间,文件为 $DSH_HOME/settings.yaml。刷新或重启后状态仍然准确。
命令¶
/skill-select <name1,name2,...>:将本对话的技能清单设为这些技能;逗号分隔。无参数时清空选择。
/skill-unarchive <sessionId1,...>:取消归档指定会话,使其重新出现在侧边栏。
接管与拦截¶
插件通过宿主 agent/pre-step 接管技能目录,并通过 tools/pre-execute 拦截未选技能的 skill 调用。
安装与启用¶
下面以 web profile 为例。如果你使用其他 profile,把命令中的 web 替换为对应 profile 名。
从 GitHub 安装:
dsh plugin --profile web add https://github.com/kezboardpj/dsh-skill-loader.git
从本地目录安装:
dsh plugin --profile web add ./dsh-skill-loader
安装后重启该 profile 的 dsh。已安装插件不做热加载。
注意:dsh plugin add 不能处理含空格的路径。如果本地路径包含空格,需要直接编辑 profile 的 package.json 依赖和 dsh.profile.bundles,然后运行:
pnpm install
典型用法¶
1、新建一个 dsh 对话。
2、在开始页点击「技能清单」chip。
3、勾选本次对话要载入的 skill。
4、开始对话。此时模型只能看到已勾选技能的清单条目。
5、如果运行中想调整清单,可以输入:
/skill-select <name1,name2>
6、如果要清空当前对话的技能选择:
/skill-select
7、如果要让某个已归档会话重新出现在侧边栏:
/skill-unarchive <sessionId1>
从 0.1 升级到 0.2¶
如果之前安装的是 0.1,升级时建议保持 dsh 停止,按下面步骤操作。
1、运行 scripts/repair-v01-logs.mjs,修复被 0.1 写坏的历史会话日志。
2、如果 0.1 时期使用本地目录 link 安装,请改为从 GitHub 安装。0.2 的宿主端有依赖,裸目录可能无法解析。
3、进入你的 profile 目录,执行:
pnpm update dsh-skill-loader
4、重启 dsh。
升级后,修复过的旧会话中 0.1 时期的选择不再生效,会回到默认的「全部载入」。需要重新勾选。
0.2 宿主端新增了 @deepseek-ai/dsh-settings 与 @deepseek-ai/schemastery 依赖;package.json 中还声明 client 注入 @deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-connection。
适用场景与注意¶
适合以下情况:
- 你在 dsh 中维护了多个技能,但希望不同对话只载入相关技能。
- 你希望在新建对话时快速选择清单,而不是进入全局配置。
- 你需要通过
/skill-select快速清空或切换当前对话技能。 - 你需要恢复侧边栏中缺失的已归档会话。
使用前注意:
- 插件以当前 dsh 进程权限运行,会接管技能目录、拦截
skill调用,并写入$DSH_HOME/settings.yaml。安装前建议检查源码、依赖与许可证。 - 当前版本许可证为 MIT。
- 安装后需要重启对应 profile 的 dsh。
- 路径含空格时,按上文的手动 profile 配置方式处理。
链接¶
GitHub 仓库:
https://github.com/kezboardpj/dsh-skill-loader
如果只需要按对话控制 dsh 中可见的技能,这个插件提供了入口和持久化选择状态。