dsh-skill-manager:在 Harness 侧栏统一管理 SKILL 分组与开关

前言

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 中的顺序操作:

  1. 从侧栏打开 SKILL 管理面板。
  2. 点「新建分组」,输入名称后回车或点「创建」。
  3. 用每行右侧「移到…」把技能归入目标分组(已归组的可选「未分组」)。
  4. 用行尾开关停止或恢复索引;筛选计数会立刻更新。
  5. 用搜索框或「全部 / 已启用 / 已关闭」标签缩小列表。
  6. 点分组标题折叠 / 展开;拖 ⠿ 排序分组;⋯ 菜单可重命名或删除分组。
  7. 需要一次改多项时,点「批量管理」,勾选后批量启用 / 关闭或移动,再点「完成」。

每次切换后,模型的下一步会拿到新的技能目录;被关闭的技能会从 <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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜