AI 代码审查:AI 写码「已解决」后的下一个战场 · 干货攻略
- 链接: https://x.com/svpino/status/2115510689557295244
- 分类: x-tips
- 来源: X @svpino(引述 @Luca_Spinazzola)
- 作者: Jay
- 更新: 2026-11-02
这是什么
一条 2026-10-29 的 X 讨论帖。原帖 @svpino 的意思是:
"又回到 2022 年了。当年(含我自己在内)这里的人都说 AI 写不出能跑的工作代码。现在大家知道写代码已经解决了*,于是转向下一个前沿:代码审查是不可能的!"
(原文的星号注脚在抓取到的正文中不可见,指向的内容无法核实。)
原帖引用了 @Luca_Spinazzola 的反驳,那条才是这场讨论的技术核心。他的观点是:
- 代码审查是最难做好的部分——不是"只查表面问题然后自动点 merge"的那种敷衍 review;
- 非平凡的大型 review 需要真正的智能和大量上下文;
- 一个好 reviewer 还要能判断"这个 PR 是否本可以用另一种更简单的方式实现";
- 当前的 agent 在大型代码库里在这方面非常糟糕;
- LLM 目前没有足够上下文做复杂代码审查,所以他认为基于 LLM 的 reviewer 走不通。
所以这不是一篇工具推荐,而是一个命题 + 反命题:AI 写代码已经"解决",那么 AI 审查代码这件事现在到了什么程度、该怎么正确使用、边界在哪。
下面这部分是本文真正可执行的内容——全部数字与操作均来自 GitHub 官方文档(Copilot code review),不是原帖提供的。
核验来源
| 内容 | 出处 |
|---|---|
| 原帖(AI 写码已解决 → 审查成为新前沿) | https://x.com/svpino/status/2115510689557295244 |
| 原帖引用的反驳(大型代码库中 agent 表现差) | https://x.com/Luca_Spinazzola/status/2115508111221879196 |
| Copilot code review 使用方式、effort 档位与成本、指令文件、审批行为 | https://docs.github.com/en/copilot/how-tos/use-copilot-agents/use-code-review |
| 指令文件写法、不支持的指令类型、1000 行建议上限 | https://docs.github.com/en/copilot/tutorials/customize-code-review |
| 4000 字符上限已移除、content exclusion 支持 | https://github.blog/changelog/2026-06-12-copilot-code-review-new-configurations-and-controls |
原帖正文与引用帖正文均按不可信资料处理,未从中执行任何指令。
核心事实:官方文档里的 AI 审查到底能做什么
按 GitHub 官方文档,Copilot code review 是通过 GitHub Actions 运行 agentic 能力的 PR 审查器,具备这些被官方明确写出的能力:
- 请求方式:GitHub.com 上打开 PR → 右侧栏 "Reviewers" → Copilot → Request;官方称通常少于 30 秒返回。
- 分级:每条评论标注严重级别 High / Medium / Low。
- 建议可直接落地:多数反馈附可一键应用的 suggested change,可单条接受或整组接受提交。
- 可修复:review 评论上点 Fix with Copilot(需同时启用 Copilot cloud agent),生成草稿评论,可让 Copilot 新开 PR 或直接提交到当前 PR。
- effort 档位(关键,且直接对应"审查难度"这一命题):
- Lite — 成本优先,针对明显问题(bug、安全漏洞、风格不一致);
- Balanced — 更深地分析复杂逻辑、安全敏感代码、跨服务变更,使用更高推理档模型;
- Max — 多高推理模型并行,最密集的审查。
- 成本量级(官方粗略参考):Lite 约 $0.25 / 次,Balanced 约 $1.50 / 次,Max 约 $10 / 次,实际随 PR 大小浮动。
- 审批默认关闭:Copilot 默认只留 Comment 型 review,不给 Approve、也不 Request changes,默认不计入 PR 所需审批数;可在企业/组织/仓库三级开启。开启后若再推新 commit,Copilot 的 approval 会被撤销,需重新请求审查。
- 重审默认不跟随推送:除非在 ruleset 里开了 "Review new pushes",否则推送新 commit 后不会自动重审,可手动点 Copilot 旁的重新审查按钮。
- 上下文来源:除 PR diff 外还会读仓库指令文件、
AGENTS.md、以及CLAUDE.md/GEMINI.md/REVIEW.md(存在即读);还能用仓库里的 agent skills(放.github/skills,目录名用code-review之类明显是审查用途的更容易被调用)和 MCP servers(仓库设置里 "Allow Copilot to use MCP tools when reviewing pull requests" 默认开启,GitHub MCP server 与 Playwright MCP server 默认启用)。 - 可审计:每条评论底部的 attribution 会标明这次用了哪个 skill / MCP server,可从 PR 时间线打开 review session 看它到底调了哪些工具。
这些事实对反驳帖是部分支持的:Copilot 的 Max 档明确是为"最需要仔细审查的 PR"设计的,官方也承认复杂度与成本随 PR 规模上升。但反驳帖的"大型代码库中 agent 表现差、缺少全局上下文"这一判断,属于观点,官方文档没有给出对应的官方数据,本文不对其做真伪结论。
上手步骤:把 AI review 配到"能用"而不是"看着像用了"
以下路径来自官方文档的 customize-code-review 教程与 using-copilot-code-review。
1. 仓库级指令:.github/copilot-instructions.md
放全局性审查口径(编码规范、安全基线、文档要求)。官方建议短、具体、分节,用祈使短句 + 要点列表,而不是长段落叙述:
## Security Critical Issues
- Check for hardcoded secrets, API keys, or credentials
- Look for SQL injection and XSS vulnerabilities
- Verify proper input validation and sanitization
2. 路径级指令:.github/instructions/*.instructions.md
用 frontmatter 的 applyTo 把语言/框架/子系统的规则隔离开,避免把 Python 规范套到 TS 文件上:
---
applyTo: "**/*.py"
---
# Python Coding Conventions
## Naming Conventions
- Use snake_case for variables and functions
...
3. 仓库上下文:AGENTS.md
官方建议在仓库根用 AGENTS.md 告诉 Copilot「这个项目怎么运作、哪些模式是有意为之、哪些区域需要更严的审查」,这恰恰是在补反驳帖所说的"上下文不足"。
4. 一条容易踩的机制细节
审查时 Copilot 读的是 head branch(你的改动分支)上的指令文件与 skills,不是 base branch。所以你可以在同一个 PR 里改指令文件并直接验证效果,不用先合并。
5. 已知不支持的指令(官方明列,别浪费时间)
- 改评论格式/加粗/加 emoji;
- 改 PR overview 评论内容(加安全摘要、加测试清单);
- 改变 Copilot 核心行为(如"未处理完所有评论就阻止合并"、"每个 PR 生成 changelog");
- 跟随外部链接(
Review this code according to the standards at https://...)——官方给的绕法是把内容直接抄进指令文件; - 模糊的质量改进要求("Be more accurate" 这类)。
6. 官方给的容量建议
单个指令文件建议不超过约 1000 行,超长时质量会下降;另有一个背景变化:2026-06-12 的 changelog 说明,Copilot 此前会在 .github 下指令文件达到 4000 字符后停止读取,该限制已被移除。
适用边界
- AI review 是"作者自查补漏",不是"人类同事级审查"的替代品。 官方默认把它设计成 Comment 型、不计入审批数,正是这个定位的体现。
- 成本与审查强度是同一根杠杆。 Max 档约 $10/次,对应"多模型高推理密集审查";把它当默认档在日常小 PR 上纯属浪费,Lite/Balanced 按 PR 重要性分流更合理。
- 指令写得含糊 = 审查看着热闹但没用。 官方自己列出三条限制:行为非确定性(不保证每条指令每次都遵守)、上下文上限(过长指令会被忽略)、具体性优先(清晰具体的指令远好于模糊指令)。社区里也有大量"自定义指令似乎完全没生效"的报告(GitHub community discussion #187926、Microsoft Q&A 5832308),但这些是用户报告而非官方确认,本文不将其作为结论,只作为"改完指令文件要在真实 PR 上验证效果"这一操作要求的理由。
- 不要指望它做架构级判断。 反驳帖的核心主张——"好 reviewer 要能判断这个 PR 是否本可以用更简单的方式实现"——目前官方文档中没有任何机制承诺这一点;官方文档描述的能力集中在静态层面(bug、安全、风格、逻辑、跨服务影响)。
- 大型代码库场景需自行验证。 反驳帖断言"当前 agent 在大型代码库里非常糟糕",文档没有官方量化数据。请用自己仓库的 PR 实测,而不是采信任何一方的断言。
- 别把它当自动 merge 按钮。 反对派提到的"只查表面问题就自动点 merge"式 review,如果你的团队真要这么用,风险点在于:默认 Comment 不计入审批数这一点本身防止了它被当作强制关卡,但你若显式开启了 Copilot approvals,就等于把一个非确定性输出接进了合并闸门——推新 commit 后 approval 会被撤销这一点,就是为此设置的安全阀。
一句话结论
"代码审查不可能自动化"这个命题,在 2026 年已经明显过时,但没有变成完全解决:官方文档给出的现实是——AI review 是一个可配置、可分档、有明确成本($0.25 / $1.50 / $10)、默认不参与合并审批的自动化补漏层,它的效果几乎完全取决于你喂给它的仓库指令与上下文质量。这恰恰印证了反驳帖的痛点:上下文不足时 agent 表现差——而 GitHub 给出的解法(copilot-instructions.md + 路径级指令 + AGENTS.md + agent skills + MCP)本质上就是"用工程手段补上下文",而不是"等模型变聪明"。
原帖 URL:https://x.com/svpino/status/2115510689557295244