编码代理开出的拉取请求,已经多到没人能逐行读完。目标不是少读几行,而是把人的注意力花在真正需要看的PR上,同时确保任何代理都不能自行合并,也不能自行放宽审查规则。
如果"够格合并"的标准变成"模型今天觉得行",结果就是满屏噪音式的行内评论,而且没有任何机制能阻止一个代理PR悄悄改掉用来审查它自己的指令文件或工作流文件。
这套做法把规则放回仓库里:确定性规则给每个PR分道,AI模型读diff、加行内评论,但只能把道改严,不能改松;规则与策略一律从基线分支读取,绝不从PR分支读取。
三道分流:auto、review、block
确定性规则先把每个PR归入三条道之一:auto(低风险)、review(必须有人看)、block(拦截)。AI模型在此基础上读diff并添加行内评论,权限被限定为只能让道更严,不能更松。
规则和策略从基线分支读取,而不是从PR分支读取。这一点直接堵住了"代理改自己的考卷"的口子。
作者用自己构建的开源(MIT)引擎MergeJudge作为示例,并 upfront 说明这是自己的项目。核心思路——基线分支配置、确定性规则兜底、规则变更由人合并——可以搬到任何一套设置里。
先看三个真实PR
不用安装就能看到输出长什么样,三个真实案例分别对应三条道:
- auto:一处文档小错别字
- review:工作流文件变更
- block:硬编码的API密钥
两条上手路径
不想先折腾YAML和密钥的,可以装GitHub App。公开仓库开箱即得每月最多10次免费AI审查,无需API密钥、无需配置文件。私有仓库或更高用量,则自带密钥,或跑本地CLI运行器,复用已有的Claude Code或Codex登录。
想让一切都在自己的GitHub Actions运行器里跑、不碰MergeJudge账号的,走自托管路线:先把提供商密钥设为仓库secret(可选Anthropic、OpenAI、z.ai或任何OpenAI兼容端点;把provider设为none则只跑确定性规则、不需要密钥),再添加工作流文件,打开PR后就会得到一个置顶汇总评论、一个mergejudge/lane检查(success对应auto,neutral对应review,failure对应block),以及diff上的行内评论。
把不可谈判的路径写死
凡是永远需要人来看的路径——比如.github/**、认证、数据库迁移——不该依赖提示词去"注意到"。在默认分支的配置文件里列出受保护路径后,这些路径无论有没有AI提供商,都至少落到review道。
因为配置文件和AGENTS.md都从基线分支顶端读取,代理开的PR无法为自己这次审查削弱规则。
判断类规则则写进AGENTS.md。如果仓库里已经为编码代理维护了AGENTS.md或CLAUDE.md,加一个代码审查小节,用大白话写清楚,比如"src/api/下每个新HTTP处理器都必须检查资源授权"。MergeJudge从基线分支读取它,违反时把道升严。
这套设置不做什么
它不会自动合并PR——auto只是低风险信号,不是保证,人类的分支保护仍然是最终把关者。它也不替代完整的密钥扫描器,对新增行的密钥检查只是一道快速筛查。
启用AI提供商时,diff和上下文片段会按你的密钥发送给该提供商。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.