跳到正文
meng shao· @shao__meng · X·· 3 小时前AI 评分62
AI 导读

OpenRouter 发布教程,用一份 233 行、仅依赖标准库的 Python 脚本 review.py 搭建可验证的 AI 代码审查:上传变更文件与 diff,在托管 Linux 沙箱里复现问题,再以 V4A patch 提修复,每条 finding 标注 confirmed(附命令与输出)或 unconfirmed。

正文 · 原文

跟着 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 拦推送。
https://openrouter.ai/blog/tutorials/ai-code-review/

四个部分怎么拼起来的(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 分支的 http://review.py(防 PR 改审查器)、fork PR 跳过、密钥用 secrets。

限制:代码会上传并给模型提供商;单次最多约 20 个文件 ID;沙箱默认无外网(pip install 需显式放开);工具仍是 beta、仅全球端点;confirmed 当强信号,unconfirmed 给人看。

来源:meng shao · x.com