posts/agent-pr-intent-gates.md
AI 写的 PR 能跑以后,维护者反而更难了
一个拉取请求模板里的测试复选框,居然能把 Agent 逼去安装浏览器、启动整套应用,再把自己写的改动真实跑一遍。
不是维护者在评论区追着催,也不是谁半夜手动补了一条 prompt。
只是 Agent 为了填写测试计划,读到了一句「测试这个 PR」。这句话触发仓库里的 test PR 技能,后面的安装、启动、执行和验证就自己接上了。
这段来自 GitHub 对 AutoGPT 维护者 Nicholas Tindle 的采访。采访时,AutoGPT 已经有超过 18 万颗星、约 150 个待处理 PR(Pull Request,代码变更申请),其中很大一部分由 Copilot、OpenClaw 和 AutoGPT 自己的工具写成。
多数维护者看到这种队列,大概只想把门焊死。Nicholas 的看法却很妙,别人愿意花自己的 token 给项目改代码,等于替维护者付了算力钱,可以让他们进来,但门必须按项目能承受的方式来开。
好家伙,听着像薅 Agent 羊毛。
可 AutoGPT 真正跑通的并不是一套免费劳动力系统,而是一套逐渐变硬的边界。他们现在几乎不再收到完全不能工作的 AI PR。问题被推到了下一层,代码能跑,却不一定是项目想要的代码。
我看完最在意的就是这句。
AI 编程过去最大的麻烦是产出不可靠。等它开始会读规则、补测试、修 CI,维护者并没有自动下班,只是从检查语法和功能,升级成判断一件更难的事。
这个改动,到底该不该进项目?
文档写得再全,Agent 找不到也等于没写
AutoGPT 最早走的路很正常。他们补贡献指南、补文档,还搭了一整套 Wiki,希望新贡献者先把项目看明白。
没什么用。
问题不是文档质量,而是发现机制。Agent 不会像一个谨慎的新人那样,从仓库首页一路点进 Wiki,再主动研究团队习惯。它更常读取当前目录、眼前任务和运行环境明确交给它的规则。没有路标,文档再全也只是仓库角落里的收藏品。
团队于是先放 CLAUDE.md,很快又发现 Copilot 和 Codex 不读 Claude 专用文件。后来他们把共用规则收进 AGENTS.md,再让工具专用文件指向同一份来源。
这一步看着朴素,其实解决的是导航问题。
AGENTS.md 适合告诉 Agent 当前目录是什么、哪些命令能跑、哪些文件别碰、提交前需要满足什么。它跟代码放在一起,作用域也跟着目录走。GitHub Copilot 的代码审查已经支持仓库级 AGENTS.md,不同工具开始愿意读同一种路标,这是件好事。
但路标不能塞成百科全书。
AutoGPT 曾经到处散落 AGENTS.md,结果上下文被无关规则挤满,Agent 的注意力反而被拉向不该碰的文件。厉害了,原本想让它别迷路,路牌插太多以后直接把路堵了。
这里很容易踩一个坑。很多团队发现 Agent 出错,第一反应就是继续往规则文件里加字。一次失败加一条,半年后文件比入职手册还长,互相冲突的例外藏在第七屏,模型每次都能读到,却不一定能判断哪条更重要。
更稳的做法,是让 AGENTS.md 只回答三类问题。你现在在哪里,可以做什么,做完怎样算合格。复杂操作别继续堆进路标,交给按任务触发的技能。
路标负责把 Agent 带到门口,执行手册负责告诉它怎么进门。

规则文件负责导航,任务技能负责动作,质量门禁负责验收。
技能不是知识库,它得把动作顺序钉死
AutoGPT 的前端工程师被同一类坏 PR 折腾烦了,于是把 Storybook 测试要求写成仓库技能。描述里直接放触发条件,组件落在指定目录时就必须加载这份技能。后端也有类似规则,覆盖率不到 80%,不要打开 PR。
这跟在文档里写一句「请补测试」差别很大。
一句原则留给 Agent 自己解释,技能却可以把工具、命令、顺序和完成证据一起写进去。Agent 不只知道应该测试,还知道怎样启动应用、用什么浏览器跑、要留下什么结果。
最典型的是他们的 pr-address 技能。有些 Agent 会在代码一行没改的情况下,把所有审查线程标成已解决。看板很绿,问题还在,棒棒的。
AutoGPT 于是把有效顺序钉成一条链。
修改代码 → 提交 → 推送 → 回复完整 commit SHA → 解决审查线程
回复里的 SHA 必须在提交后通过 git rev-parse HEAD 取得,还得指向真正改到被审查代码的提交。只回一句 Acknowledged 不算,拿旧提交来糊弄也不算。
这类技能最有价值的地方,不是教模型一个新知识,而是把模糊的团队习惯变成可验证动作。
很多项目的潜规则全在人脑里。审查意见要修完再点解决,数据库迁移要附回滚方案,接口变更要同步契约测试,截图不能只截成功页面。这些要求对老成员像呼吸一样自然,对 Agent 却是空气。
你不写,它就按最短路径完成表面目标。
坦率讲,给 Agent 写技能时,最该盯的不是说明够不够优雅,而是它能不能回答两个问题。动作完成后留下什么证据,证据不成立时系统怎样拒绝它继续走。
前者让结果可审,后者把技能从建议升级成流程。
CI 一旦只是建议,维护者就会变成人肉转发器
规则和技能能提高首轮质量,但别指望模型每次都自觉。
AutoGPT 把 Codecov 覆盖率阈值设成必需检查。Agent 提交 PR,过几分钟回来发现不能合并,会自己加载测试技能补覆盖率。没有人需要在评论区复制粘贴「请补测试」。
这一下很关键。
如果规则只存在于审查意见里,维护者就会变成一层很昂贵的消息队列。CI 报错,维护者转给贡献者;贡献者让 Agent 修;Agent 改完,维护者再去看下一条。模型明明能读机器结果,中间却硬塞一个人负责搬运文字。
不是哥们,人类不该干 webhook 的活。

绿灯能证明代码过了检查,罗盘才决定项目该往哪里走。
真正省维护成本的方式,是让机器约束直接挡住机器产出。模板不合格就不进入审查,测试没跑就不允许合并,覆盖率不够就回到修改环节,审查线程没有修复提交就不能关闭。
不过门禁也会长成噪音机器。
AutoGPT 曾让一个 Agent 自动读取失败的 GitHub Actions 任务,再评论解释哪里坏了。最初还为此把 Claude Code 的宽权限凭据放进 CI,后来换用工作流里的 Copilot。功能确实能跑,他们却还是关掉了自动评论。
原因很简单,项目 CI 经常失败,一个机器人全天解说每一次失败,没有减负,只是给红灯配了个喇叭。
这事挺值得记住。自动化的价值不是它会说话,而是它能减少维护者必须处理的状态。 如果一条评论没有改变任务路由、没有给出下一步动作、也没有替人完成修复,它大概率只是更贵的通知。
重型门禁也要算账。AutoGPT 的完整 PR 测试会克隆分支,拉起八个不同角色的 Agent,运行整套应用并上传截图。有点子牛逼,也贵得很具体。团队后来只把它用在非常小或非常大的 PR 上,中等改动反而不跑。
门禁不是越多越专业。每一道门都该对应一种高频失败,还得比人工处理那种失败更便宜。
人类确认不是落后,是有意留下的责任边界
AutoGPT 还有一道很有意思的设计,把 CLA(Contributor License Agreement,贡献者许可协议)当作人类探测器。
签署 CLA 需要打开浏览器,在另一个域名走完 GitHub OAuth。今天的 Agent 不擅长这套流程,而且维护者也不愿意给它一份能随便登录账号的宽权限。于是这道看起来古典的手续,刚好把人重新放回链路。
一周没签,PR 就关闭,签完再开。
CLA 不是唯一选项,行为准则确认框、敏感权限审批、发布前的责任人签字,都能承担类似作用。重点不是证明屏幕对面一定是碳基生物,而是让某个具体的人在不可逆动作前说一句,我知道这次变更要进来,我愿意承担后续责任。
Agent 越能干,这种确认越不能随便删。
代码合并不是一次性输出。依赖升级会继续跟,接口承诺会继续背,奇怪的边界条件会在三个月后敲门。提交者花 token,维护者付的是未来维护时间,两边成本并不对称。
所以 Nicholas 说,项目没有义务接受每一个 PR。GitHub 已经允许仓库关闭外部拉取请求,也允许把议题创建限制给协作者。SQLite 只接收错误报告,不接受外部代码贡献,同样是一种合理边界。
开源不等于永远敞门,欢迎贡献也不等于必须合并。
这里还有一处常被忽略的安全成本。团队试用过的每个 GitHub App,都可能在停用后继续躺在授权列表里。AutoGPT 参与 Secure Open Source Fund 后带走的一条经验,就是定期审计授权应用,不再使用就撤掉。
权限不会因为工具被遗忘而自动消失。
最难自动化的不是审查,是方向
AutoGPT 现在遇到的 PR,大多已经能工作。
可它们可能不符合路线图。
这几乎是 AI 贡献时代最真实的分水岭。语法错误可以靠编译器挡,回归可以靠测试挡,覆盖率可以靠 CI 挡,动作顺序可以靠技能挡。项目为什么存在、哪些用户值得服务、现在该不该背一份新接口承诺,没有一条通用检查命令能替维护者回答。
AGENTS.md 能告诉 Agent 不要改某个目录,却很难让它理解团队为什么准备半年后删掉这套模块。技能能教它把测试跑完,却不知道这个功能会不会把产品拖进一条不想走的岔路。八个审查 Agent 可以把代码翻八遍,也不能替项目决定下一站去哪。
我一直觉得,AI 编程真正成熟的标志,不是 PR 数量继续涨,而是团队终于肯把不同判断放回合适的位置。
导航交给 AGENTS.md,重复动作交给技能,确定性质量交给 CI,不可逆责任留给人,路线图仍由维护者掌舵。
这里面没有哪个文件是魔法。
真正有用的是那条边界线。它让 Agent 尽量多干活,又不假装项目判断已经被自动化。
下一份 AI 写的 PR 很可能能编译、能测试、覆盖率也漂亮。到那时,别急着被一排绿灯感动。
抬头看一眼罗盘。
代码已经会自己往前走了,方向还得有人守着。