前言¶
DeepSeek Harness(DSH)的技能可能来自内置包、~/.dsh/skills、项目目录、preset 等多处。目录一长,每次请求都会带上技能相关的上下文;其中不少技能只是偶尔用到,却长期占着索引位。Harness 本身不会替你在 GUI 里做「分组整理」和「按需关闭索引」——关闭不等于删文件,但又要让模型的技能目录、skill 工具、/技能名 手势和输入框 / 菜单同步不再展示该项。
下面介绍社区插件 @kev1nlol/dsh-skill-manager(维护者 kev1nlol,MIT 许可,当前 package 版本 1.8.2):在 Web GUI 左栏增加 SKILL 管理 面板,对已安装技能做分组、排序,并逐个或批量启用 / 关闭;开关通过遮蔽 provider 生效,不改动任何 SKILL.md。插件为第三方作品,与 DeepSeek 官方无隶属关系;可通过 SkillHub 目录页 或 GitHub 仓库 获取。
这是什么¶
一句话:给 DSH 增加侧栏 SKILL 管理入口,用本地 JSON 记录分组与禁用名单,在活动 Agent 作用域内注册遮蔽,从而控制技能是否仍被索引与展示。
分类上属于客户端插件(dsh.client.platform: web),侧栏图标 order 为 15。面板与 skill_manager 智能体工具共用同一套宿主逻辑;另提供本机回环 HTTP 接口,便于脚本读写状态。
核心功能¶
侧栏与面板¶
左栏出现「SKILL 管理」图标,点开即主面板。界面支持中英文,插件元数据已本地化。
分组(仅整理,不参与发现)¶
- 新建、重命名、删除分组;删除分组只去掉标签,组内技能回到「未分组」。
- 分组标题可折叠 / 展开;拖组头左侧
⠿手柄调整顺序(近面板边缘自动滚动),⋯菜单提供上移 / 下移 / 置顶 / 置底作为兜底,顺序持久化。 - 技能归组用行内「移到…」或批量「移到分组 / 移出分组」;技能行本身不支持拖拽归组(与分组排序不同)。
分组名与归属写在 Harness 配置目录下的 skill-manager.json,不参与技能的发现、索引与加载。
搜索、筛选与折叠¶
搜索框按名称、描述、来源过滤;顶部「全部 / 已启用 / 已关闭」为带计数的筛选标签,筛选时分组标题显示「可见/总数」。工具栏提供「全部折叠 / 全部展开」,折叠状态记在浏览器本地。
启用 / 关闭(影响索引)¶
行尾开关或批量「启用 / 关闭」决定该技能是否仍被索引。关闭时,插件在每个活动 Agent 自己的作用域里注册名为 skill-manager 的遮蔽 provider,对该技能名返回 invocation: { modelInvocable: false, userInvocable: false }。消费方包括:dsh-tool-skill 的模型目录(变化时追加替换目录)、skill 工具、/技能名 手势、输入框 / 技能菜单(skills/list,会话有活动 Agent 时)。重新打开即撤掉遮蔽,不编辑、不移动、不删除技能文件。
切换后会 invalidate() 注册表缓存,下一步 agent/pre-step 即可让模型看到更新后的 <available_skills>。
批量管理¶
点「批量管理」后工具栏整行变为批量操作条:全选 / 反选 / 清空(仅作用于当前可见技能)、启用 / 关闭、移到分组 / 移出分组,完成后点「完成」。无悬浮层。Esc 可逐层退出:菜单 → 重命名 → 搜索 → 批量模式。
数据与 HTTP / 工具¶
状态文件默认路径:~/.dsh/skill-manager.json(即 $DSH_HOME/skill-manager.json),结构含 version、groups、assignments、disabled、meta(关闭期间仍能在面板显示摘要)。
同源回环路由:
| 路由 | 方法 | 作用 |
|---|---|---|
/skill-manager/api/state |
GET | 技能、分组、计数、发现状态 |
/skill-manager/api/action |
POST | 单次变更,返回同样状态 |
POST 需 content-type: application/json,支持 enable、disable、create_group、rename_group、delete_group、assign、reorder_groups、batch 等 action;详情见仓库 README。
模型侧可用 skill_manager 工具,action 包括 list、enable、disable、batch 及分组相关操作。
环境要求¶
- DeepSeek Harness
>= 0.2.1-rc.5(见engines.dsh)。 - Node
^22.19.0 || >=24.0.0(跟随 Harness 自带版本)。 - 维护者在 Windows + Web GUI(
http://127.0.0.1:<port>)上验证;从file://加载的外壳可能解析不到/skill-manager/...路由。
安装与启用¶
推荐通过 Harness Plugins 页面,或让智能体用 plugin_manager 安装 bundle:
- npm:
@kev1nlol/dsh-skill-manager(发布后可用),或 - Git:
git+https://github.com/kev1nlol/dsh-skill-manager.git
安装完成后刷新一次页面,侧栏会出现图标。
本地 checkout 可交给管理器链接目录:
plugin_manager install_bundle → D:\path\to\dsh-skill-manager
(将路径换成你本机 checkout 的绝对路径。)改动源码后若 shell 未自动加载新模块代次,重新执行一次安装即可。
也可在 profile 中手动写入:
- name: '@kev1nlol/dsh-skill-manager'
安装前请自行阅读仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,状态写入本机 JSON,并注册 HTTP 路由与 Agent 作用域 provider。
典型用法¶
经过上面的安装与刷新,可按 README 中的顺序操作:
- 从侧栏打开 SKILL 管理面板。
- 点「新建分组」,输入名称后回车或点「创建」。
- 用每行右侧「移到…」把技能归入目标分组(已归组的可选「未分组」)。
- 用行尾开关停止或恢复索引;筛选计数会立刻更新。
- 用搜索框或「全部 / 已启用 / 已关闭」标签缩小列表。
- 点分组标题折叠 / 展开;拖
⠿排序分组;⋯菜单可重命名或删除分组。 - 需要一次改多项时,点「批量管理」,勾选后批量启用 / 关闭或移动,再点「完成」。
每次切换后,模型的下一步会拿到新的技能目录;被关闭的技能会从 <available_skills> 和该会话的 / 菜单里消失。
脚本示例(需 Harness HTTP 服务已起且同源或回环可达):
{ "action": "disable", "name": "office-pptx" }
{ "action": "batch", "op": "assign", "names": ["office-docx"], "group_id": "g-9a588124" }
POST 到 /skill-manager/api/action 即可;group 与 group_id 均可接受分组名或 id,空串表示移回未分组。
适用场景与注意¶
适合谁:长期在 Web GUI 里用 Harness、技能来源多、希望减少默认上下文噪音,又需要偶尔再打开某项的开发者。
务必知晓:
- 面板不能删除技能;要从磁盘移除请回到来源(如
~/.dsh/skills/<name>/或安装它的 bundle)。 - 冷会话:没有活动 Agent 时,
/菜单可能走 preset 作用域,按 Agent 的遮蔽不生效;发一条消息激活 Agent 后,下一次取数才按开关过滤。 - 某 provider 发现不完整时,面板会提示,并展示最近一次可用结果。
结尾¶
dsh-skill-manager 把「看全已装技能、按自己习惯分组、按需关掉索引」收进侧栏一套界面,并与 skill_manager 工具、回环 API 对齐;分组只是本地标签,开关才是真的影响模型目录与 / 菜单。需要安装说明与 action 字段完整列表时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/kev1nlol/dsh-skill-manager
- GitHub:https://github.com/kev1nlol/dsh-skill-manager