dsh-cot-anchor:工具边界结论回流与生成中途软切

前言

在 DSH 里跑多步智能体任务时,常见一类退化:模型在思考链里反复重新推导已经得出的结论、把工具调用写成纯文本、原地重复同一段话,或输出无意义的递增数字流。这类问题往往发生在单次生成流内部,下一步起手时上下文里并没有把「已经确立的结论」显式留在模型眼前,于是每轮工具往返后又要从头推一遍。

社区插件 dsh-cot-anchor(维护者 JiewiW,分类:记忆)针对的就是这一痛点:在工具结果返回后,从上一段思考中摘出已成立结论并插回上下文;同时在生成过程中按本地规则识别打转、重复、伪工具调用等形态,必要时软切本次请求,让回合从断点续跑。它不替代跨步骤的步数治理——那属于姊妹插件 dsh-step-governor 的职责。

这是什么

dsh-cot-anchor 是 DeepSeek Harness(DSH)插件,一句话定位:思考锚点——从模型上一段思考中提取已确立结论,在工具结果后注入,减少重复推导;并可识别打转与伪工具调用。

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与许可证。

核心功能

结论回流(默认生效)

每次工具结果返回后,插件从最新思考中摘出已成立的结论(默认最多 3 条、每条 ≤ 220 字),以 user 角色追加在工具结果之后、下一次请求之前,并尾部写入会话日志,不改写已有内容,因此不会打穿前缀缓存。

工作流可以概括为:

模型思考 → 工具执行 → [插件] 摘出已成立的结论插回上下文 → 下一步思考
                                  ↑
                            只在工具边界注入

结论由规则从思考文本中摘句得到;入池前会剔除纯话语标记句与路线意图宣告句,但不会从模型输出里删除 Wait / Actually 等转折词,只避免它们被当成结论回灌。

生成中途打断(软切)

生成过程中每 32 个字符检查一次;发现打转、原地重复、伪工具调用、数字流等形态时,可立即切断本次请求,把已生成部分作为正常消息落盘、排好结论锚点,让回合从断点续跑。

软切依赖 DSH 内核的 agent/soft-cut 钩子:仅 0.1.5-rc.1 / rc.2 开箱可用;0.1.5-rc.3 起内核移除该钩子后能力会静默失效——以设置页显示为准,不要凭开关是开就认为在生效。新版内核可用随包工具移植软切机构(见下文「兼容性与软切内核」)。

两类机制都在单步边界内生效:软切只看当前一次生成流,进入下一步计数归零;治得了单流内冗余,治不了跨十几步的折返跑。

安装与启用

下面使用 README 中的官方安装命令(需替换 <你的profile>):

dsh plugin --profile <你的profile> add github:JiewiW/dsh-cot-anchor#v0.2.4

重启 DSH 实例后,设置页出现「COT 锚点」标签即表示插件已加载。结论注入无需任何配置;软切是否需要额外内核支持,以设置页提示为准。

peer 依赖(来自 package.json):@deepseek-ai/dsh 为 >=0.1.5-rc.1 <0.2.0 || >=0.2.0-rc.1 <0.3.0-0。

典型用法与设置要点

多数场景保持默认即可。设置页「COT 锚点」共 61 项、分组展示;下面只列常用项。

总开关

键 默认 说明
enableToolInject 开 工具结果后注入结论锚点,主要价值所在
enableSoftCut 开 允许生成中途打断;内核不支持时自动无效
enableExecDisciplineBlock 开 命令执行纪律提醒;自 v0.2.1 起走运行时上下文快照固定段(每轮一次),不再按工具条数线性堆叠

软切判定(可逐项关闭)

全部关闭时插件只做结论注入。五项对应:enablePseudoTool(伪工具调用文本)、enableRepeat(逐字节重复)、enableChurn(措辞不同的「重新分析」)、enableTransition(转折句,易误判)、enableNumberRunaway(长数字流)。

打断太频繁时:先关 enableTransition,或调高如 churnMinHits(默认 18)等阈值。自 v0.2.4 起,转折句判定带 softCutGapThreshold(默认 80),用于减少「小结论 + 后续分析 + 转折宣告」被拦腰切断。

锚点内容

键 默认 说明
minReasoningChars 250 思考短于此长度不提取
maxPoints 3 最多几条结论
maxPointChars 220 单条结论字数上限

可选 enableLlmRefine(默认关):每个助手回合多一次小模型调用提炼结论;provider/model 留空则跟随当前会话。CoT 采集相关项(enableHarvest 等)默认全关,开启会在本地留存思考文本,启用前请评估隐私。

成本与能力边界

默认仅结论注入时:每个工具结果后一条短消息,上界约 660 字符(3×220),无额外模型调用;注入块随上下文进入后续请求,在每一步都会占用少量窗口,但尾部追加不改写前缀,除首现一次外可参与缓存命中。README 在约 924 万 token 的长会话上给出注入占比约 0.23% 量级的实测口径说明,可在自有会话日志上按 source.summary 为 cot-anchor:* 的消息复算。

软切为纯本地字符串计算,零 token;可能增加少量回合数,且不减少回合步数。模型有时自知空转仍停不下来——注入前提是模型会读上下文并照做。

隐私方面:结论注入与软切判定均在本地完成;仅 LLM 提炼会把思考文本发往所配 provider(留空则跟随当前会话)。

兼容性与软切内核

能力 支持的 DSH 版本
结论注入、设置页 0.1.5 起
生成中途打断(软切) 仅 0.1.5-rc.1 / rc.2 开箱可用

若设置页显示「当前内核没有掐断能力」,结论注入不受影响。需要软切可停留在上述 rc 版本,或使用随包移植工具:

node node_modules/dsh-cot-anchor/tools/apply-softcut-port.mjs --check   # 查看状态
node node_modules/dsh-cot-anchor/tools/apply-softcut-port.mjs           # 应用

移植后重启实例;完整步骤与风险见仓库内 docs/softcut-kernel-port.md。

适用场景与注意

适合:多工具往返、单流思考链冗长、反复「重新发现」同一结论的 DSH 智能体任务;希望在不改模型的情况下用上下文工程减轻重复推导。

不适合或需配合其他手段:跨步骤折返跑、步数与上下文膨胀治理——请结合 step-governor 等插件或工作流设计。

常见问题:模型好像没收到提醒时,确认 enableToolInject 已开且思考长度超过 minReasoningChars。

结尾

dsh-cot-anchor 把「已确立结论」固定在工具边界,并可选地在生成流内软切明显退化,面向的是单流 CoT 冗余而非全能长任务优化。DeepSeek Harness 生态以「一切皆插件」为理念;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye