GitHub Copilot Code Review 支持 Agent Skills 与 MCP:让代码审查拥有团队记忆
2026-07-29 GA | 所有 Copilot 付费计划可用 | MCP 仅读 · Skills 从 head 分支加载 · 审查注释携带来源标注
引言
2026 年 7 月 29 日,GitHub 将 Copilot Code Review 的两项重要能力——Agent Skills 和 MCP 服务器支持——从公开预览推进到正式发布 (GA)。Copilot Pro、Pro+、Business 和 Enterprise 全部计划现在都可以使用。
在此之前,Copilot Code Review 只读取 PR 的 diff 和你写在仓库根目录的自定义指令。它对你们团队约定"EF Core 迁移必须提供可回滚的 Down() 方法"一无所知,也不知道这个 PR 关联的 Issue 在上周已经被关闭过一次。AI 审查的质量天花板,本质上就是它能获取到的上下文的天花板。
Agent Skills 和 MCP 分别解决了一个核心问题:Skills 告诉 AI 审查时应该遵循什么规则,MCP 让 AI 在审查时能查询外部系统的最新状态。两者组合在一起,让审查从一个无状态的 diff 检查升级为有团队记忆的、上下文感知的审查。
同一周,Microsoft .NET Agent Framework 也发布了 MCP Skills Discovery 支持——这不是一个巧合,而是一个架构收敛信号。
Agent Skills:把团队规范编码为可执行文件
Skills 是什么
Agent Skills 的本质很简单:在 .github/skills/ 目录下创建一个子目录,放入一个 SKILL.md 文件,Copilot Code Review 就会在审查时自动加载它。
.github/
└── skills/
├── code-review/
│ └── SKILL.md ← 通用代码审查规则
├── ef-core-migration/
│ ├── SKILL.md ← EF Core 迁移专项规则
│ └── references/
│ └── backfill-snippet.md
└── api-security/
└── SKILL.md ← API 安全规则每个 SKILL.md 是一个 Markdown 文件,使用简单的 YAML frontmatter 声明触发条件:
---
name: "EF Core Migration Review"
description: >
当 diff 涉及 Migrations/ 目录时使用。
检查迁移是否可逆、列类型变更是否安全、索引是否有显式名称。
---
## 审查要点
### Down() 方法必须可逆
- **标记**:Down() 方法体为空或只有 `// no-op` 注释
- **要求**:每个 migration 必须可逆,Down() 应精确还原 Up() 中的变更
### DropColumn 需检查数据迁移
- **标记**:Up() 中存在 DropColumn,但无前置的数据迁移
- **建议**:在 references/backfill-snippet.md 中注释应使用的数据回填代码
### 索引命名
- **标记**:CreateIndex 未提供显式 `name:` 参数
- **要求**:所有索引必须有显式命名,便于后续维护关键设计决策:Skills 从 head 分支加载
一个值得注意的设计是:Copilot Code Review 从 PR 的 head 分支读取 skills,而不是从 base 分支读取。这意味着你可以在 PR 中修改 skill 文件,同一 PR 就会用新规则进行审查。这使得迭代审查规则成为一个可渐进改进的过程——不需要先合并再验证。
Skills 的适用场景
Skills 的价值随着规则的具体程度递增:
- 低价值:"请检查代码质量"——太模糊,模型本身已经能做到
- 中价值:"所有 API 端点需要输入校验"——明确但偏通用
- 高价值:"当 diff 修改了
config/deploy.rb时,验证 deploy 流程中是否有与新环境变量对应的文档更新"——高度具体、领域相关、依赖项目内部知识
好的 skill 文件应该包含只有你的团队知道的规则。Copilot 的基线审查已经覆盖了常见的代码质量问题——skills 的价值在于填补通用知识和项目特定规范之间的空白。
MCP 连接:让审查获取外部实时上下文
MCP 在审查中的角色
MCP(Model Context Protocol)连接让 Copilot Code Review 从外部系统拉取实时上下文。官方文档列出的典型目标包括:Issue 追踪器、文档系统、服务目录。
关键约束:所有 MCP 工具调用在审查期间是只读的。 Copilot 可以读取 Issue 的状态、查询 API 文档、检查服务依赖关系,但不能在连接的系统中写入任何内容。
配置方式
MCP 服务器在仓库的 Settings → Copilot → MCP servers 下配置:
{
"mcpServers": {
"issue-tracker": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer $COPILOT_MCP_TRACKER_TOKEN"
},
"tools": ["search_issues", "get_issue"]
},
"internal-docs": {
"type": "http",
"url": "https://docs.internal.example.com/mcp",
"tools": ["search"]
}
}
}认证令牌存储在仓库的 Settings → Secrets and variables → Agents 下,通过 $COPILOT_MCP_<name> 变量引用。
GitHub 和 Playwright MCP 服务器默认启用。如果你之前已经为 Copilot Cloud Agent 配置过 MCP 服务器,它们会自动应用于 Code Review——无需重复配置。
MCP 的一个实际例子
假设一个 PR 标题是 "fix: resolve rate-limiting issue #1234":
- Copilot 开始审查,加载 diff
- 通过 MCP 连接 issue tracker,查询 #1234 的详细描述和复现条件
- 发现该 issue 描述了 "用户在 100 并发时 API 返回 429",修复方案预期是增加速率限制令牌桶容量
- Copilot 检查 diff 中的令牌桶参数是否与 issue 描述的并发量匹配
- 如果没有 MCP 上下文,Copilot 只能看到 diff 中的数值变更,无法判断这些数值是否合理
注释来源标注:知道为什么被标记
MCP 和 Skills 带来的一个重要变化是审查注释现在携带来源标注。当一条审查评论是基于 skill 规则或 MCP 数据产生的,评论会明确标注来自哪个 skill 或 MCP 源。
这对团队采纳 AI 审查至关重要——开发者更可能认真对待一条明确来自"团队安全审查规则"的建议,而非一条来源不明的通用建议。
同周收敛:Microsoft .NET Agent Framework 的平行选择
7 月 28 日(GitHub GA 的前一天),Microsoft DevBlogs 发布了一篇技术文章,由 Sergey Menshykh 撰写,宣布 .NET Agent Framework 的 MCP Skills Discovery 能力。这两则公告的时间差仅为一天:
| 维度 | GitHub Copilot Code Review | Microsoft .NET Agent Framework |
|---|---|---|
| 发布日期 | 2026-07-29 | 2026-07-28 |
| Skills 存储 | .github/skills/<name>/SKILL.md | MCP 服务器动态发现 |
| MCP 角色 | 审查时拉取只读外部上下文 | Skills 的运行时发现与分发 |
| 覆盖工具 | Copilot Code Review | .NET Agent 生态 |
| 认证 | OAuth / token(仓库级 Secrets) | 框架级认证集成 |
两个独立团队在不同代码库上、覆盖不同语言生态,但选择了同一个协议(MCP)作为技能传输和发现的中间层。
这不是巧合,而是行业收敛。当两个独立决策同时指向同一个架构选择时,这个选择通常不再是"一种方案",而是正在成为"基础设施"。MCP 从 Claude 的周边协议正在变成连接 AI Agent 与外部工具的通用中间件。
对开发团队的实际操作指南
1. 编写你的第一个 SKILL.md
从团队最有共识的一条规则开始,放在 .github/skills/code-review/SKILL.md:
---
name: "Team Code Review Standards"
description: "在每次 PR 审查时应用的团队编码规范"
---
# 审查规则
## 错误处理
- 所有 async 函数必须有显式的错误处理
- 禁止空的 catch 块
- catch 中禁止仅 `console.error` 不处理
## 日志规范
- 生产代码中禁止 console.log——使用 logger 工具
- 日志中禁止输出 PII(邮箱、手机号、身份证号)
## API 验证
- 所有对外 API 的入参必须校验
- SQL 查询必须使用参数化——禁止字符串拼接提交这个文件,在下一个 PR 中观察是否出现了带有技能来源标注的审查意见。
2. 连接你的 Issue Tracker
如果你使用 GitHub Issues 则无需额外配置——GitHub MCP 已默认启用。如果使用 Jira/Linear/其他,在 Settings → Copilot → MCP servers 中添加对应的 MCP 服务器配置。
只暴露你需要的工具——GitHub 官方建议使用 tools 字段显式 allowlist 特定工具,而不是 ["*"]。这是安全考量:Agent 在没有人工审批步骤的情况下自主调用这些工具,限制工具范围就是限制攻击面。
3. 理解 Skills 的迭代方式
因为 skills 从 head 分支加载,你可以在同一个 PR 中同时修改代码和审查规则:
PR #567: "添加 Redis 缓存层"
├── src/cache/redis.ts ← 代码变更
└── .github/skills/caching/SKILL.md ← 新增缓存相关审查规则这个 PR 本身就会用新的缓存审查规则来审查自己的缓存代码变更。不需要先合并规则再等待下一次使用。
不能做什么(重要的限制)
Skills 和 MCP 是辅助审查工具,不是门控系统:
- MCP 只读——不���在 Issue 中写评论、不能自动关闭/重开 Issue、不能更新文档
- Skills 提供建议——不会自动拒绝 PR、不会阻止合并。审查结果是放在 PR 评论区作为审查意见
- 跨文件追踪仍受限——Copilot 审查 diff,不能跨多文件追踪调用链
- Skills 有长度限制——自定义指令上限约 4000 字符
Copilot Code Review 在小 PR(< 50 行变更)上表现最好。Microsoft .NET 团队测得的准确率在 76-80% 范围。大型重构和 200+ 文件的 PR 不仅准确率下降,还会消耗可观的 Actions 计算分钟数。
总结
Agent Skills 和 MCP 被推向 GA,核心价值在于三点:
Skills 让团队规范可执行。 与其在每个 PR 中人工重复"迁移必须有 Down()",不如写一次让 AI 每次自动检查。Skills 的 head-branch 加载机制让规则迭代和代码变更可以在同一个 PR 中验证。
MCP 让审查拥有外部上下文。 一个只看到 diff 的审查者无法判断参数值是否合理——只有当它能查询对应的 Issue 描述和 API 文档时,审查才能从"语法检查"升级为"语义检查"。
来源标注解决了 AI 审查的信任问题。 开发者更愿意接受来自"团队安全规范 #3"的标记,而非一个神秘的黑箱建议。标注让审查从"AI 说了什么"变成"团队规则检测到了什么"。
GitHub 和 Microsoft .NET 团队在同一周选择的架构路径表明:Agent Skills 的存储和分发正在以 MCP 为标准载体收敛。这不是一个功能的发布,而是一个生态方向的确认。
参考资料
- GitHub Changelog: Copilot code review Agent skills and MCP GA
- GitHub Agent Skills 官方文档
- Microsoft DevBlogs: Discover Agent Skills from MCP servers in .NET
- MCP 2026-07-28 Specification Update
- Pondero.ai: GitHub brings MCP connections and agent skills to Copilot code review
- Start Debugging: Copilot Code Review Now Reads Your .github/skills Folder

