自定义、扩展和验证 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 较少,因此要有意地应用它们,以实现价值最大化。

配置、扩展和验证做法到位后,最后一步是负责任地使用代理,合理规定任务范围,保护环境,并持续审查结果。