dsh-skill-labels:给 DSH 技能目录加中文短标题

前言

DeepSeek Harness(DSH)的技能会出现在两个地方:模型会话里的 available_skills 列表,以及输入框 / 唤出的技能菜单。默认每条技能只有 kebab-case 名称和英文描述,人在长列表里逐条辨认成本偏高。有人用别的插件标出来源或做启停管理,本插件解决的是另一件事——在描述前加一段 4–7 字的中文标题,英文原描述完整保留,不改动面向模型的触发信息。

下面介绍维护者 Siloet-phy 开源的 dsh-skill-labels(GitHub:Siloet-phy/dsh-skill-labels,当前包版本 0.2.0,MIT 许可证)。社区目录页:https://www.skillhub.cn/plugins/Siloet-phy/dsh-skill-labels。

这是什么

dsh-skill-labels 是 DSH 插件:在技能注册表返回的每条 description 前插入可自定义的前缀标签,默认排版为 【标题】原描述。例如 html-ppt 可从纯英文描述变为 【写PPT】HTML PPT Studio — …。

标签按技能名匹配,与技能来自官方内置、工作区、用户目录还是 GitHub 无关;表外技能保持原样。插件零第三方依赖,安装后默认即可用。

核心功能

两个出口同时生效

模型侧技能目录与 / 菜单读取同一份注册表数据。插件在 SkillRegistry 的 snapshot() / list() 上包装,仅在交付前改写 description;技能名、invocation、路径与 get() 加载路径不变。README 标明在 DeepSeek Harness 0.2.0-rc.2 实测通过,仅使用 ctx.skills、ctx.tools(可选)与 ctx.logger。

四级标签表与热更新

标签按优先级从低到高覆盖:

  1. 内置 DEFAULT_LABELS(约 12 条常用默认)
  2. 包内 labels.json
  3. 用户文件 ~/.dsh/skill-labels.json(升级插件不覆盖)
  4. cordis.patch.yml 里行配置 config.labels

文件按修改时间懒加载,保存后生效,无需重启 DSH(直接挂载源码调试时改动可立即生效,见安装节)。

排版与格式

行配置支持:

字段 类型 默认值 说明
format string 【{label}】{description} 须含 {description}
labels object {} 名称到标题映射,优先级最高
labelsFile string | false ~/.dsh/skill-labels.json false 表示不读用户文件

标签不限于中文,可为 emoji、英文短名或编号,例如 🎨 画图、excel、① 常用。

skill_labels 工具

装完并重启 DSH 后,模型工具列表会出现 skill_labels:

  • action: "list" — 列出各技能现有标签、来源(builtin / package / user / config)及未标注清单(只读)
  • action: "set" — 将 { 技能名: 标签 } 合并写入用户标签表,原子写入;已有条目不动;非法 JSON 时拒绝覆盖

可在会话中用自然语言让模型补全未标注技能,例如要求 4–7 字短标题。手写时编辑 ~/.dsh/skill-labels.json 即可:

{
  "my-own-skill": "我的技能",
  "html-ppt": "做幻灯片"
}

Windows 用户表路径为 C:\Users\<用户名>\.dsh\skill-labels.json。

与同类插件的差异(README 归纳)

截至文档撰写时,技能菜单方向另有标来源、做管理面板的插件;本插件专注「一眼看懂用途」,并支持自定义标签表、模型侧目录同步展示,以及 AI 维护用户标签表。卸载时可还原被包装的注册表方法。

安装与启用

需先在 profile 中安装,再由 profile 的 cordis.patch.yml 启用。三种方式只应保留一种,否则可能挂载两次。

从 GitHub 安装(Web profile,推荐):

dsh plugin --profile web add github:Siloet-phy/dsh-skill-labels

桌面版将 web 换为 desktop:

dsh plugin --profile desktop add github:Siloet-phy/dsh-skill-labels

本地目录(开发调试):

dsh plugin --profile web add file:/绝对路径/dsh-skill-labels

不安装、直接挂载(改源码立即生效):在 cordis.patch.yml 末尾追加 insert,name 指向本地 index.js 的绝对 URL(Windows 用 file:///C:/…)。安装完成后需重启对应 profile 的 DSH;直接挂载方式文档说明无需重启。

可选行配置示例:

- insert:
    - id: skill-labels
      name: 'dsh-skill-labels'
      config:
        format: '【{label}】{description}'
        labels:
          html-ppt: 写PPT
        labelsFile: 'D:/my-labels.json'

注意:同一 id 的 config 在 patch 层是整块替换,覆盖时要写完整配置。

典型用法

1. 安装后看菜单

按 / 打开技能菜单,已出现在标签表中的技能会在描述前显示中文标题,例如 office-xlsx → 【写Excel】Read, create, and modify Excel workbooks …。

2. 给新装的 GitHub 技能加标签

从菜单或 skill_labels 的 list 拿到技能名(如 dig、pdf),写入用户表:

{
  "dig": "挖简历亮点",
  "pdf": "读PDF"
}

3. 让 AI 批量补标签

重启 DSH 后,在会话中说明希望列出未标注技能并写入 4–7 字中文标题;模型依次调用 list 与 set,结果写入 labelsFile 指向的文件。

4. 自定义排版

在 profile 配置里调整 format,仍须保留 {description},以便模型继续看到完整英文触发描述。

适用场景与注意

适合长期在 DSH 里维护较多技能、希望在人和模型两侧目录都能快速扫读用途的开发者。内置默认表面向 DSH 生态通用技能;个人技能与第三方技能集的标签应放在用户表,文档不建议把私有标签提 PR 进内置表。

运行与安全:

  • 插件以当前 DSH 进程权限运行;skill_labels 的 set 只写标签表文件(默认 ~/.dsh/skill-labels.json),合并写入、表损坏时不覆盖。
  • 安装前应自行查看仓库源码与 MIT 许可证;README 另有「安全与隐私」「已知限制」章节,升级与卸载说明见仓库文档。
  • Node 引擎要求 >=20(见 package.json)。

结尾

dsh-skill-labels 在不动英文描述的前提下,为技能目录加上可热更新的中文短标题,并可通过 skill_labels 让模型帮你维护用户标签表。目录与源码:

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

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

小夜