Skip to content

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)这套机制,两者不共用配置。