Appearance
Copilot 有三个主要定制化手段:仓库自定义指令(统一代码规范)、自定义 Agent(复用特定能力)、Copilot Spaces(精细上下文管理)。三者可以组合使用,从不同层面让 Copilot 的回答更贴合项目实际。
GitHub Copilot 定制化总览:自定义指令、Agent、Spaces 三种方式
为什么需要定制化
默认的 Copilot 对你的项目一无所知:不了解命名规范、不知道哪些库是禁用的、不清楚业务逻辑背景。通过定制化,可以让 Copilot:
- 遵守项目的代码风格和约束
- 复用你积累的任务处理模式
- 基于正确的上下文回答问题
三种定制化方式
方式一:仓库自定义指令
文件路径:.github/copilot-instructions.md
适合给 Copilot 设置项目级的规范和约束:
markdown
## 编码规范
- 使用 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 里重复说明。
配置入口:仓库 Settings → Copilot → Agents 或通过 .github/copilot/agents/ 目录的 YAML 文件定义。
方式三:Copilot Spaces
适合场景:你有一批参考材料(架构文档、API Schema、历史决策记录),希望 Copilot 回答问题时基于这些材料。
可以在 Space 中放入:
- 架构设计文档
- API Schema 文件
- 关键配置文件
- Issue 列表或技术规格
# 示例:在 Space 中提问
@space 我们的用户认证流程是什么?新增一个 OAuth 提供商需要修改哪些文件?Copilot 会基于 Space 中的文件来源回答,而不是凭空猜测。
三种方式对比
| 方式 | 作用范围 | 适合内容 | 维护成本 |
|---|---|---|---|
| 自定义指令 | 仓库级,所有 Copilot 功能 | 代码规范、约束 | 低(一个 md 文件) |
| 自定义 Agent | 特定任务类型 | 可复用的任务流程 | 中(需配置 YAML) |
| Copilot Spaces | 特定对话上下文 | 参考资料、知识库 | 中(需维护材料) |
组合使用建议
推荐的起步配置:
- 先写好
.github/copilot-instructions.md,把最核心的编码规范放进去(10~20 条关键约束) - 如果团队有重复性工作流(如每周写 Release Notes、批量 bug 修复),考虑创建专用 Agent
- 对于有大量参考文档的模块,创建专属 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 专注于特定子集,而不是在整个代码库中泛泛搜索。