自定义、扩展和验证 Copilot 编码代理
GitHub Copilot 编码代理在安全的临时 GitHub Actions 环境中运行。 通过几个配置步骤,你可以预先设置此环境以提高可靠性和速度,通过模型上下文协议(MCP)通过外部工具扩展代理的功能,并在合并之前应用最佳做法来测试和验证代理的输出。
在本单元结束时,你将能够:
- 预安装工具、依赖项和机密以自定义代理的开发环境。
- 使用模型上下文协议(MCP)扩展代理的功能。
- 在合并更改之前有效地测试和验证代理输出。
预先设置开发环境
预安装工具和依赖项copilot-setup-steps.yml
在存储库的默认分支上创建 .github/workflows/copilot-setup-steps.yml 。 工作流必须定义名为 copilot-setup-steps 的单个作业。 包括安装依赖项或设置工具所需的任何步骤。
TypeScript 示例:
name: "Copilot Setup Steps"
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install JavaScript dependencies
run: npm ci
针对 copilot-setup-steps 作业的允许配置密钥:steps, permissions, runs-on, container, services, snapshot, timeout-minutes(≤ 59)。 任何 actions/checkout 的提取深度将被重置,以允许安全回滚。 安装程序工作流独立运行(因此可以验证它),然后在代理启动之前自动运行。
关于 GitHub 托管的运行程序
- 首先添加大型运行器
- 在
copilot-setup-steps.yml中,将runs-on设置为标签/组(例如ubuntu-4-core)。 - 仅支持 Ubuntu x64 运行程序;不支持自承载运行程序。
Git LFS
如果使用 Git 大型文件存储,请通过设置步骤启用它:
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v5
with:
lfs: true
防火墙自定义
默认 Internet 访问仅限于降低外泄风险。 如果需要,可以自定义或禁用每个组织策略的防火墙。
使用模型上下文协议(MCP)进行扩展
MCP 是将 LLM 连接到工具和数据的开放标准。 代理可以使用本地或远程 MCP 服务器提供 的工具 来扩展其功能。
注意:Copilot 编码代理仅支持 MCP 工具(而不是资源或提示)。 不支持需要 OAuth 的远程 MCP 服务器。
默认 MCP 服务器
- GitHub MCP 服务器: 访问问题、PR 和 GitHub 数据,其只读令牌默认限定为当前存储库(可以自定义令牌)。
- 剧作家 MCP 服务器: 读取、交互并获取代理环境中可访问的网页的屏幕截图(localhost/127.0.0.1)。
存储库配置
管理员可以通过存储库中的 JSON 配置声明 MCP 服务器。 配置后,代理会自主使用可用的工具,无需每次使用审批提示。 请参阅使用 MCP 扩展 GitHub Copilot 编码代理。
最佳实践
- 查看第三方 MCP 服务器的性能和输出质量影响。
- 首选读取工具;如果存在写入工具,则仅允许必要的内容。
- 保存前请仔细验证 MCP 配置。
测试和验证代理输出
你仍对质量和安全负责:
- 在每个代理 PR 上运行 CI(测试、linter、扫描);只有您单击“批准并运行工作流”后这些检查才会启动。
- 手动检查高影响或敏感区域。
- 要求代理生成测试(例如,“按存储库样式为
src/utils/中的所有函数添加 Jest 单元测试”)——生成多文件测试会消耗 PRU。 - 实施规则集,使代理 PR 必须在合并之前通过测试、扫描以及代码检查。
- 标记代理 PR(例如
agent-refactor, agent-tests),以便根据需要进行监控、会审和还原。 - 当出现重复错误时,复查 .github/copilot-instructions.md 中的指令。
- 如果需要,请快速还原,并从代理请求新更改。
故意使用 PRU 进行验证
利用 PRUs 执行更深入的验证任务,例如扩展测试覆盖率、目录间审计或风险区域扫描。 轻量级检查使用的 PRU 较少,因此要有意地应用它们,以实现价值最大化。
配置、扩展和验证做法到位后,最后一步是负责任地使用代理,合理规定任务范围,保护环境,并持续审查结果。