跳到主要内容

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-arenaApageoflove/DSH-arena("Local-first experiment and evaluation workbench",1★)同名且同方向,必须改名。bakeoff 是业界对"同题多方案对比评测"的惯用称呼,语义自解释;备选名 dsh-crucibledsh-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 持久事件。

核心能力

  1. Experiment Spec(YAML):任务、Variants(模型/Preset)、验收规则、资源上限;
  2. 隔离执行:Git Worktree(同一 Commit 多副本)+ 供给 commit(门禁配置入基线,防未检测篡改且不污染补丁);
  3. 并行调度:进程内 ctx.agents.create 独立会话,各自 model/preset,并发上限可配;
  4. 证据采集:session/event 轨迹 + tools/* 成功率 + assistant/message.usage Token + Evidence Gate 回执;
  5. 结果呈现:并排 Diff、对比表、成本估算、HTML 报告;
  6. 胜出提升:只导出 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/stream waterfall;e2e 装置按其逐会话分桶语义实现);
  • Variant 组合复用官方 agent-presetsmeta.agentPreset);模型经 agentOptions.model/provider(provider 缺省取 agentDefaultModel 当前选择);
  • 完成判定统一消费 EvidenceReceiptevidence/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

文档导航