Skip to content

Copilot CLI 提供了 8 种定制化机制,从始终生效的全局指令,到特定任务的 Skills,再到与外部服务交互的 MCP Servers,以及打包分发的 Plugins。选错工具会让配置复杂化;本页帮你快速定位每种机制的适用场景。

GitHub Copilot CLI 定制化功能对比:指令、技能、工具、MCP、Hooks 全解析

8 种定制化机制总览

机制适用场景加载时机
自定义指令始终生效的团队规范、编码风格会话启动时自动加载
Skills特定任务的可复用指南按需触发(手动或自动匹配)
Tools核心操作能力(文件、Shell、GitHub)Copilot 自动调用
MCP Servers接入外部数据源和工具配置后按需调用
Hooks会话生命周期自动化和守卫特定事件触发
Subagents隔离执行的复杂子任务主代理按需启动
Custom Agents特定领域的专项角色配置任务委托时调用
Plugins打包发布的功能集合安装后生效

各机制详解

自定义指令(Custom Instructions)

是什么:启动会话时自动加载的持久规则文件,让 Copilot 始终遵循你的团队约定。

文件位置(按优先级)

  • AGENTS.md(当前目录)
  • .github/copilot-instructions.md(仓库级)
  • $HOME/.copilot/copilot-instructions.md(全局)

典型内容

markdown
- 提交代码前必须运行测试
- PR 描述要包含"测试方法"一节
- 不要修改公共 API,除非明确要求
- 使用 TypeScript,避免 `any` 类型

适合场景:所有任务都需要遵守的基础约束,不适合放太多内容(影响上下文效率)。


Skills(技能)

是什么:包含特定任务指南的 Markdown 文件,可以按任务类型触发。

结构

my-skill/
├── SKILL.md        # 核心指令(含 YAML frontmatter)
└── scripts/        # 可选:可执行脚本
└── references/     # 可选:参考文档

触发方式:手动用 @skill-name 调用,或 Copilot 根据任务描述自动匹配。

适合场景:有固定流程的重复性任务(如部署文档、代码审查检查清单),不希望这些指南"始终占用上下文"时使用 Skill 而非 Custom Instructions。


Tools(工具)

是什么:Copilot 内置的操作能力,包括:

  • 文件搜索和读取
  • 文件内容编辑
  • Shell 命令执行
  • GitHub API 交互

使用方式:通常 Copilot 自动决定调用哪个工具,也可以通过 --allow-tool/--deny-tool 明确控制。

适合场景:基础的开发操作,无需额外配置,直接使用即可。


MCP Servers

是什么:通过 Model Context Protocol 接入外部数据源和工具的服务。

可以连接的服务示例

  • 数据库(查询表结构、执行 SQL)
  • 内部 API(读取业务数据)
  • 项目管理工具(Jira、Linear)
  • 日历和通讯工具

配置方式:在 Copilot CLI 配置文件中添加 MCP Server 地址和认证信息。

适合场景:需要访问 Copilot 内置工具无法覆盖的外部系统时,添加对应的 MCP Server。


Hooks

是什么:在会话生命周期的特定时刻,自动执行你定义的 shell 命令。

支持的事件

事件触发时机
preToolUse工具调用前
postToolUse工具调用后
userPromptSubmitted用户提交提示词时
sessionStart会话开始时
sessionEnd会话结束时
errorOccurred发生错误时
agentStop主代理停止时
subagentStop子代理停止时

典型用途

bash
# 每次文件修改后自动运行代码格式化
postToolUse(write): prettier --write "**/*.ts"

# 阻止 git push(加入保护逻辑)
preToolUse(shell(git push)): ./scripts/check-before-push.sh

# 会话结束时记录统计信息
sessionEnd: ./scripts/log-session-stats.sh

适合场景:自动化守卫(防止危险操作)、日志记录、策略强制执行。


Subagents(子代理)

是什么:主代理启动的独立代理实例,拥有独立的上下文窗口

适合场景

  • 需要隔离上下文的复杂子任务(如深度代码分析不污染主会话)
  • 委托给特定 Custom Agent 处理的专项任务
  • /fleet 命令的底层实现

Custom Agents(自定义代理)

是什么:有专项领域知识、特定权限和工具配置的代理配置文件(Markdown + YAML frontmatter)。

典型用途

yaml
---
name: test-writer
description: 专注于为函数编写单元测试,只使用 write 工具,不执行 shell 命令
allowed-tools: [write, search]
---

你是一个测试专家,只为现有代码添加测试用例,不修改被测代码本身...

适合场景:特定角色(安全审查员、文档撰写者、测试工程师),或需要严格限制权限的受限代理。


Plugins(插件)

是什么:把 Skills、自定义代理、Hooks、MCP Servers 打包在一起的安装包,方便团队统一分发。

适合场景

  • 团队/组织想统一分发 Copilot 配置
  • 需要将配置作为可版本化的包管理

选择指南

问题推荐方案
所有任务都要遵守的规范Custom Instructions
特定任务的重复流程Skills
接入外部服务/数据库MCP Server
防止 AI 做危险操作Hooks
特定领域的专项代理Custom Agent
团队统一分发配置Plugin

常见问题

Q: Custom Instructions 和 Skills 该怎么选?

A: Custom Instructions 适合"每次都要遵守"的基础规范(文件始终加载,占用上下文);Skills 适合"某类任务才需要"的详细流程(按需触发,不占用平时的上下文)。重复使用的内容太长,放 Custom Instructions 会让每次请求都变慢,这时应该改用 Skill。

Q: Hooks 能阻止 AI 执行某个操作吗?

A: 可以。preToolUse 中如果脚本返回非 0 退出码,可以阻止该工具调用。这是实现"禁止 AI 执行 git push"等保护规则的方式。

Q: 插件装在哪里?

A: 插件通常安装在 ~/.copilot/plugins/ 目录,具体安装命令和结构取决于插件的发布方式。