代码审查用 ai 怎么配

接入与开发

把 AI 接进代码审查流程:从触发时机、仓库规则文件到提示词模板与分级放行,给一套能落地的配置思路。

很多团队把 AI 接进代码审查,结果无非两种:要么它只在旁边刷一堆没用的风格建议,要么它每次都换个说法、说不到点上。问题一般不出在模型,出在没配:什么时候触发、让它看哪些文件、按什么仓库规范审、哪些结论必须人工复核。这篇给一套配置顺序,照着填参数、写规则文件,就能把 AI 变成稳定的第一道审查。

把 AI 接进代码审查,翻车的方式基本就那几种:要么它只在旁边刷一堆没用的风格建议,要么它每次换个说法、说不到点上。问题一般不在模型,在没配。什么时候触发、让它看哪些文件、按哪份仓库规范审、哪些结论必须人工复核——这几件事不定清楚,它就只是个会打字的评论机器人。

下面给一套配置顺序,从触发时机到规则文件、提示词模板、降噪与放行,照着填参数、写规则,就能把 AI 变成稳定的第一道审查。每一步都写了「怎么验证配对了」和「什么情况下这套不成立」,别跳着做。

先定触发时机:AI 审查到底插在哪一步

触发时机决定了后面的成本结构和体验。插得太早,依赖每个人的本地环境,配不起来的人就绕过去了;插得太晚,人已经审完一轮,AI 的意见反而变成额外负担。先想清楚它在流程里的位置,再谈规则。

插法覆盖情况主要代价适合谁
提交前本地跑看个人习惯,容易漏快、省额度想先试水的个人
PR 打开时自动跑覆盖面广,不靠自觉会拖慢流水线多数团队起步选它
合并前人工点一次最可控容易忘、依赖人
多环境并行最完整配置成本高流程已经稳定的团队

五人以内的团队,建议先做「PR 打开时跑 + 只输出评论不阻断合并」。等评论质量稳定了,再把其中一部分升级成放行门禁,顺序别反。

  • 审查范围写清楚:只看本次 diff,还是允许拉被改文件的上下文;只给 diff 会漏跨文件影响,给全文又吃额度,通常做法是 diff 加被改文件所在模块的少量上下文
  • 明确 AI 结论的性质:是普通评论、是必过门禁,还是只给建议由人点采纳;这一条不定,后面所有人都会为「它说的算不算数」争一遍
  • 不适用情况:团队还没有一份统一的代码规范文档,先补规范再接 AI,否则它只会按通用习惯给建议,跟你们实际要求对不上

把规范写进仓库:规则文件与项目上下文

审查规则应该放在仓库里,而不是塞进提示词。一份人和 AI 共用的规范文件,改规则走一次代码评审,谁改的、为什么改,都能追溯。提示词里只放模板和输出格式,规则内容引仓库文件。

不同编辑器或客户端的规则文件名和加载方式不一样。先到站内客户端配置相关页面确认你的工具读哪个文件、放哪个目录,配错位置会静默不生效,你还会以为 AI 不给力。具体哪个文件对应哪个工具,到 /tools 里的工具目录逐个核对。

可判定规则
「禁止在循环里做数据库查询」能判,「代码要优雅」判不了,写成「看到 X 就报 Y」
项目上下文
技术栈、目录职责、允许用的内部库,给最小必要的一份就够
规范文件位置
放仓库根目录或约定目录,跟代码一起版本管理
  1. 抽一版规范出来把现有口头约定和文档里的规则合并成一份,删掉没法判定的条目
  2. 按工具约定落位确认工具读哪个文件名和目录,放进去后故意写一段违规代码验证它是否被触发
  3. 标注优先级给每条规则标级别(阻断 / 建议),方便后面按级别分流评论
  4. 补充最小上下文写清楚技术栈版本和目录职责,内部库只列常用的一两个,别把整个架构文档塞进去

审查提示词模板:让它稳定输出你要的格式

提示词的价值在于让输出稳定,而不是让它更聪明。一个固定四段的模板就够用:角色与范围、判定依据、输出格式、边界。边界那段最容易被省掉,但它恰恰是控制胡说八道的关键。

  • 角色与范围:说明只看本次改动,不做重构建议,不给与改动无关的优化意见
  • 判定依据:要求引用仓库规范里的具体条目,引不出来就不要提
  • 输出格式:统一成问题、位置、严重级别、建议改法四个字段,方便后按级别分流
  • 边界:明确写「不确定就标注为待确认,不要编造调用关系和业务含义」

输出格式怎么写、字段怎么约定,参考站内结构化输出相关页面,别自己发明一套字段名,否则下游处理和别人的工具接不上。格式定了一版之后就别频繁改,改一次所有历史评论的对比就断了。

提示词改完别凭感觉判断好坏。留一小批历史 PR 做固定用例,改一次跑一次做对比,具体做法在站内提示词版本与评测相关页面。没有固定用例,你只是在拿真实项目做实验,出问题也说不清是哪次改动引起的。

降噪与放行:怎么让它别变成刷屏机器

AI 审查最常见的死法是被忽视。原因通常不是它说错了,是它说得太多、太碎、重复。降噪要在配置阶段解决,不能指望大家自己过滤。下面三件事不做,一周之内就没人看它的评论了。

  • 限制每个 PR 的评论条数上限,超出的合并而不是逐条发
  • 低于某个级别的建议合并成一条摘要,人想看再展开
  • 同一个问题在同一个 PR 里只说一次,不要每推一次提交就重报一遍
路径类型处理方式原因
锁文件、依赖清单直接跳过改动是机器生成的,没有审查价值
自动生成的代码直接跳过按模板产出,报的问题改不了
纯文案与配置改动跳过或只给建议通常不涉及逻辑,误报率高
鉴权、支付链路AI 只做参考必须指定的人复核
数据库迁移脚本AI 只做参考出错代价高,不能让模型拍板

分级放行是控制信心的手段:先只让 AI 对少数几个目录生效,跑顺了再扩范围。一上来全仓库开启,前几周的误报会把人的耐心一次性消耗掉,之后再想推广就难了。

人工兜底要写进流程文件里,不是口头约定:安全相关改动、鉴权与支付链路、数据库迁移,AI 结论只作为参考,必须由指定的人复核签字。这条不写下来,出了事没人知道该谁看。

什么情况下这套不适用:仓库历史混乱、没有统一构建和测试的团队。先把 CI 跑通,再谈 AI 审查,否则你只是在本就嘈杂的流程上再加一层噪音。工具本身稳不稳定,可以到 /tools/speed-test 做一次探测再决定接不接。

下一步先把触发时机和规则文件两件事定下来,再动提示词。具体工具的配置入口和当前可选的审查类工具,到工具目录里按你的技术栈筛一遍;各家方案的现状可以到 /rankings 看当时的排序,别照搬别人的组合。

常见问题

AI 审查和现有的 lint、静态检查是不是重复了?

不重复,但边界要划清。格式、明显的空指针、未使用变量这类交给 lint 和静态检查,它们更快也更确定;AI 更适合看逻辑分支、边界条件、错误处理是否一致、命名与分层是否符合仓库规范。把 lint 已覆盖的东西也丢给 AI,只会让它看起来全在说废话。

提示词写得越长,审查效果会越好吗?

不会。长提示词的收益很快到顶,真正决定效果的是仓库里的规则文件是否可判定、上下文是否给对。常见做法是提示词保持短而固定,把项目特有的判断依据放进仓库规则文件里按需加载;规则更新走代码评审,比每次改提示词更容易被团队接受和追溯。

误报太多,团队快不用了,先改哪一处?

先砍范围,再调提示词。第一步把触发目录缩到最核心的几个模块,锁文件、生成代码、纯文案直接跳过;第二步给输出加条数上限和严重级别,只把阻断级问题单独拎出来。两步做完通常能明显降噪。提示词本身放最后改,并且每次改都要用固定用例对比,别直接上生产。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。