前言¶
在长链路 Agent 任务中,思考模型(Reasoning Models)容易把推理过程隐藏在 <thought> 块内,随后直接发起一连串工具调用,界面只看到工具刷屏而缺少人类可见的阶段性结论;同时,当 Prompt 要求“汇报阶段性进展”时,模型可能单独输出纯文本,导致 Agent 主循环误判回合结束而提前停顿。dsh-milestone-guard 通过常驻规范注入与软强制纠偏提醒,缓解这两个常见问题。
插件简介¶
dsh-milestone-guard 是面向 DeepSeek Harness(DSH)的轻量级 Cordis 插件,通过“System Prompt 常驻规范注入 + tools/post-execute 瀑布流软强制纠偏提醒 + GUI 可视化热更新配置”的机制,解决思考模型在长链路 Agent 任务中的静默工具调用与回合误判中断问题。由维护者 xt765 提供,分类为工作流。
核心功能¶
1. System Prompt 常驻规范注入¶
插件通过 ctx.systemPrompt.section 向对话上下文注入阶段性结论规范,引导模型在发起工具调用时同步输出简明的人类可见结论(如“已确认配置文件入口,接下来检查中间件注册逻辑”)。规范文本支持中英双语预设,也可通过 promptText 自定义。
2. 软强制纠偏提醒¶
在 tools/post-execute 阶段,插件会检查最新 assistant/message 是否包含非空可见 Text 块。若未包含,则基于 WeakMap<Agent, State> 按 (agent, turn, step) 去重并校验 maxSilentSteps,当触发条件时在 downstream.additionalContexts 前置注入 notice 软提醒。该机制不阻断工具执行,避免浪费已执行结果,仅在下轮对话中提示模型补充结论。
3. 步级并发去重与防内存泄漏¶
当模型在同一 (turn, step) 中并发调用多个工具(如同时调用 5 次 read)时,插件按 (agent, turn, step) 去重,确保同一步只评估并注入一次提醒;同时利用 WeakMap,随 Agent 实例销毁自动回收内存。
4. GUI 可视化热更新¶
插件内置客户端配置组件(lib/client.js),在 DSH「插件 → 已安装 → 阶段性结论守卫(dsh-milestone-guard)」页面提供可视化配置表单。修改后无需重启会话即可实时生效。
5. 零外部强依赖与多版本兼容¶
插件自动兼容 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 环境独立运行和测试。
安装与启用¶
方式一:通过 GUI 安装与配置¶
- 在 DeepSeek Harness「插件 (Plugins) → 添加插件」中填入本地路径或仓库地址进行安装。
- 点击「插件 → 已安装 → 阶段性结论守卫 (
dsh-milestone-guard)」,即可在详情面板中直接修改:
* 最大连续静默步数(maxSilentSteps)
* System Prompt 排序权重(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 的段落排序权重,数值越小越靠前。 |
maxSilentSteps |
number |
0 |
允许连续多少步仅调用工具而不输出可见结论。默认 0 表示每步必报;设为 N 表示允许连续静默 N 步,第 N+1 步仍无正文时才触发提醒;支持别名 everySteps: N(自动换算为 maxSilentSteps: N - 1)。 |
ignoreTools |
string[] |
[] |
忽略的工具名称列表(例如 ["todo_write"]),仅调用列表内工具时不触发提醒。 |
promptText |
string |
(内置预设) | 自定义注入到 System Prompt 的规范正文,留空时使用 locale 对应的内置预设。 |
reminderText |
string |
(内置预设) | 自定义检测到静默工具调用时注入的软提醒文本,留空或恢复默认时使用内置预设。 |
开发与测试¶
项目使用 Node.js 原生测试运行器(node:test),无需安装额外测试框架即可验证全部核心行为:
npm test
适用场景与注意¶
- 适合需要长链路工具调用且希望保持阶段性结论可见的开发者与团队。
- 插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。
小结¶
dsh-milestone-guard 通过常驻规范注入、tools/post-execute 瀑布流软强制纠偏提醒以及 GUI 可视化热更新配置,帮助思考模型在长链路 Agent 任务中保持阶段性结论的可见性,避免静默工具调用与回合误判中断。如需了解详情,可访问插件目录页或 GitHub 仓库。