产品精选

OpenRouter 发布 233 行可验证 AI 代码审查脚本 review.py

精选理由

OpenRouter 开源了个 233 行的小脚本,能让 Claude Haiku 或 Sonnet 在沙箱里实际跑代码验证 bug,比纯看 diff 的审查靠谱多了,单次才几分钱。

OpenRouter 发布了一个 233 行、仅用标准库的 Python 脚本 review.py,可将变更文件、测试和 diff 上传到托管 Linux 沙箱中复现问题并提交修复补丁。每条发现标记为 confirmed(附命令与输出)或 unconfirmed。在五个 bug 的样例中,审查耗时约 1–4 分钟、成本约 $0.015–$0.045。脚本可挂载到 pre-push 或 GitHub Actions,通过 --block-at 参数在发现高严重度问题时以 exit 1 拦截推送。

原文 · shao__meng

跟着 OpenRouter 手把手搭可验证的 AI 代码审查 @OpenRouter 给出一份 233 行、仅标准库 的 Python 脚本 review. py:把变更文件、测试与 diff 上传到 OpenRouter,在托管 Linux 沙箱里用短脚本复现问题,再以 V4A patch 提修复;每条 finding 标成 confirmed(附命令与输出)或 unconfirmed。五 bug 样例上,审查约 1–4 分钟、约 $0.015–$0.045;可挂 pre-push 或 GitHub Actions,--block-at(默认 high)不达标就 exit 1 拦推送。 openrouter.ai/blog/tutorials… 四个部分怎么拼起来的(Responses API) · Files API 上传变更后全文与上下文(避免只看 hunk 瞎猜 import/类型); · openrouter:shell 把文件拷进容器家目录,可跑 Python/SQLite; · openrouter:apply_patch 提 create/update/delete,平台先校验 diff 语法; · submit_review 函数工具用严格 JSON 收尾(他们发现有工具时 json_schema 文本格式在 Haiku 上不被强制,答案会飘成散文)。 流程上模型在沙箱对原代码做检查;补丁先打在本机临时副本,告诉模型成不成;--apply 才写回工作树,之后仍要自己跑测试。 样例与门槛 demo 里故意埋 SQL 注入、分页 off-by-one、is not 比字符串、retry 吞异常、去掉 conn.close() 等;原有 unittest 仍绿。Haiku 跑例:四条 confirmed、连接未关标 unconfirmed(CPython 出作用域会关,难稳定复现)。报告默认进 .git/ai-review.json,避免误提交。退出码:0 通过,1 有达严重度门槛的 finding,2 未完成(超 8 轮或文件过多等)。 模型怎么选(他们三次复跑) Haiku 5.5:均约 $0.0153 / 125s,召回高但补丁三跑里只一跑修全五 bug; Sonnet 5.5:约 $0.0447 / 60s,五 bug 全中且三跑补丁都过他们自测; DeepSeek V4.1 Flash、GPT-6 Luna 介于中间,DeepSeek 有一轮卡在反复打补丁未 submit_review。 建议:省钱用 Haiku,要稳补丁用 Sonnet;--apply 前务必人工看补丁(Haiku 曾把 dict 访问改成 tuple 下标)。 成本、接入与边界 账单 = 模型 token + 沙箱 $0.0001/秒(从首条 shell 到响应结束;想得慢也会多付沙箱费)。相对「只塞 diff 的 Chat Completions」大约贵 10–40 倍,换来可复现证据。可接 pre-push;CI 应用 base 分支的 review.py (防 PR 改审查器)、fork PR 跳过、密钥用 secrets。 限制:代码会上传并给模型提供商;单次最多约 20 个文件 ID;沙箱默认无外网(pip install 需显式放开);工具仍是 beta、仅全球端点;confirmed 当强信号,unconfirmed 给人看。 💬 26 🔄 2 ❤️ 13 👀 1630 📊 30 ⚡