前言¶
在 DSH(DeepSeek Harness)里,一个技能能不能被用上,很大程度取决于它的 description:模型根据技能目录提示词里的 description,决定要不要调用某个技能。description 写得过窄,匹配的查询不会触发该技能(欠触发);写得过宽,不相关的查询也会被触发(过触发)。
这两种问题平时只能手工试几条查询,凭感觉判断,结果既不可复现,也难以比较。dsh-skill-eval 把这件事变成可复现的评测:用一个 LLM judge 完整复现官方技能目录提示词,逐条判断测试查询是否应触发目标技能,再汇总成指标。
这是什么¶
dsh-skill-eval 是一个 Skill-trigger 评测插件,由 renjianguojinqianfan 维护,MIT 许可证,当前版本 0.1.0,要求 Node >= 20。
它解决的问题很具体:衡量一个技能的 description 把匹配查询路由到该技能的可靠程度,并用数字量化欠触发和过触发的程度。
工作原理¶
插件运行时分四步:
- 枚举当前会话中模型可调用的技能(
ctx.skills.snapshot)。 - 逐字复现官方目录消息,包括
<system-reminder>、<available_skills>,以及经过归一化、截断、转义处理的 description。 - 对每条测试查询,让 judge 模型判断目标技能是否应被触发,强制输出单行
YES/NO。 - 与期望标签对比,汇总指标。
汇总的指标包括 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 路由质量的开发者。
- 想在提交前发现欠触发/过触发问题,而不是等上线后靠用户碰运气。
使用时注意三点:
- 评测结果衡量的是 judge 模型对给定 description 的路由准确率,而不是目标技能本身的准确率。换 judge 模型,结果可能不同。
- judge 的 provider 必须已注册在 DSH LLM runtime,否则插件启动时会告警。
- 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(本项目为 MIT)。
结尾¶
对写 DSH 技能的人来说,dsh-skill-eval 提供的是一类此前缺失的东西:一个可复现、可比较的数字,告诉你 description 到底把多少匹配查询正确路由到了技能上。
DSH 的理念是「一切皆插件」,社区维护了一个独立的插件目录(与 DeepSeek、幻方无官方从属关系)。项目入口如下: