
新工具用A/B测试验证预置上下文能否提升AI编程助手效率
来源标题:A/B test whether pre-gathered context helps coding agents complete tasks
一项模拟器通过A/B对照测试预置组织上下文是否能让AI编程助手更快、更省、更好地完成任务。它让同一任务在真实代码库上分别以仅凭任务描述的基线模式和先收集上下文的增强模式并行运行,再按验收标准对比质量、速度与成本。该工具支持Claude Code、OpenAI Codex、Cursor和Grok等编程助手CLI。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
A/B 测试预收集的组织上下文是否能帮助 AI 编码代理更快、更便宜、更好地完成任务。 模拟器针对真实仓库将同一任务运行两次——一次作为基线(代理仅根据任务描述工作),一次作为上下文增强版(代理先从代码库和关联来源中收集相关上下文,然后基于该简报进行规划和实现)。随后,它根据你的验收标准对两个结果进行评分,并报告质量、速度和成本差异。 它支持多种编码代理 CLI——Claude Code、OpenAI Codex、Cursor 和 Grok——因此你可以比较每种代理从上下文中获益的程度。 每次运行并行执行两个分支,每个分支都在自己独立的 git worktree 中,因此它们互不干扰: Plan ──▶ Review ──▶ Implement ──▶ Evaluate 代理进行规划、自我审查计划、实现计划,然后对结果进行评分。 Gather Context ──▶ Extract Patterns ──▶ Plan ──▶ Gather Plan Context ──▶ Review ──▶ Implement ──▶ Evaluate + Attribute Gather Context——一个只读的研究代理搜索代码库和任何关联的 MCP 来源(issue、PR、聊天、文档),以生成聚焦的上下文包。 Extract Patterns——将上下文包提炼为代码库的编码风格约定。 Plan——利用上下文包作为起点来规划任务。 Gather Plan Context——针对计划特定的风险和风格说明进行有针对性的第二轮收集。 Review——将计划与收集的上下文进行交叉检查。 Implement——编写代码。 两个分支均由独立的评估代理根据你的验收标准进行 0–100 评分,主要根据实际代码差异进行评判。上下文分支还会生成归因分析,显示哪些收集的上下文实际影响了实现。 结果以终端表格、JSON 文件和独立的 HTML 报告形式写入。 git(目标必须是 git 仓库) 至少安装一个受支持的代理 CLI 并在你的 PATH 中: 每个代理必须根据其自己的 CLI 进行身份验证。模拟器会调用你选择的那个。 实验的重点在于代理能够触及的上下文,因此被测代理必须在运行任何内容之前为目标仓库配置好其 MCP 服务器。Worktree 会继承该配置。 通过在目标仓库内以交互方式启动代理并确认其 MCP 服务器连接,进行一次设置: cd /path/to/target-repo claude # or: codex, cursor, grok — whichever agent you'll test 验证每个预期的 MCP 服务器显示为已连接(例如 Claude Code 中的 /mcp,其他中的启动 MCP 状态)。对任何提示进行身份验证。一旦它们在这里全部干净连接,模拟器的运行将具有相同的访问权限。跳过此步骤意味着上下文分支会静默地收集比应有的更少的内容。 git clone https://github.com/unblocked/context-engine-simulator.git cd context-engine-simulator npm install 无需构建步骤——它直接通过 tsx 运行。 使用 fixture(推荐) 创建一个 YAML fixture(参见 fixture.sample.yaml): repo: /path/to/target-repo branch: main task: | Add a /health endpoint to the API server that returns the service name and current timestamp as JSON. criteria: |
- GET /health returns 200 with a JSON body
- Response includes "service" and "timestamp" fields
- Endpoint is registered following existing router patterns
agent: claude # claude | codex | cursor | grok
model: sonnet
运行它:
npm start -- --fixture my-experiment.yaml --verbose
使用 CLI 标志
fixture 中的所有内容都可以作为标志传递(标志覆盖 fixture 值):
npm start --
--repo /path/to/repo
--task "Add a /health endpoint returning service name and timestamp"
--criteria "GET /health returns 200 JSON with service and timestamp fields"
--agent claude
--model opus
--verbose 关键选项 标志 描述 默认值 --fixture <path> YAML fixture 文件 — --repo <path> 目标 git 仓库 (必填) --task <string> / --task-file <path> 任务描述 (必填) --criteria <string> / --criteria-file <path> 用于评分的验收标准 — --agent <name> claude | codex | cursor | grok claude --model <model> 任务运行使用的模型 sonnet --context-model <model> 上下文收集使用的模型 与 --model 相同 --eval-model <model> 评估使用的模型 与 --model 相同 --timeout <seconds> 每个任务步骤的最大秒数 3600 --context-timeout <seconds> 每个上下文步骤的最大秒数 600 --branch <name> worktree 基于的分支 当前 HEAD --disable-mcp <servers...> 在两个分支中阻止的 MCP 服务器 — --keep-worktrees 运行后保留 worktree 以供检查 false --verbose 实时流式显示代理活动 false 如果省略 --criteria,则跳过评估和归因步骤。 results/ 下带时间戳的目录,包含: 此外,还会向终端打印比较表:每个分支和每个阶段的质量评分、挂钟时间、成本和 token 计数。 为了测量上下文收集的孤立效果,基线分支不得有对相同上下文来源的后门访问。使用 --disable-mcp(或 fixture 中的 disableMcp:)在两个分支的 worktree 中阻止特定 MCP 服务器;如果调用了被阻止的服务器,模拟器还会检测并中止运行,因此污染不会静默地扭曲比较。 npm start -- --fixture my-experiment.yaml --disable-mcp some-context-server 注意 每个分支都在一个一次性 git worktree 中运行(位于系统临时目录下,或由 Claude/Cursor 代理管理)。除非设置了 --keep-worktrees,否则它们会自动清理。 成本根据每个代理报告的 token 使用量计算(在可用的情况下)。订阅计费的代理(例如 Grok)报告 token 计数但没有每 token 价格,因此其成本显示为 $0。 该工具从不提交或推送;它只读取目标仓库并在隔离的 worktree 中工作。 许可证 MIT © Unblocked
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。