Copilot 现在能批准 PR 了:从“可审”到“可签字”,合并门该怎么重画

系列位置:基础篇第 32 篇
调研日期:2026-09-02
关键词:GitHub Copilot · Pull Request · 分支保护 · Required approvals · 代码审查 · Agent 治理
本文目标:把 Copilot Code Review 新增的 approval 能力翻译成可试点、可回退的合并治理方案,而不是把机器意见直接升级为生产发布凭证。

30 秒结论

GitHub 于 2026-09-01 宣布:Copilot Code Review 可以提交 Approve 类型的 PR review,并且在管理员明确开启后,该 approval 可以计入仓库的 merge requirements。它目前是 public preview ;管理员须显式开启,企业层的相关策略默认是 Disabled everywhere。企业、组织和仓库都有控制面,仓库还能用最多 15 条文件 glob 限制"哪些 PR 的 Copilot approval 才能计数"。新 commit 到来后,Copilot 的正式 approval 会像人类 approval 一样被 dismiss。

这并没有推翻第 27 篇的核心边界。每次 Copilot review 都会生成一份 approval assessment :这是模型对"是否应批准"的判断,默认只作为 review 过程的一部分,不计入 required approvals。只有管理员开启"允许 Copilot 提交 approval",并进一步开启"允许其 approval 满足合并要求"后,Copilot 才会提交可计数的正式 approval。

所以新的默认门不应是"Copilot 批了就合并",而应是:

复制代码
Copilot assessment / 正式 approval
        + 独立 required checks
        + 人类责任审查
        + 当前 head SHA 的证据卡
        = 才有资格进入合并队列

一、先把两种"批准"分开

|---------------------|---------------------------------------|-----------------------------|-----------------|
| 名称 | 官方产品行为 | 是否计入 required approvals | 正确用途 |
| approval assessment | 每次 Copilot review 都会进行的审查判断 | 否 | 发现候选问题、辅助人审 |
| 正式 Copilot approval | 管理员启用后,由 Copilot 提交的 Approve review | 仅在进一步开启计数后才可能计入 | 受限场景的补充审批信号 |
| 人类 approval | 由有权限的人提交,受 CODEOWNERS、规则集和分支保护约束 | 取决于规则 | 对业务影响、例外和发布责任签字 |
| required checks | CI、测试、扫描、部署验证等独立状态检查 | 不是 approval | 验证可执行事实,不替代责任判断 |

事实: GitHub 文档把"Allow Copilot to approve pull requests"和"Allow Copilot approvals to count toward merge requirements"拆成两个开关。若只开前者,Copilot 可以提交 approval,但不自动变成合并门的计数项。

团队推断: 这两个开关必须分两次评审。第一步可观察 Copilot 的正式 approval 与人审结论是否一致;第二步才讨论极窄范围内是否允许它占用一个 required-approval 名额。把两步合并为一次配置,等于跳过了对误批率和失败模式的观测。

二、控制面不是一个开关:企业、组织、仓库各管什么

GitHub 支持逐层治理。企业层可让组织自行决定、仅为选定组织启用,或"Disabled everywhere";后者是默认值。组织层可设为全组织启用、仓库自行决定、仅选定仓库启用或全禁用。仓库层才决定是否允许 Copilot 提交 approval、是否可计入合并要求,以及可计数 approval 的路径范围。

|--------|----------------------------|----------------------------------|
| 层级 | 应承担的决策 | 推荐默认值 |
| 企业 | 哪些组织有资格试点,谁可改变策略 | Disabled everywhere;仅安全评审后的组织例外 |
| 组织 | 哪些仓库类别可进入试点 | Enable for selected repositories |
| 仓库 | 是否提交 approval、是否计数、哪些路径可计数 | 先允许 approval 但不计数;路径只覆盖低风险目录 |

路径限制不是"只要改动里有一个安全文件就不计数",而是只有当 所有变更文件 都匹配所列 glob 时,approval 才能计入。它适合把试点锁在文档、测试夹具、非生产示例或可重复生成文件;它不适合替代 CODEOWNERS、密钥扫描或部署审批。

复制代码
# 团队策略示例,不是 GitHub 原生配置。
copilot_approval_pilot:
  repository: docs-and-test-fixtures
  formal_approval: enabled
  counts_toward_merge_requirement: false # 第 1 阶段固定为 false
  eligible_paths:
    - "docs/**"
    - "test/fixtures/**"
  never-eligible:
    - "infra/**"
    - ".github/workflows/**"
    - "**/*secret*"
  human_required_roles: [code-owner]
  independent_required_checks: [unit, dependency-scan, secret-scan]

三、从"可审"到"可签字",不应移走独立门

第 27 篇讨论的是 Copilot 对 Agent 和超大 PR 的审查入口扩大;当时 Copilot 留下的是 Comment review,不计 required approvals。现在新增的 approval 能力改变了 PR 的一个状态类型,却没有让模型成为测试、部署或业务责任的替身。

建议按副作用建立分层路径策略:

|-------------------|-------------------------|--------------------------|--------------------------------|
| 路径/变更类型 | Copilot 正式 approval | 可计 required approval | 必须保留的人审与检查 |
| docs/**、示例、测试夹具 | 可开 | 72 小时试点后可评估 | 至少 1 位维护者;渲染/测试 |
| 普通应用逻辑 | 可开 | 默认不开 | CODEOWNER + 单测/集成测/依赖扫描 |
| 身份、权限、支付、数据迁移 | 可开作辅助 | 禁止 | 安全或领域负责人 + 专项检查 |
| CI、IaC、部署、密钥、策略文件 | 可开作辅助 | 禁止 | 平台/安全双人审 + policy/plan/dry-run |

所谓"独立 required checks"是指其失败条件不依赖 Copilot 是否批准。例如,锁定测试命令、签名的构建产物、依赖与密钥扫描、IaC plan 以及部署前 dry-run 都应继续作为单独 status check。若模型、检查和批准都来自同一 Agent 生成链,一个错误假设会同时污染三份看似独立的证据------这就是同源失败

四、人审职责与反自批:谁能对谁的产物签字

机器 approval 最危险的使用方式,是让"生成 PR 的 Agent""审 PR 的 Agent""触发合并的自动化"共享同一身份、同一提示上下文或同一信任边界。这样即使系统显示两次 approval,也不代表存在两套独立判断。

最小职责分离应包括:

  • 生成 PR 的 bot/Agent 不得成为该 PR 的唯一可计数批准者;
  • Copilot approval 不能取代作者所属团队的 CODEOWNER approval;
  • 高风险路径必须由与作者不同的人员、不同角色或不同团队签字;
  • 自动合并机器人只能读取已经满足规则的结果,不能通过改规则、重写 required check 或替换 reviewer 来制造"已满足";
  • review 使用的外部工具、仓库 instructions 与 skills 若由 PR 头分支改动引入,应作为审查系统供应链变更单独复核。

这是团队控制,不是 GitHub 对"同源失败"的自动保证。应把它编码为 ruleset、CODEOWNERS、bot token 权限和审计告警的组合,而不是放在 PR 描述里期待每次自觉遵守。

五、approval 必须绑定 head SHA,不能拿旧签字放行新代码

GitHub 文档说明,新 commit 推送后 Copilot approval 会像人类 approval 一样 dismiss。这是必要的版本绑定,但团队还应在合并前检查:每一项有效 approval、required check、部署验证和人审结论对应的是不是当前 head_sha

可保留一张不含源码和敏感提示词的回放卡:

复制代码
# 团队回放卡示例,不是 GitHub 原生 schema。
merge_replay_card:
  pull_request: 4821
  head_sha: "ab12...redacted"
  policy_revision: "copilot-approval-pilot-v1"
  copilot:
    assessment_completed: true
    formal_approval: true
    counts_toward_requirement: false
    eligible_paths_only: true
  required_checks:
    - name: unit
      sha: "ab12...redacted"
      result: pass
    - name: secret-scan
      sha: "ab12...redacted"
      result: pass
  human_approvals:
    - role: code-owner
      reviewer: "recorded-in-github"
  decision: "merge-eligible"

如果 SHA 变化,旧卡立即作废并重建;不要用"变更很小"作为跳过重审的理由。真正需要省时的场景,应通过拆 PR、确定性生成和稳定检查来实现,而不是复用过期审批。

六、72 小时试点:先测一致性,再谈计数

0---24 小时:只观察

  • 在一个低风险仓库、低风险路径开启正式 approval,但保持"不计入 merge requirements"。
  • 固定 review effort、禁止自动合并;记录 assessment、Copilot approval、人审、检查和最终结论。
  • 验证新 commit 是否会 dismiss approval,并演练一次失败检查阻断合并。

24---48 小时:测试失配

  • 取一组已知缺陷、边界回归和无风险机械改动,比较 Copilot approval 与 code owner 判断。
  • 模拟生成 Agent 与审查 Agent 同源、CI 绿但安全扫描红、路径混入 infra/** 等情况,确认规则不能被 approval 绕过。
  • 审核谁拥有企业/组织/仓库开关,以及审计日志能否还原一次策略变化。

48---72 小时:做"是否计数"的否决式评审

只有同时满足下列条件,才讨论一个更窄的可计数试点:误批样本已复盘;人审未被减少;所有必需检查独立存在;路径限制确实排除了生产和策略文件;SHA 回放卡完整;停止开关与负责人明确。任一条件不满足,就维持"可 approve 但不计数"。

常见误区

  1. "每次 review 的 approval assessment 已经是 required approval。" 不是;它默认不计数。
  2. "启用 Copilot approval 就自动计入合并规则。" 不是;计数是额外的管理员开关。
  3. "只要限定路径,就可以删除人审。" 路径 glob 只决定是否计数,不提供业务、合规或供应链判断。
  4. "绿勾 + Copilot approval 是两份独立证据。" 若同一 Agent、同一 token、同一工具链生成两者,它们可能同源失败。
  5. "approval 没被手动撤销就一直有效。" 新 commit 会 dismiss;团队仍须核对所有证据的 head SHA。
  6. "public preview 的配置一经试点就不会变化。" 预览功能可能调整,应把其状态、配置截图/导出和回退开关留入运行手册。

结语

Copilot 的能力已经从"对 PR 留下评论"走到"可提交审批"。这使自动化审查更接近现有的 GitHub 合并语言,但也使组织更容易把产品状态误读为责任转移。

正确的重画方式不是把人从门里拿掉,而是让机器签字只在被限定的路径、独立检查、职责分离、SHA 绑定和可回放证据之间发挥作用。先用 72 小时收集失配与回退证据,再决定它是否值得占用哪怕一个 required-approval 名额。

官方来源

  1. Copilot code review can now approve pull requests:GitHub Changelog,2026-09-01;用于核验正式 approval、默认关闭、public preview、新 commit dismiss 与路径限制。
  2. Configuring code review by GitHub Copilot:GitHub Docs,当日复核;用于核验企业/组织/仓库三级控制、两个 approval 开关、最多 15 条 glob 与默认企业策略。
  3. Using GitHub Copilot code review:GitHub Docs;用于对照传统 Comment review 与 required approvals 的边界。
相关推荐
circuitsosk22 分钟前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
DanaAI8 小时前
AI硬件卖出去只是开场:模型迭代与内容运营的成本由谁扛
ai agent
deepseek2311 小时前
Kimi K3 开放日拆解:2.8T MoE 的 896 专家稀疏路由、KDA 混合注意力与 Infra 三件套
大模型·ai agent·moe
deepseek2314 小时前
Claude Fable 5.1 深度拆解:推理强度、缓存降价,Agent 工作流成本如何省 45%
大模型·claude·ai agent
Akiyama_Mio-Kon15 小时前
Astra 被 OpenAI 认定为首个“Critical”网络安全模型:零日能力进入受限发布,企业该补哪几道门
devsecops·ai agent·最小权限·openai · astra·daybreak blue·身份治理
DanaAI1 天前
从Demo到量产:AI语音硬件的工程化跨越与批量一致性
ai agent
deephub1 天前
DeepSeek Harness 架构解析:从 Preset、Tool Pipeline 到 Agent Runtime
大语言模型·ai agent·agent runtime·deepseekharness·cordis
DanaAI1 天前
端侧语音识别如何压低延迟:从声学模型压缩到流式推理
ai agent
阿图灵1 天前
LangGraph 实战 03:Workflows 与 Agents——六种工作流模式与智能体实战(附 6 个可运行示例)
java·前端·javascript·工作流·ai agent·智能体·langgraph