前言¶
在 DeepSeek Harness(DSH)里跑长会话时,主模型往往在「改完文件、准备结束本轮」时缺少一道固定闸门:本轮动过哪些路径、是否和用户原始需求一致,容易依赖人工回忆或事后 diff。常见做法是手动加 stop-hook、或在对话里反复叮嘱「改完自查」——前者要维护钩子逻辑,后者不稳定。
下面介绍社区工作流类宿主插件 dsh-host-compliance-check(维护者 liuyun847):在主会话轮次正常结束时,若本轮确实写过文件,向主会话注入 notice 形态的合规提醒(含文件清单与自查引导),由主模型当场决定直接收尾、简要自查,或阻塞并调用 subagent 深入检查。DSH 生态主张「一切皆插件」;插件索引来自独立社区目录 SkillHub,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-host-compliance-check 是 DSH 宿主插件,通过 cordis.patch.yml 挂入 Cordis 运行时。SkillHub 上的简介为:「DSH 宿主插件:轮末自动派发需求合规检查子智能体 (DeepSeek Harness)」;仓库 README(v0.4.x)进一步说明:行为上模仿 Trae 的 stop-hook(PostToolUse + Stop → decision 移交),当前版本不自动派发检查子智能体,而是在轮末注入 notice,由主模型自行判断后续动作。
- 仓库:
liuyun847/dsh-host-compliance-check - 分类:工作流(SkillHub
categoryKey:agent-workflow) - 许可证:MIT(SkillHub 元数据)
- 当前 manifest 版本:0.4.2(目录页标注 v0.4.2)
核心功能¶
以下能力均来自仓库 README 与 SkillHub 同步的 manifest 描述,安装前可在目录页查看完整 README。
轮末 notice 提醒¶
主会话轮次正常结束(监听 agent/turn-stopping,近似 Trae 的 Stop)时,若满足:本轮修改过文件、且本用户输入尚未提醒过,则通过 agent.inject 注入 notice(source.form='notice',summary 一句话 ≤120 字)。消息进入 next-step 队列,本 turn 继续,主模型当场看到并响应后再真正结束——效果上类似 Trae 的 block,而非静默结束。
基于 tools/result 的文件收集¶
v0.4.0 起,写入路径的收集信源改为 tools/result 实时精确记录:
- 顶层
write/edit成功 → 提取真实file_path; run_code内通过tools.write/tools.edit子派发同样经工具管道产生tools/result;- 会话事件日志中的顶层
tool/call仅作兜底。
每轮用户新消息经 agent/pre-step 复位「已提醒」标记与本轮写入表。可对路径配置 skipPaths 过滤。
会话范围与提示内容¶
- 仅对主会话触发;子代理会话(header
origin: 'subagent')排除,避免嵌套提醒。GUI 恢复/续写的 fork 会话(有parentSession、无origin)仍视为主会话。 - 提示词携带按时间顺序拼接的全部用户输入历史(跳过插件注入,过长时截断保留最新),并内置自查清单与处理方式引导(可直接结束 / 阻塞调 subagent 或
subagent_fork深查)。
已知限制¶
- 只覆盖经 标准
tools.write/tools.edit的写入;PTC 裸写(如await import('node:fs')直接写盘、绕过 tools 绑定)不产生tools/result,插件检测不到。 - 无子代理自动派发,不依赖
ctx.get('subagents')。
配置项¶
在 cordis.patch.yml 对应 entry 的 config 中(README 表格):
| 字段 | 默认值 | 说明 |
|---|---|---|
skipPaths |
[] |
跳过匹配的路径(RegExp/字符串数组),命中则不记录 |
diag |
false |
写诊断日志到 ~/.dsh/compliance-diag.log(优先 DSH_HOME;排查用) |
0.2.x 的 providerName、promptTemplate、diffMaxChars 等字段与 0.3.x 源码解析逻辑已移除。
安装与启用¶
插件以当前 dsh 进程权限运行;安装前应阅读 GitHub 源码与 MIT 许可证,确认 cordis.patch.yml 中的 bundle patch(./cordis.patch.yml)符合预期。
方式一:SkillHub 安装计划(推荐核对 commit)¶
SkillHub 对 liuyun847/dsh-host-compliance-check 标注为可安装(installability: verified),并给出带精确 commit 的命令(profile 示例为 web,请按自己的 profile 替换):
dsh plugin --profile web add github:liuyun847/dsh-host-compliance-check#0a02278cef3a966dd7435cf00430c68a8e484453
执行后按安装计划重启,例如:
dsh --profile web
并确认插件行已挂载且无启动错误。
方式二:README 中的 profile 本地依赖¶
在 DSH profile 目录(例如 ~/.dsh/profiles/web/)下:
- 在
package.json增加 file 依赖并安装:
{
"dependencies": {
"dsh-host-compliance-check": "file:./plugins/dsh-host-compliance-check"
}
}
然后在该目录执行 pnpm install(或 npm install)。
- 在
cordis.patch.yml注册:
- insert:
- id: compliance-check
name: 'dsh-host-compliance-check'
- 重启
dsh web生效。
README 注明:仓库以 plugins/dsh-host-compliance-check/ 为活源,运行时加载 node_modules 下的 file 拷贝;改活源后需把 lib/index.js、package.json 等同步到 node_modules/dsh-host-compliance-check/ 再重启。
典型用法¶
启用后无需单独 CLI:在主会话中正常让模型使用 write / edit(或 run_code 内的 tools 写入)改文件。当本轮 turn 即将结束时,若本轮有记录到的写入且尚未对本条用户输入提醒过,会自动注入 notice,主模型应阅读文件清单与用户诉求对照,再选择收尾或调用 subagent。
排查时可临时设置 diag: true,查看 ~/.dsh/compliance-diag.log(或 DSH_HOME 下对应路径)。
开发侧单测(README):
pnpm install
node plugins/dsh-host-compliance-check/tests/diff.test.mjs
适用场景与注意¶
适合:希望在 DSH 主会话里固定一道「轮末合规闸门」的团队或个人;已使用 subagent 做深查、但希望默认由主模型决定是否派发,而不是插件硬编码自动 fork。
注意:
- 插件逻辑与宿主 Cordis 事件强相关,peer 依赖包括
@deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-subagent等(见 SkillHub manifest);升级 DSH 时需关注兼容性。 - 依赖 tools 管道的写入检测,PTC 裸写不在覆盖范围内。
- GitHub 仓库星标为 0(SkillHub 同步数据);以目录页与 README 为准理解行为,勿将目录页一句「自动派发子智能体」与 v0.4.x「notice + 主模型判断」混为一谈。
链接¶
- SkillHub 目录页:https://www.skillhub.cn/plugins/liuyun847/dsh-host-compliance-check
- GitHub:https://github.com/liuyun847/dsh-host-compliance-check
经过上面的步骤,你可以在 DSH 工作流里把「轮末是否对照需求与改动文件」从口头习惯变成宿主插件驱动的 notice 提醒,并在需要时再交给 subagent 做深入合规检查。