dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
阶段性结论软强制守卫:常驻注入系统提示词规范,并在模型调用工具漏发可见结论时自动附加软强制纠偏提醒,支持 Web 设置表单。
阶段性结论软强制守卫插件(Milestone Progress Soft-Enforcement Guard for DeepSeek Harness)
dsh-milestone-guard 是一个面向 DeepSeek Harness (DSH) 的轻量级 Cordis 插件。它通过 「System Prompt 常驻规范注入 + tools/post-execute 瀑布流软强制纠偏提醒 + GUI 可视化热更新配置」 的机制,解决思考模型(Reasoning Models)在长链路 Agent 任务中常见的两大痛点:
<thought> 块内,随后直接跳到 <call:...> 发起数十次工具调用而不输出任何人类可见正文;当 GUI 默认折叠思考过程时,用户只能看到一排工具刷屏,无法获知上一步验证的结论或下一步意图。

| 场景 | 未启用 dsh-milestone-guard | 启用 dsh-milestone-guard 后 |
|---|---|---|
| 连续工具调用时 | 模型从 </thought> 直接跳到 <call:read>、<call:grep>,界面只见工具刷屏,没有任何阶段性结论。 | 发起工具调用前自动附带 1~2 句简明人类可见结论(如:“已确认配置文件入口,接下来检查中间件注册逻辑”)。 |
| 中途汇报进展时 | 模型单独发送一段纯文本总结而不带工具调用,导致 Agent 循环直接中断等待用户输入。 | 强制要求阶段性结论必须与下一步工具调用(或 todo_write)在同一回复中并发发出,长链路一气呵成。 |
| 长链路注意力衰减时 | 随着上下文增长,模型逐渐遗忘 System Prompt 规范,恢复静默调用工具。 | tools/post-execute 自动检测静默步并在 additionalContexts 前置注入 notice 软提醒,下一轮立即恢复规范输出,且不打断、不浪费当前工具执行结果。 |
flowchart LR
A["1. System Prompt 常驻注入<br/>ctx.systemPrompt.section"] --> B["LLM 生成回复<br/>(Thought + Text? + Tool Calls)"]
B --> C["2. 工具执行后拦截<br/>ctx.on('tools/post-execute')"]
C --> D{"最新 assistant/message<br/>是否包含非空可见 Text 块?"}
D -- "是 (合规)" --> E["重置连续静默计数<br/>原样透传 downstream"]
D -- "否 (漏发阶段性结论)" --> F{"WeakMap (agent, turn, step)<br/>同一步去重 & maxSilentSteps 检查"}
F -- "同一步已提醒 / 未超容忍步数" --> E
F -- "触发纠偏" --> G["前置注入 notice 提醒至<br/>downstream.additionalContexts"]
tools/pre-execute 阶段粗暴阻断(block)工具执行,而是让工具正常执行完毕后,在 tools/post-execute 阶段向 downstream.additionalContexts 前置附加一条 notice 提醒消息,兼顾执行效率与纠偏效果。(turn, step) 中并发调用多个工具(如同时调用 5 次 read)时,基于 WeakMap<Agent, State> 按 (agent, turn, step) 去重,确保同一步只评估并注入一次提醒,且随 Agent 实例销毁自动回收内存。.volatile() 热更新:内置客户端配置组件(lib/client.js),在 DeepSeek Harness「插件 → 已安装 → 阶段性结论守卫」页面直接提供可视化配置表单,修改后无需重启会话即可实时生效。session.events(数组属性)、session.snapshotEvents()(DSH 0.1.5+ / 0.2.0+ 方法)与 session.log;@deepseek-ai/dsh-llm 和 @deepseek-ai/schemastery 提供宿主动态解析与内置零依赖 Fallback(含 toJSON() 与 Standard Schema ~standard 协议),可在纯 Node.js 环境独立运行和测试。dsh-milestone-guard)」,即可在详情面板中直接修改:
maxSilentSteps)sectionOrder)reminderText)cordis.patch.yml 中配置- id: milestone-guard
name: dsh-milestone-guard
config:
enabled: true
locale: zh
sectionOrder: 180
maxSilentSteps: 0
ignoreTools: []
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled | boolean | true | 是否启用本插件。 |
locale | 'zh' | 'en' | 'zh' | 内置 System Prompt 规范与软强制提醒文本的语言预设(支持中英双语开箱即用)。 |
sectionOrder | number | 180 | 注入到 System Prompt 的段落排序权重(支持 GUI 热更新,数值越小位置越靠前)。 |
maxSilentSteps | number | 0 | 允许模型连续多少步仅调用工具而不输出可见结论(支持 GUI 热更新)。默认 0 表示每步必报(当步漏发立即提醒);设为 N(如 2)表示允许连续静默 2 步,第 3 步仍无正文时才触发提醒(即每 N+1 步至少汇报一次)。同时支持别名 everySteps: N(自动换算为 maxSilentSteps: N - 1)。 |
ignoreTools | string[] | [] | 忽略的工具名称列表(例如 ["todo_write"])。当某一步仅调用了列表内的工具时,不触发漏发阶段性结论提醒。 |
promptText | string | (内置预设) | 自定义注入到 System Prompt 的规范正文;留空时自动使用 locale 对应的内置预设。 |
reminderText | string | (内置预设) | 自定义检测到静默工具调用时注入的软提醒文本(支持 GUI 热更新);留空或恢复默认时使用内置预设。 |
本项目使用 Node.js 原生测试运行器(node:test),无需安装额外测试框架即可验证全部核心行为:
npm test