前言¶
DeepSeek Harness (DSH) 的核心能力在于通过 Skills 扩展 Agent 的功能。在实际开发中,往往需要在不卸载 Skill 的情况下,临时屏蔽某些工具或能力,或者对大量 Skill 进行统一管理。DSH 原生并未提供全局级的 Skill 启停与运行时过滤机制。
dsh-skill-manager 是一个插件,它通过 Web GUI 提供管理面板,将停用的 Skill 在 Agent 运行时完全过滤掉,同时保持管理列表的可视性与恢复能力。
插件概述¶
这是一个运行在客户端的插件,由 welsione 维护。它解决了以下问题:
- 集中管理:在 Web GUI 设置页统一查看、搜索和筛选所有 Skills。
- 运行时控制:停用某个 Skill 后,Agent 在调用目录注入、工具调用或直接引用时完全不可见该 Skill。
- 持久化配置:禁用名单保存在本地文件,重启后依然生效。
核心功能¶
设置页管理面板¶
安装插件后,进入 Web GUI 的「设置」页面,会出现「Skill 管理」面板。
- 列表展示:显示所有 Skill 的名称、描述、来源以及是否仅允许用户调用。
- 搜索与筛选:支持关键词搜索,以及「全部 / 已启用 / 已停用」的筛选。
- 开关操作:针对单个 Skill 进行启用或停用。
批量操作¶
工具栏提供一键操作按钮:
- 全部启用:批量开启所有 Skill。
- 全部停用:批量关闭所有 Skill(操作前需确认)。
插件配置卡片¶
在「设置」 -> 「插件」 -> 「插件配置」区域,会出现 dsh-skill-manager 的配置卡片。该卡片实时显示当前的启停统计与状态文件路径。
运行时过滤机制¶
这是该插件的核心能力。一旦在管理面板中停用一个 Skill,DSH 会在运行时拦截对该 Skill 的访问:
- 目录注入拦截:
<available_skills>标签中不再包含该 Skill。 - 工具调用拦截:Agent 无法通过
skill工具调用该 Skill。 - 引用拦截:用户直接使用
/name引用该 Skill 会被拦截。
此过滤对所有 Agent 及其子 Agent 全局生效。
持久化与可见性¶
- 持久化:停用名单存储在
~/.dsh/skill-manager.json。插件重启或 DSH 重启后,配置依然有效。 - 全量可见:停用仅影响 Agent 的运行时发现。在管理列表中,所有 Skill 始终可见,随时可以重新启用。
Headless 兼容¶
该插件支持 Headless 模式(无 Web GUI 的 profile)。虽然运行时过滤是硬依赖,但 Web 服务器和 Agents 的加载是可选等待的,因此不影响 Headless 环境的使用。
目录自动更新¶
当已打开的会话检测到 Skill 列表发生变化(如停用/启用)时,会自动发布「目录已更新」的消息,无需手动刷新或重新创建会话。
技术特性¶
- 零构建:单文件插件(ESM host + ModuleLoader client),无需编译步骤。
- 自动挂载:通过
dsh.profile.bundles自动进入dsh.bundle.patch层,无需手动编辑配置文件。
安装与启用¶
安装前请确认你的 DSH 版本满足以下要求:
- DSH 版本:0.1.0-rc.7 及以上
- 模型要求:需要 bundle 插件模型(
dsh.profile.bundles+dsh.bundle.patch)
使用以下命令安装插件:
# 1. 通过 npm 仓库安装(推荐固定版本)
dsh plugin --profile web add dsh-skill-manager
# 2. 或直接从 GitHub 安装
dsh plugin --profile web add github:welsione/dsh-skill-manager
# 3. 或指定版本安装(避免主分支漂移)
dsh plugin --profile web add github:welsione/dsh-skill-manager#v1.2.0
安装完成后,刷新 Web 页面,在「设置」中即可看到「Skill 管理」入口。
注意:
* 不要手动编辑cordis.patch.yml,bundle 层会自动挂载。
* 使用github:安装时,仓库版本需已提交并git push(v1.1.0+)。
API 使用示例¶
除了 GUI 操作,插件还暴露了 HTTP API,可用于脚本控制。
获取 Skill 列表¶
curl -s http://127.0.0.1:3080/api/skill-manager/list
启停单个 Skill¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"name":"mmx-cli","enabled":false}'
批量启停¶
curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
-H 'content-type: application/json' \
-d '{"names":["a","b"],"enabled":true}'
卸载¶
如需卸载插件,执行以下命令:
dsh plugin --profile web remove dsh-skill-manager
卸载后,~/.dsh/skill-manager.json 文件会保留,重新安装该插件时可沿用之前的禁用名单配置。
依赖与环境¶
- Peer Dependencies:
@deepseek-ai/dsh-settings(^0.1.0-rc.7) - Dependencies:
@deepseek-ai/dsh-home-paths,@deepseek-ai/schemastery - Git 依赖须知: 使用
github:安装时,确保本地代码已推送至远程仓库,否则可能因依赖解析失败导致安装异常。
总结¶
dsh-skill-manager 提供了一种轻量级的方式在 DSH 中管理 Skills 的可见性。它通过 Web GUI 实现了可视化的启停控制,并通过运行时拦截确保了 Agent 的行为一致性。对于需要精细控制 Agent 能力范围的开发者来说,这是一个实用的工具。