dsh-bakeoff
已验证dsh-bakeoff · v0.1.0 · MIT
DSH 插件:同一任务、同一代码基线,多 Variant(模型/Preset)并行对照实验、EvidenceReceipt 对比与胜出 Patch 导出
安装
dsh plugin add dsh-bakeoff 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
发布到 npm 但没有公开仓库。安装前请检查包内容。
标签
作者
说明文档
dsh-bakeoff
同一任务、同一代码基线,不同模型 / Preset 并行对照,用确定性验收回执而不是感觉来选方案。
| 优先级 | 状态 | 名称核查 | 形态 |
|---|---|---|---|
| S(排队第二) | MVP 已发布(2026-08-16) | 原名 dsh-arena 已被占用,改用 dsh-bakeoff(未占用,2026-08-15) |
插件套件 |
命名说明
原方案名 dsh-arena 与 Apageoflove/DSH-arena("Local-first experiment and evaluation workbench",1★)同名且同方向,必须改名。bakeoff 是业界对"同题多方案对比评测"的惯用称呼,语义自解释;备选名 dsh-crucible、dsh-gauntlet 亦经核查可用(记录见 docs/research.md)。
解决什么问题
模型、Preset、插件组合、Agent Loop 策略越来越多,用户面临"到底哪个组合适合当前任务"的选型问题,而目前只能凭感觉。dsh-bakeoff 让同一任务在完全相同的代码环境中以多个 Variant 运行,比较:
- 是否真正完成(Evidence Gate 回执判定,非模型自述);
- 测试/构建/Lint 是否通过;
- Diff 规模与修改范围合规性;
- 工具失败次数、运行时间、Token 与费用。
使用方式(MVP)
在仓库中编写 Experiment Spec(YAML),然后运行 slash 命令:
# bakeoff.yaml
task: 修复登录接口偶发 500 错误
baseline: { repo: ., commit: HEAD }
variants:
- { name: minimal, model: deepseek-chat, preset: minimal }
- { name: standard, model: deepseek-chat, preset: standard }
verification: # 直接透传给 evidence-gate(写入每个 Variant worktree)
maxRetries: 3
gates:
- command: npm test
- diff: { allowedPaths: ["src/**", "tests/**"] }
limits: { timeoutSeconds: 900, maxSteps: 30, maxCostUsd: 2 }
options: { parallelism: 2, linkNodeModules: true, cleanup: keep }
/bakeoff bakeoff.yaml
产出(.bakeoff/runs/<runId>/):
report.html— 单文件离线报告:对比表、并排 Diff、回执明细;report.json— 机器可读结果(RunManifest + 全部回执);variants/<name>/— 各 Variant 的独立 Git Worktree(含门禁回执文件);winner/<name>.patch— 胜出 Variant 的补丁包(含未跟踪文件);- 编排会话追加
bakeoff/run持久事件。
核心能力
- Experiment Spec(YAML):任务、Variants(模型/Preset)、验收规则、资源上限;
- 隔离执行:Git Worktree(同一 Commit 多副本)+ 供给 commit(门禁配置入基线,防未检测篡改且不污染补丁);
- 并行调度:进程内
ctx.agents.create独立会话,各自 model/preset,并发上限可配; - 证据采集:
session/event轨迹 +tools/*成功率 +assistant/message.usageToken + Evidence Gate 回执; - 结果呈现:并排 Diff、对比表、成本估算、HTML 报告;
- 胜出提升:只导出 verified Variant 的 Patch;判定链确定性可解释。
差异化定位
| 现有项目 | 已覆盖 | 本插件的增量 |
|---|---|---|
| dsh-lab(1★) | 同 Git 世界、Baseline/Candidate、隐藏验证、可复现报告 | 原生 DSH 实验编排、N-Variant 并行、可视化对比 |
| dsh-eval-harness(5★) | YAML 回归评测、PASS/WARN/FAIL 门禁 | 面向"任务选型"而非"插件回归";胜出 Patch 提升 |
| forkprobe(66★) | 同任务多 Skill 对比选胜者 | 对比维度扩展到模型/Preset/插件全组合;证据用回执不用主观评分 |
定位一句话:站在评测底层之上的实验编排、可视化比较与胜出方案提升层。三个现有项目均为潜在合作对象而非重写对象。
技术要点
- 确定性回放不自建:复用官方
llm-replay思路(test-support 包,挂llm/streamwaterfall;e2e 装置按其逐会话分桶语义实现); - Variant 组合复用官方
agent-presets(meta.agentPreset);模型经agentOptions.model/provider(provider 缺省取agentDefaultModel当前选择); - 完成判定统一消费
EvidenceReceipt(evidence/receipt持久事件),不重复实现验收;回执缺失 =no-receipt,不降级为模型自述; - Variant 完成判定 = 终局回合 +
agent.status === 'idle'+inbox无待处理消息(门禁 steer 已在回合关闭前入 inbox,无竞态窗口); - MVP 进程内执行:插件集差异(
plugins: [...])需多进程 Profile 隔离,Spec 校验大声拒绝(见 design.md 关键决策 2)。
MVP 范围
两个 Variant、本地 Git 仓库、同一初始 Commit、独立 Worktree、执行测试、比较 Diff/时间/Token、输出 HTML 报告、导出胜出 Patch。不做:公共排行榜、云端执行、两个以上并发度调优、多进程插件集差异、客户端 Web 面板。
验证
- 51 个单元测试 + typecheck + 自包含构建全绿;
- 隔离环境端到端:确定性回放双 Variant(含门禁失败→steer→修复重试路径),32 项断言全绿(回执 verified、胜出 Patch、报告、会话事件);
- 平台挂载点与差异记录见 docs/verification-report.md。
文档导航
- docs/design.md — 实验模型、隔离方案、调度与报告设计(含 MVP 实现决策)
- docs/research.md — 竞品档案与命名核查
- docs/verification-report.md — MVP 验证报告(挂载点证据、构建、隔离安装、e2e 场景、平台差异)
- e2e/README.md — e2e 装置说明