dsh-skill-eval:用 LLM judge 量化 DSH 技能触发可靠性的评测插件

前言

在 DSH(DeepSeek Harness)里,一个技能能不能被用上,很大程度取决于它的 description:模型根据技能目录提示词里的 description,决定要不要调用某个技能。description 写得过窄,匹配的查询不会触发该技能(欠触发);写得过宽,不相关的查询也会被触发(过触发)。

这两种问题平时只能手工试几条查询,凭感觉判断,结果既不可复现,也难以比较。dsh-skill-eval 把这件事变成可复现的评测:用一个 LLM judge 完整复现官方技能目录提示词,逐条判断测试查询是否应触发目标技能,再汇总成指标。

这是什么

dsh-skill-eval 是一个 Skill-trigger 评测插件,由 renjianguojinqianfan 维护,MIT 许可证,当前版本 0.1.0,要求 Node >= 20。

它解决的问题很具体:衡量一个技能的 description 把匹配查询路由到该技能的可靠程度,并用数字量化欠触发和过触发的程度。

工作原理

插件运行时分四步:

  1. 枚举当前会话中模型可调用的技能(ctx.skills.snapshot)。
  2. 逐字复现官方目录消息,包括 <system-reminder><available_skills>,以及经过归一化、截断、转义处理的 description。
  3. 对每条测试查询,让 judge 模型判断目标技能是否应被触发,强制输出单行 YES/NO
  4. 与期望标签对比,汇总指标。

汇总的指标包括 accuracy、precision、recall、假阳率、假阴率和混淆矩阵。

为了保证复现的目录消息不随 DSH 升级悄悄偏离,插件自带目录保真 fixture,锁定官方 dsh-tool-skill@0.1.0-rc.6 模板。DSH 升级后,可以从本地官方安装刷新 fixture 并审查 diff:

node scripts/refresh-catalog-fixture.mjs <path-to-dsh-tool-skill/lib/index.js>

安装与启用

安装命令须在仓库根目录(repo root)执行:

dsh plugin --profile web add ./dsh-skill-eval

然后在 profile/overlay 的 cordis.patch.yml 中配置 judge 模型路由:

- id: skill-eval
  config:
    provider: <provider-id>
    model: <model-name>

注意,这里的 provider 必须已注册在 DSH LLM runtime 中,也就是你的 profile 聊天所用的同一个 runtime。插件启动时会校验该路由,provider 未注册时给出告警。

编写测试用例

测试用例是一个 JSON 数组,每项包含 query 和期望标签 should_trigger

[
  { "query": "add a tool to the harness that persists across restarts", "should_trigger": true },
  { "query": "help me write a Python script for this CSV", "should_trigger": false }
]

category 字段可选,目前预留未来使用。

典型用法

斜杠命令:

/skill-eval <skill-name> [test-file]

模型可调用工具:

run_skill_eval(skill_name="<skill-name>", test_file="examples/dsh-plugin-eval.json")

test-file 参数可省略,默认使用插件包内的 examples/dsh-plugin-eval.json;相对路径按插件包目录解析。

如果想比较不同 judge 模型的判断差异,直接更换配置里的 provider/model 再跑一遍即可。

开发与测试

插件自带一套开发和测试脚本:

npm run check     # 所有 JS 文件语法检查
npm test          # node:test,含官方目录保真与 mock ctx 测试
npm run smoke     # 51 条纯函数冒烟断言
npm pack --dry-run  # 检查发布文件列表
bash scripts/mount-smoke.sh  # 在临时 home 中做真实 DSH 挂载冒烟

适用场景与注意

适合谁:

  • 给 DSH 编写或维护技能、想系统性验证 description 路由质量的开发者。
  • 想在提交前发现欠触发/过触发问题,而不是等上线后靠用户碰运气。

使用时注意三点:

  1. 评测结果衡量的是 judge 模型对给定 description 的路由准确率,而不是目标技能本身的准确率。换 judge 模型,结果可能不同。
  2. judge 的 provider 必须已注册在 DSH LLM runtime,否则插件启动时会告警。
  3. 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(本项目为 MIT)。

结尾

对写 DSH 技能的人来说,dsh-skill-eval 提供的是一类此前缺失的东西:一个可复现、可比较的数字,告诉你 description 到底把多少匹配查询正确路由到了技能上。

DSH 的理念是「一切皆插件」,社区维护了一个独立的插件目录(与 DeepSeek、幻方无官方从属关系)。项目入口如下:

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

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

Xiaoye