dsh-host-compliance-check:DSH 轮末需求合规提醒宿主插件

前言

在 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/)下:

  1. 在 package.json 增加 file 依赖并安装:
{
  "dependencies": {
    "dsh-host-compliance-check": "file:./plugins/dsh-host-compliance-check"
  }
}

然后在该目录执行 pnpm install(或 npm install)。

  1. 在 cordis.patch.yml 注册:
- insert:
    - id: compliance-check
      name: 'dsh-host-compliance-check'
  1. 重启 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 做深入合规检查。

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

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

小夜