# 合并前先让 AI 挡一刀:一次审查 0.08 美元,假金钥加命令注入全被拦下
先说结论:让人工智慧审查程式码,贵的不是模型,是你以为要搭一整套系统才做得到。作者在 2026 年 11 月 13 日当天、在苹果电脑上、用 2.1.322 版实测,整个审查闸门的核心只有两样东西:一次非互动模式的呼叫,和一个退出码。审查结果是通过还是挡下,最后变成一个数字,零代表通过、一代表挡下,持续整合系统只认这个数字。
底线先说清楚:第一轮实测,作者故意埋了四个问题的分支被挡下,两高危加两中危,退出码一,约十秒、约 0.18 美元;修掉问题重跑,只剩两条低度备注,判定通过、退出码零,约 0.08 美元,一次审查只花一毛钱不到。两轮的差异只有二十五行,都跑了三轮对话。还要诚实说一句,搬上持续整合的那一段,作者没有真的在云端上跑过,因为那需要一个正式储存库和一把金钥,那一段是照官方文件写的,档案格式检查通过、没有实跑。
怎么做?先备一个很小的演示仓库,主分支放一支正常的计价函式和一支测试,功能分支加折扣、平均价和报表三个功能,同时故意埋四个问题:写死的假金钥、命令注入、折扣可以把总价算成负数、空清单求平均会崩溃。再写审查脚本,先把分支差异存成差异档案,再以非互动模式加结构化输出跑审查,审查者只有唯读权限,最多六轮、预算上限 0.5 美元,最后把判定结果转成退出码,通过是零、挡下是一。先在本机跑通挡下和通过两轮,两个退出码都亲眼看过,再搬上持续整合。
小心三件事。第一,审查只需要读档案,给它执行命令的权限,等于请一个没人看着的助手在你的机器上跑任意命令,只准读取,其他一律不给。第二,轮数、预算、逾时三个上限都要设好,轮数上限六轮、预算上限 0.5 美元、流程逾时十分钟,没设上限的任务卡住了会一直跑,烧掉的是持续整合的分钟数和模型的费用。第三,金钥要放进储存库的机密设定里,写进流程档案等于公开;分叉合并请求拿不到金钥,审查只对同一个储存库里的分支生效,外部来的合并请求这道闸门跑不起来。
顺序只有一个:本机脚本先通,再上持续整合,先挡下、再通过,两个退出码都亲眼看过才算通。还有一句要先想清楚,审查是判断、不是单元测试,同样的程式码跑两次,回来的备注可能不一样,判定结果可以当闸门,但不能当作程式码没问题的证明。闸门挡的是明显的问题,低度备注和写法差异还是要人工审查者看,两个角色是互补的,不是互相取代的。一句话:合并前多一道关卡,而这道关卡每次只花一毛钱不到。
S1哥观点:别再问人工智慧审查程式码是不是太贵、太麻烦了,贵的从来不是每次 0.08 美元,麻烦的也不是要搭一整套系统,是你还没亲手跑过一次。作者这篇最值钱的不是那支脚本,是两轮实测的对照:第一轮四个问题、退出码一,第二轮两个低度备注、退出码零,两个数字都亲眼看过,闸门才算真的立起来。更值得问的是,你上次合并请求出问题,是没有人审查,还是审查的人没看出来?如果是后者,一道只要一毛钱的闸门就能先挡下写死的金钥和命令注入这类最危险的问题,剩下的再交给人工审查者慢慢看。你第一个想让它挡下的问题是什么?评论区说说。
收藏用清单(照着做):
1. 备一个演示仓库,故意埋四个问题,改动集中在一个档案,审查者读的就是这份差异。
2. 写审查脚本,先存差异档案、再以非互动模式加结构化输出跑审查,最后把判定结果转成退出码。
3. 本机先跑通两轮,挡下的退出码一、通过的退出码零都亲眼看过,再搬上持续整合。
4. 金钥放机密设定、权限设最小化、审查者只有唯读权限,轮数、预算、逾时三个上限都设好。
转给合并请求出事才救火的朋友,一次审查只要八分钱,他今晚就能先跑一次演示。
显示更多