用LLM自动审PR:从差异提取到可落地告警的实战指南
为什么自动化PR审查值得做
把LLM接到Pull Request审查流程里,不是为了替代人工,而是先把“重复、机械、容易漏”的问题筛掉:命名不一致、明显的空指针风险、缺少测试、越权访问、异常处理不完整、日志泄露敏感信息等。真正有价值的做法,是让模型先做第一轮高覆盖率扫描,再把高风险项交给人类审核。这样既能缩短反馈时间,也能把资深工程师从低价值评论里解放出来。
要想做得稳,核心不是“把diff丢给模型”,而是把它设计成一个可控的审查流水线:先抓取变更,再补足上下文,再按规则生成结论,最后以结构化方式回写到PR里。
先做差异预处理,而不是直接喂整份代码
最常见的失败方式,是把整个仓库或者超长diff一次性输入,结果模型注意力被稀释,评论又泛又空。更好的做法是:
- 只取本次PR新增和修改的文件,排除锁文件、生成文件、依赖目录和纯格式化变更。
- 按文件和函数切块,保留行号、上下文行和变更类型。
- 对大文件使用分段审查:先审高风险片段,再汇总全局结论。
- 保留提交标题、PR描述、关联issue、测试结果和CI状态,帮助模型理解意图。
如果你的项目里有强约束,比如支付、鉴权、数据迁移、并发控制,建议额外喂入对应的架构说明或代码规范,否则模型容易只看见局部,不知道“这段改动为什么危险”。
提示词要像审查清单,而不是聊天问题
高质量的PR审查提示词,应该明确要求模型按固定维度输出。建议包含以下几个部分:
- 审查目标:找出会导致bug、可维护性下降、测试缺失或安全风险的问题。
- 约束条件:只基于给定diff和上下文判断,不要猜测不存在的代码。
- 输出格式:每条问题必须包含文件、行号、严重级别、原因、建议修复方式。
- 优先级规则:先报高严重度问题,再报中低严重度;没有问题也要说明为什么。
实战里我建议把模型输出限制成结构化JSON,再由你的服务转换成PR评论。这样更容易做去重、排序和告警。例如,你可以要求模型返回“severity、confidence、summary、evidence、suggestion”五个字段,并强制引用具体行号。没有行号的评论,往往不好落地。
用两阶段模型策略降低成本和误报
自动审PR最怕两件事:太贵和太吵。解决方法通常是两阶段:
- 第一阶段:用更便宜、更快的模型做初筛,找出疑似高风险文件和片段。
- 第二阶段:只把高价值片段交给更强的模型深度审查,输出最终评论。
这正是59API很适合的地方。它是一个AI API relay,支持Claude和GPT系列模型,按量付费,成本通常比直接接入更友好,而且是原生官方质量模型,没有降级。对于PR审查这种高频但单次token消耗可控的场景,低成本和稳定性都很重要。你可以直接把API base URL设成https://api.59api.com,继续用你现有的OpenAI SDK、Claude Code或Codex集成方式,不必重写整套调用逻辑。
把上下文检索做对,评论质量会明显提升
模型只看到diff,通常会漏掉“调用方约定”和“旧逻辑依赖”。一个实用技巧是:当diff里出现函数签名、类名或关键配置项时,自动从仓库里检索其定义、调用点和测试用例,再拼成上下文包。尤其要关注:
- 同名函数的历史实现,避免模型误判“改动是否破坏兼容性”。
- 单测、集成测试和快照测试,帮助模型判断是否补测。
- 权限校验、输入校验、事务边界、重试逻辑等高风险代码。
另外,建议把“项目级规范”单独维护成短文档,例如提交信息规范、错误处理规范、日志脱敏规范。每次审查都附上这些规则,模型就更容易给出一致的建议。
上线前一定要做三类护栏
第一,人类兜底。LLM的建议默认只是评论,不要自动合并或自动阻断,除非你已经有成熟的验证器。第二,误报过滤。对重复出现的低价值建议,比如风格问题、变量重命名,设置白名单或阈值。第三,安全边界。不要把密钥、私有配置、用户数据原文直接发给模型,必要时先做脱敏和摘要化。
最后要持续评估:统计模型评论的采纳率、误报率、平均节省的人工时间,以及哪些仓库、哪些语言、哪些类型的PR最适合自动审查。你会很快发现,LLM并不是“全能审查员”,但它非常适合做高频预筛和一致性检查。
如果你想低成本开始,先从API接入做起
如果团队已经在用OpenAI SDK、Claude Code或Codex,可以直接把请求切到59API,快速验证自动审PR流程:先在一个仓库做灰度,再逐步扩展到多个服务。59API提供按量计费和返利机制,对需要大量试验提示词、评估模型效果的团队尤其友好。想尽快跑通一个可用版本,可以先注册账号,拿一个小PR试试,再根据误报情况调整规则与模型组合。
¿Listo para empezar?
Conecta Claude y GPT en minutos a los precios más bajos, sin recortes. Regístrate para obtener tu clave API.
Registro gratis