Appearance
Copilot CLI 的强大之处不只在于默认功能,而在于它的可扩展性:自定义指令让它了解你的项目规范,Skills 给它专项能力,MCP 服务器让它访问外部工具,Plugins 打包成可分发的扩展包。六种机制从轻到重,总有一种适合你的场景。
GitHub Copilot CLI 自定义总览:六种扩展方式全解析
为什么需要自定义
开箱即用的 Copilot CLI 已经很强,但它不了解你的项目特点——代码风格规范、特定的技术栈选择、团队约定的 API 格式。自定义机制让你把这些"领域知识"注入给 Copilot,让它从一个通用助手变成了解你项目的专家。
六种自定义机制
1. 自定义指令(Custom Instructions)
适用场景:提供在所有对话中始终适用的规范和背景
工作方式:在配置文件中写入自然语言指令,比如:
- "本项目使用 TypeScript strict 模式,所有函数必须有明确的返回类型"
- "数据库操作统一使用仓库模式,不允许在 Controller 层直接调用 ORM"
Copilot 在每次对话中都会遵循这些指令,不需要每次重复说明。
适合:团队级别的代码规范、项目特有的架构约定
2. Hooks
适用场景:在会话的关键节点自动触发自定义脚本
典型用法:
- Copilot 修改代码后自动运行
eslint --fix - 提交前自动运行测试
- 代码变更后触发 CI 状态检查
适合:自动化质量保证流程、与现有工具链集成
3. Skills(技能)
适用场景:为特定工作流或技术栈创建"专项能力包"
每个 Skill 是一个包含 SKILL.md 的目录,可以包含指令说明和辅助脚本。
例如创建一个 webapp-testing Skill,里面包含:
- 如何为这个特定框架生成测试的规范
- 测试运行脚本
- 测试覆盖率检查脚本
Copilot 会根据对话上下文自动加载相关 Skill,也可以用 /skill-name 格式强制调用。
适合:特定框架的深度集成、跨项目复用的工作流
4. Custom Agents(自定义代理)
适用场景:为特定任务类型创建专门的子代理,避免污染主代理上下文
比如创建一个"数据库迁移代理",专门处理 Schema 变更任务,拥有自己的工具集和规范,主代理在需要时把任务转给它处理。
适合:高度专业化的任务、需要隔离上下文的场景
5. MCP 服务器(Model Context Protocol)
适用场景:接入外部工具和数据源
通过 MCP 协议,Copilot 可以访问:
- 本地或远程数据库
- Issue 跟踪系统(Jira、Linear)
- CI/CD 管道状态
- 内部 API 或文档系统
MCP 服务器可以通过 /mcp add 命令或直接编辑 ~/.copilot/mcp-config.json 添加。
适合:需要 AI 获取实时外部数据的场景
6. Plugins(插件包)
适用场景:打包上述多种自定义机制,方便团队共享和安装
Plugin 是一个可以包含 Custom Instructions、Skills、MCP 配置等的压缩包,一键安装,适合团队内部分发或开源发布。
适合:团队级别的 Copilot 配置共享、框架/工具特定的扩展包发布
选择建议
| 需求 | 推荐机制 |
|---|---|
| 让 Copilot 了解项目规范 | 自定义指令 |
| 代码修改后自动运行检查 | Hooks |
| 特定框架的深度支持 | Skills |
| 访问外部工具/数据库 | MCP 服务器 |
| 独立处理专项任务 | Custom Agents |
| 团队共享整套配置 | Plugins |
Claude Code 也有类似的自定义机制:CLAUDE.md 对应自定义指令,Skills 对应 Claude Code 的 Skills,MCP 服务器两者都支持。如果你从 Claude Code 迁移或同时使用两者,概念上是可以平滑映射的。
常见问题
Q: 自定义指令和 Skills 有什么本质区别?
A: 自定义指令是"始终适用的背景信息",每次对话都会加载;Skills 是"按需加载的专项能力",只有在相关上下文中才激活。一般规范用自定义指令,特定工作流用 Skills。
Q: Plugins 是个人的还是企业级的?
A: 两者都有。个人开发者可以安装社区 Plugins;企业管理员可以通过 Copilot 策略管理哪些 Plugins 被允许使用。
Q: 这些自定义机制在 GitHub.com 上的 Copilot Chat 也有效吗?
A: 这些机制主要针对 Copilot CLI(独立 Agent)。GitHub.com 上的 Chat 使用的是仓库自定义指令(.github/copilot-instructions.md)这套机制,两者不共用配置。