dsh-skill-manager:给 DSH 技能做分类管理的插件

前言

用 DSH(DeepSeek Harness)跑智能体一段时间后,技能目录往往会越积越多。技能一多,问题就很具体:哪些技能属于哪类工作、某个场景该用哪一个、暂时不用的怎么停掉。DSH 本身没有提供整理手段,通常只能逐个手动编辑技能的 frontmatter。

dsh-skill-manager 补的就是这一环:按分类、标签和集合整理技能,并在 DSH Web 里提供一个可视化管理面板。DSH 的理念是「一切皆插件」,技能管理这件事本身也以插件形式提供。下面介绍它的功能、安装步骤和典型用法。

这是什么

一句话定位:DSH 技能分类管理器,按分类、标签和集合整理 agent 技能。作者是 LIU20030725,MIT 许可证,当前版本 0.5.0。

它的数据是纯本地的、无服务依赖:分类和标签直接写进技能文件本身(因此对任何能读 frontmatter 的 agent 都兼容),集合关系存一份本地 JSON。

核心功能

自由分类与标签

分类写入技能 frontmatter 的 metadata.category,分类名可自由创建、随时修改;标签写入 metadata.tags,逗号分隔,支持多个。写入后的技能文件类似:

---
name: ai-video-script
description: 生成 AI 视频脚本
metadata:
  category: 视频创作
  tags: [视频, 脚本]
---

集合文件夹

可以把多个技能组织成命名集合,一个技能可同时属于多个集合。面板顶部筛选区点击集合芯片,左侧列表就只显示该集合内的技能。

浏览、筛选与预览

支持搜索、按分类筛选、按集合筛选。左侧点击某个技能行,会展开一张简介卡片,包含描述、适用场景、标签和启用状态。

启用与停用

一键写入 frontmatter 的 disable-model-invocation 字段,这是 DSH 原生识别的字段。停用后模型不再自动加载该技能,但技能仍保留在库中,仍可手动调用。

输入框集合挑选

在对话输入框输入 / 后继续输入集合名(如 /AI视频),下拉「集合技能」分组会显示匹配的集合文件夹,点开弹出该集合的技能列表,带简介、可返回、保留滚动位置。点选某个技能后,输入框自动填入 /技能名,回车即可调用。技能多、记不清名字时,可以按文件夹逐级浏览挑选。

斜杠命令

/skillmgr 系列命令覆盖全部功能,直接在对话输入框使用,命令不经模型。

安装与启用

环境要求:DeepSeek Harness(dsh web)0.1.0-rc.6 及以上,Node.js 20 及以上。

先安装插件本体:

dsh plugin --profile web add github:LIU20030725/dsh-skill-manager

若依赖解析失败,可以在 web profile 目录(通常是 ~/.dsh/profiles/web)手动安装:

cd ~/.dsh/profiles/web
pnpm add github:LIU20030725/dsh-skill-manager
# 或改用完整 git URL
pnpm add git+https://github.com/LIU20030725/dsh-skill-manager.git

再挂载插件。编辑同一目录下的 cordis.patch.yml,在顶层数组加入:

- insert:
    - id: skill-manager
      name: 'dsh-skill-manager'

最后重启 dsh web。这一步不能省:客户端面板 bundle 与宿主命令注册均在 Web 启动时加载,配置热更新无法加载新插件。

经过上面的步骤,重启后刷新页面,设置里会出现「技能管理」面板;对话输入框输入 /skillmgr help 可以确认命令已注册。

典型用法

设置面板

面板分三块:

  1. 左侧是全部技能列表,顶部为「全部 / 分类芯片 / 集合芯片」筛选区,点击技能行展开简介卡片;
  2. 右侧是选中技能的编辑区,可设置分类(自由输入或从已有分类中选)、标签(逗号分隔)、勾选所属集合、启用或停用;
  3. 底部是集合区,可新建集合,点击展开查看并管理集合内技能。

斜杠命令

/skillmgr help
/skillmgr catalog                             # 全部技能 + 集合(JSON
/skillmgr get <name>                          # 单个技能详情(JSON
/skillmgr set-category <name> <分类|->        # 设置分类;- 清除
/skillmgr set-tags <name> <tag1,tag2|->       # 设置标签;- 清除
/skillmgr set-enabled <name> <on|off>         # 启用 / 停用
/skillmgr collection list                     # 列出集合
/skillmgr collection create <名称>            # 新建集合
/skillmgr collection rename <旧名> <新名>     # 重命名
/skillmgr collection delete <名称>            # 删除集合
/skillmgr collection add <名称> <skill...>    # 把技能加入集合
/skillmgr collection remove <名称> <skill...> # 从集合移除技能
/skillmgr collection clear <名称>             # 清空集合

面板能做的,命令都能做,两者等价。

管理范围与数据存储

插件可以管理任何带磁盘路径、可写的技能,即 SKILL.md 所在的文件。典型位置:

  • 用户技能(推荐):~/.agents/skills/<name>/SKILL.md$DSH_HOME/skills/<name>/SKILL.md
  • 项目技能:<项目根>/.dsh/skills<项目根>/.agents/skills
  • DSH 内置技能:位于 node_modules,只读,面板中可见但写入会报错

数据分两处存放:分类、标签和 disable-model-invocation 写在各技能的 SKILL.md frontmatter 里,属于技能文件本身;集合存于 $DSH_HOME/skill-manager/collections.json(默认 ~/.dsh/skill-manager/collections.json)。

实现方式(给开发者)

插件分两半。宿主半边是一个 cordis 插件,注入 skillscommands 两个服务,负责读写 frontmatter、维护集合 JSON、注册 skillmgr 命令;浏览器半边按 DSH 客户端插件 bundle 规范打包,注册 settings.section(即「技能管理」面板),数据操作经 ctx.remote.commands.execute 调用宿主命令。

卸载

cd ~/.dsh/profiles/web
pnpm remove dsh-skill-manager

同时从 cordis.patch.yml 删除对应的 insert 行,再重启 dsh web。

注意:卸载不会删除技能文件里的分类和标签(它们属于技能本身),也不会删除 collections.json。这些数据如果不要了,需手动删除。

适用场景与注意事项

适合谁:

  • 技能数量较多,需要按工作流分类、打标签来检索;
  • 想把某个场景常用的一组技能组织成集合,在输入框里按文件夹挑选;
  • 有些技能不想让模型自动加载,但也不想删掉。

几点注意:

  1. 安装后必须重启 dsh web,热更新不生效;
  2. DSH 内置技能只读,不能打分类标签,要管理的技能请放在用户或项目技能目录;
  3. 本插件以当前 dsh 进程的权限运行,可读写技能文件和本地配置。安装前建议先查看源码与许可证(本项目为 MIT),确认可接受再装;
  4. 卸载插件不会清理它写入的数据,彻底清理需手动处理。

小结

dsh-skill-manager 把技能整理从「手动改文件」变成面板里的几次点击,数据全部落在本地文件,不增加服务依赖。如果你在 DSH 里的技能已经多到不好找,可以试一试。

目录页为社区维护的独立站点,与 DeepSeek、幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

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

小夜