Copilot 有三个主要定制化手段:仓库自定义指令(统一代码规范)、自定义 Agent(复用特定能力)、Copilot Spaces(精细上下文管理)。三者可以组合使用,从不同层面让 Copilot 的回答更贴合项目实际。

GitHub Copilot 定制化总览:自定义指令、Agent、Spaces 三种方式

为什么需要定制化

默认的 Copilot 对你的项目一无所知:不了解命名规范、不知道哪些库是禁用的、不清楚业务逻辑背景。通过定制化,可以让 Copilot:

  • 遵守项目的代码风格和约束
  • 复用你积累的任务处理模式
  • 基于正确的上下文回答问题

三种定制化方式

方式一:仓库自定义指令

文件路径.github/copilot-instructions.md

适合给 Copilot 设置项目级的规范和约束:

## 编码规范

- 使用 TypeScript strict mode,禁止 any 类型
- 所有 API 端点必须有 zod 输入校验
- 数据库操作使用项目内封装的 `db` 实例,禁止直接使用 Prisma Client
- 错误处理统一使用 `AppError` 类,不要直接 throw 原生 Error

## 架构约定

- 新功能放在 `features/` 目录下,遵循 feature slice 结构
- 共享类型定义放在 `types/` 目录

效果范围:Copilot Chat、代码补全建议、Cloud Agent 都会读取这个文件。

Copilot 代码审查只读取该文件的前 4000 字符,超出部分会被截断。

方式二:自定义 Agent

适合场景:你有一类反复出现的任务,希望 Copilot 每次都按同样的方式处理。

例如创建一个"Bug 修复专家" Agent:

  • 预设了 bug 调查步骤(先读 Issue、再看报错、再看相关测试)
  • 内置了提交规范(fix(scope): description
  • 知道哪些文件是禁止修改的(配置文件、生成文件)

自定义 Agent 在 Agents 面板中选择,让特定能力可复用,不需要每次都在 Prompt 里重复说明。

配置入口:仓库 SettingsCopilotAgents 或通过 .github/copilot/agents/ 目录的 YAML 文件定义。

方式三:Copilot Spaces

适合场景:你有一批参考材料(架构文档、API Schema、历史决策记录),希望 Copilot 回答问题时基于这些材料。

可以在 Space 中放入:

  • 架构设计文档
  • API Schema 文件
  • 关键配置文件
  • Issue 列表或技术规格
# 示例:在 Space 中提问
@space 我们的用户认证流程是什么?新增一个 OAuth 提供商需要修改哪些文件?

Copilot 会基于 Space 中的文件来源回答,而不是凭空猜测。

三种方式对比

方式 作用范围 适合内容 维护成本
自定义指令 仓库级,所有 Copilot 功能 代码规范、约束 低(一个 md 文件)
自定义 Agent 特定任务类型 可复用的任务流程 中(需配置 YAML)
Copilot Spaces 特定对话上下文 参考资料、知识库 中(需维护材料)

组合使用建议

推荐的起步配置

  1. 先写好 .github/copilot-instructions.md,把最核心的编码规范放进去(10~20 条关键约束)
  2. 如果团队有重复性工作流(如每周写 Release Notes、批量 bug 修复),考虑创建专用 Agent
  3. 对于有大量参考文档的模块,创建专属 Space

与 Claude Code CLAUDE.md 的对比

Claude Code 使用 CLAUDE.md 文件传递项目上下文,Copilot 用 .github/copilot-instructions.md——两者思路相同,都是"让 AI 在动手之前先了解规矩"。如果你同时用两个工具,内容可以互相借鉴,格式稍作调整即可。

常见问题

Q: 自定义指令文件多大合适?

A: 建议在 2000 字以内,聚焦最关键的约束。太长会影响 token 效率,且代码审查只读前 4000 字符,过长会被截断。

Q: 自定义 Agent 和直接在 Prompt 里说明有什么区别?

A: Agent 可以被复用和分享给团队,每次不需要重复写背景。对于一次性任务,直接写 Prompt 就够了;对于反复出现的任务类型,封装成 Agent 更高效。

Q: Copilot Spaces 和 GitHub 仓库上下文有什么区别?

A: Copilot 默认能读取当前仓库代码,Spaces 是额外添加的"重点关注"文件集合,适合让 Copilot 专注于特定子集,而不是在整个代码库中泛泛搜索。