Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

GitHub Copilot Code Review 支持 Agent Skills 与 MCP:让代码审查拥有团队记忆

2026-07-29 GA | 所有 Copilot 付费计划可用 | MCP 仅读 · Skills 从 head 分支加载 · 审查注释携带来源标注

引言

2026 年 7 月 29 日,GitHub 将 Copilot Code Review 的两项重要能力——Agent SkillsMCP 服务器支持——从公开预览推进到正式发布 (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 声明触发条件:

markdown
---
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 下配置:

json
{
  "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":

  1. Copilot 开始审查,加载 diff
  2. 通过 MCP 连接 issue tracker,查询 #1234 的详细描述和复现条件
  3. 发现该 issue 描述了 "用户在 100 并发时 API 返回 429",修复方案预期是增加速率限制令牌桶容量
  4. Copilot 检查 diff 中的令牌桶参数是否与 issue 描述的并发量匹配
  5. 如果没有 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 ReviewMicrosoft .NET Agent Framework
发布日期2026-07-292026-07-28
Skills 存储.github/skills/<name>/SKILL.mdMCP 服务器动态发现
MCP 角色审查时拉取只读外部上下文Skills 的运行时发现与分发
覆盖工具Copilot Code Review.NET Agent 生态
认证OAuth / token(仓库级 Secrets)框架级认证集成

两个独立团队在不同代码库上、覆盖不同语言生态,但选择了同一个协议(MCP)作为技能传输和发现的中间层。

这不是巧合,而是行业收敛。当两个独立决策同时指向同一个架构选择时,这个选择通常不再是"一种方案",而是正在成为"基础设施"。MCP 从 Claude 的周边协议正在变成连接 AI Agent 与外部工具的通用中间件。

对开发团队的实际操作指南

1. 编写你的第一个 SKILL.md

从团队最有共识的一条规则开始,放在 .github/skills/code-review/SKILL.md

markdown
---
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,核心价值在于三点:

  1. Skills 让团队规范可执行。 与其在每个 PR 中人工重复"迁移必须有 Down()",不如写一次让 AI 每次自动检查。Skills 的 head-branch 加载机制让规则迭代和代码变更可以在同一个 PR 中验证。

  2. MCP 让审查拥有外部上下文。 一个只看到 diff 的审查者无法判断参数值是否合理——只有当它能查询对应的 Issue 描述和 API 文档时,审查才能从"语法检查"升级为"语义检查"。

  3. 来源标注解决了 AI 审查的信任问题。 开发者更愿意接受来自"团队安全规范 #3"的标记,而非一个神秘的黑箱建议。标注让审查从"AI 说了什么"变成"团队规则检测到了什么"。

GitHub 和 Microsoft .NET 团队在同一周选择的架构路径表明:Agent Skills 的存储和分发正在以 MCP 为标准载体收敛。这不是一个功能的发布,而是一个生态方向的确认。

参考资料

上次更新于: