feat(axbuild): add offline agent review benchmark#1615
Merged
Conversation
ZR233
marked this pull request as ready for review
July 15, 2026 05:47
Contributor
There was a problem hiding this comment.
评审总结
本 PR 在 cargo xtask 中新增 agent-review-bench 子命令,用于离线评审基准测试。主要改动包括:
- CLI 注册:在
scripts/axbuild/src/lib.rs中注册agent-review-bench list/check/run子命令。 - 样例管理(
cases.rs):TOML 格式样例定义、SHA 校验、base/head 祖先关系检查、HEAD 侧新增行验证。 - synthetic 仓库构建(
sandbox.rs):通过git archive构造独立的双提交仓库,注入当前 review-single-pr skill、AGENTS.md、CLAUDE.md、book/guideline/ 和离线 contract,确保评审上下文一致且不污染目标 diff。 - Agent 运行器(
runner.rs):支持 Codex 和 Claude Code 两种后端,独立 reviewer/grader 配置,安全透传 model/effort 参数(Codex 用 TOML 字符串编码,Claude 用独立 argv),统一超时/非零退出/空输出处理。 - 评分模块(
scoring.rs):依据 grader JSON 与预期 finding 进行语义匹配,计算 caught/missed/extra 统计。 - 离线模式:在
.claude/skills/review-single-pr/SKILL.md中增加offline-benchmark模式,明确不适用在线 GitHub 流程,仅输出 JSON schema。
实现逻辑
- reviewer 只接触从 base/head 快照重建的独立仓库,当前规则和 skill 同时注入两侧但不进入 diff。
- grader 在仅含 review.json 和 expected.json 的独立临时目录中评分,与代码仓库完全分离,避免答案泄漏。
- 参数透传保持字符串边界,不做别名解析或跨后端映射;不支持的值由目标 CLI 原样报错。
验证结果
cargo fmt --check:通过cargo clippy --manifest-path scripts/axbuild/Cargo.toml --all-features -- -D warnings:通过cargo test --manifest-path scripts/axbuild/Cargo.toml --all-features:744 passed, 0 failedcargo xtask agent-review-bench check:3 个样例全部通过- 无
[patch.crates-io]使用
CI 状态
所有 CI check run 均标记为 skipped,符合预期——本 PR 仅修改 scripts/axbuild/ 和 skill 文件,不涉及 kernel、driver、test-suit 等需要 QEMU/板卡的路径,路径过滤正确跳过了不相关的 job。没有 PR 导致的 CI 失败。
重复/重叠分析
- 在 dev 分支中不存在等效功能或已有实现。
- 当前 open PR 中无与
agent-review-bench功能重叠或冲突的 PR(#1616 是 axvisor shell 修复,完全不相关)。 - 本 PR 是全新工具引入,不与任何现有功能重复。
审查意见
无阻塞性问题。代码设计清晰,模块边界合理,参数安全透传(Codex effort 使用 TOML 编码、Claude 使用独立 argv,均不经过 shell),测试覆盖全面(包括 mock agent 端到端测试、schema 校验、边界情况等),离线模式对 review-single-pr skill 的修改严格受 guard 条件限制不会影响在线评审流程。
残留风险
- benchmark 本身不接入 CI(符合 PR 声明的 v1 范围),后续可考虑增加定期 CI 基线收集。
- 样例的
remote指向https://github.com/rcore-os/tgoskits.git,当仓库迁移或重命名时需同步更新。
Powered by deepseek-v4-pro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题
项目此前缺少一个可复现、不会向 GitHub 写入评审状态的代码评审基准,无法用真实历史缺陷衡量离线评审的预期问题召回率。评审与评分也需要同时支持 Codex 和 Claude Code,并允许 reviewer 与 grader 独立选择后端及模型配置。
此外,benchmark 不应在 reviewer prompt 中重新维护一份评审规则;否则它会逐渐偏离项目实际使用的
review-single-pr规范。原有 case 校验还只允许锚定新增行,无法表达 PR #1611 这类仅删除配置、问题需要锚定到相邻 HEAD-side 上下文行的历史缺陷。改动
cargo xtask注册agent-review-bench list/check/run:run支持重复的--case、--pr选择,以及--timeout-secs、--output和可选--min-recall。--min-recall时才启用门禁。--agent codex|claude默认使用 Codex。--grader-agent可独立选择评分后端;未指定时继承 reviewer。--model、--reasoning-effort配置 reviewer,grader 可通过对应的--grader-*参数独立覆盖。model_reasoning_effort,Claude model/effort 使用独立 argv 参数,均不经过 shell。review-single-prskill:$review-single-pr offline-benchmark。/review-single-pr offline-benchmark。ultrareview,prompt 中不再重复评审 checklist。review-single-pr增加严格的offline-benchmark模式:bench-base..HEAD,复用现有正确性、安全、硬件/ABI、测试接线和文档等评审要求。git archive构造独立的 synthetic 两提交仓库:AGENTS.md、CLAUDE.md、book/guideline/、离线 contract,以及当前review-single-prskill。.agents/skills/review-single-pr/SKILL.md和.claude/skills/review-single-pr/SKILL.md,确保两个 CLI 都使用当前规范。.git,reviewer 看不到 case 真值、来源评论和修复提交。user,projectsetting sources,以保留已登录凭据、默认 model 和项目 skill;同时使用命令行高优先级设置禁用 hooks、skill shell、后台任务、自动记忆和非必要流量,并启用严格空 MCP、禁用 Chrome、dontAsk和只读工具白名单。summary.json分别记录 reviewer 和 grader 的 agent、CLI 版本以及实际透传的 model/effort 原始值。title、description、match_if已统一为中文;机器 ID、路径、SHA 与 URL 保持不变。summary.json。实现逻辑
reviewer 只接触从指定 base/head 快照重建的独立仓库。当前项目规则和 skill 同时提交到 synthetic base/head,因此模型能按当前规范评审历史变更,但这些规则不会污染目标 diff。
offline-benchmark参数与环境 marker 共同启用只读分支,避免review-single-pr的在线 GitHub 流程产生副作用。grader 与代码仓库完全分离,只根据 reviewer JSON 和预期 finding 的语义标准判断是否命中。这样既避免答案泄漏,也避免评分模型从代码或修复提交反推答案。
纯删除 diff 没有可用于评论的删除后行。case 校验因此使用一行 diff 上下文,将紧邻删除点且仍存在于 HEAD 的行作为锚点;校验范围不会扩大到 hunk 外的任意未修改行,review JSON/TOML schema 也无需增加 diff side 字段。
统一 runner 根据 reviewer/grader 的实际选择分别检查 CLI、构造命令和记录版本。模型及 effort 保持调用方提供的字符串边界;目标 CLI 不支持的值会原样报错并作为 harness failure。
验证
cargo fmt --all --checkcargo test -p axbuild --lib:747 passedcargo xtask clippy --package axbuildcargo xtask agent-review-bench check:4 个样例全部通过cargo xtask agent-review-bench list:列出 4 个中文标题cargo xtask agent-review-bench run --case 1611-axvisor-qemu-timeout-watchdog --min-recall 100target/agent-review-bench/20260715-072953-580Z范围
v1 支持 PATH 中已安装并登录的 Codex 或 Claude Code CLI;不管理 API key/profile,不增加预算参数或自动 CLI 探测,不接入 CI,也不提交 GitHub review 或创建、修改 issue、评论和 reviewer 状态。