AprilWizard/dsh-multi-cot ↗★ 1
@aprilwizard/dsh-multi-cot
Multi-sampled test-time compute plugin for DeepSeek Harness: parallel planning, internal voting, and a plan/execute/review workflow
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗@aprilwizard/dsh-multi-cot
English | 中文
Multi-CoT 通过重复生成并采样思维链,为 dsh 提供近似“并行测试时计算”的能力:同一输入
并行跑 samples 条推理链,由内部投票选出最佳结果,再用它驱动“先计划后执行”或完整的
“计划 → 执行 → 复检”三阶段工作流。插件只包含纯函数选择核心和稳定的协议提示词,接在
agent/pre-step、llm/stream、agent/turn-stopping 三个扩展点上,不需要修改 dsh
源码。
近期通过修改 codex 源码,用 deepseek-v4-flash 在隔离环境下用 Terminal-Bench 2.1
做了开/关对比(baseline = 普通模式,workflow = 多采样三阶段):
| 题目 | baseline | workflow |
|---|---|---|
| write-compressor (hard) | ✅ 685.6s / 2475B / 1.83M in | ✅ 643.5s / 2231B / 1.17M in |
| cancel-async-tasks (hard) | ❌ 219.8s(5/6 测试过) | ✅ 647.3s |
| polyglot-rust-c (hard) | ✅ 522.0s | ✅ 1,097.9s |
| regex-chess (hard) | ✅ 1,075.0s / 6.93M in | ✅ 产物合格,进程 1800s 超时被杀 |
| sqlite-db-truncate (medium) | ✅ 129.2s | ✅ 598.5s |
单题 GSM8K 对比:正确率不变(26/26),耗时约 29×(4.4s → 126.8s),输入 token 11.1k → ~219k——多采样主要用成本换稳定性。
注:以上为近期 codex 实验的参考数据;本 dsh 插件尚未在同条件下跑过这套对比。
设计思路
采样与投票
普通回合只问模型一次,返回什么就是什么。这个插件用相同输入问 samples 次,再让
samples 个内部投票者给候选打分。输入相同让成本可控:provider 会缓存共享前缀,并行
采样不会真的付出 samples 倍的输入成本。结果全部相同就跳过投票。
三阶段工作流
workflow 模式把任务分成三个阶段:信息收集、具体实现、编写报告。每阶段三步:计划
(离线采样 + 投票)、执行(普通工具循环)、复检(再一轮离线采样 + 投票)。复检失败就
重新计划,最多 reviewMaxRetries 次,再失败则强制推进并标记“存疑”。阶段状态由插件
管理,不靠模型打印标记。
离线工作放在哪里
计划必须在模型请求构建前选好。llm/stream 要求同步返回流,计划步也不能声明空批
(空批会让 loop 关回合)。所以:
- 首个计划在
agent/pre-step选择; - 后续计划在
agent/turn-stopping选择; - 选中的计划存进进程内表,
llm/stream只做同步短接,返回存好的计划流。
因此后续阶段的计划之前会多一行 user 角色“为阶段 N 制定计划”。
缓存
协议文本是系统提示词里稳定的 section(order 50)。采样请求字节完全相同;投票共享 一个前缀(所有候选的压缩链),只追加自己的完整链和打分指令。opencode-go 与官方 DeepSeek 都实测过:
| 实验 | opencode-go | 官方 DeepSeek |
|---|---|---|
| 相同请求重复 | 0 命中 | 0 命中 |
| 共享前缀 voter 1+ |