dsh-bakeoff
Đã xác minhdsh-bakeoff · v0.1.0 · MIT
DSH 插件:同一任务、同一代码基线,多 Variant(模型/Preset)并行对照实验、EvidenceReceipt 对比与胜出 Patch 导出
Cài đặt
dsh plugin add dsh-bakeoff Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.
Thẻ
Tác giả
Readme
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 装置说明