AI 编程教程中文版
从原理到实战

09 · 指令、Skills、Hooks 怎么分工

解释个人、仓库、组织指令,prompt files、agent skills、hooks、plugins 在 Copilot 体系里的职责边界。

让 Copilot 稳定,不是靠每次 prompt 写得更长,而是把规则、流程和控制放到正确层级。指令(instructions)、提示词文件(prompt files)、技能包(skills)、生命周期钩子(hooks)、插件(plugins)都能影响 Copilot,但它们解决的问题不同——把它们混在一起,最常见的结果是规则到处冲突、agent 行为不可预期。

本章目标:你会区分“规则注入”“任务复用”“能力包”“生命周期命令”和“分发包”,避免把所有扩展能力混成一团。

1. 先看职责图

flowchart TD
  Need["要扩展 Copilot"] --> Rule{"每次都要遵守?"}
  Rule -->|是| Instructions["Custom instructions"]
  Rule -->|否| Repeat{"是否重复任务?"}
  Repeat -->|否| Prompt["普通 prompt"]
  Repeat -->|是| Assets{"需要脚本/示例/资源?"}
  Assets -->|否| PromptFile["Prompt file"]
  Assets -->|是| Skill["Agent skill"]
  Skill --> Lifecycle{"需要固定生命周期执行?"}
  Lifecycle -->|是| Hook["Hook"]
  Lifecycle -->|否| Package{"需要跨团队分发?"}
  Hook --> Package
  Package -->|是| Plugin["Plugin"]
  Package -->|否| Local["项目内维护"]

这个图的核心判断是:规则归规则,流程归流程,命令归命令,分发归分发。

五类能力对照表(新手速查)

光看流程图还是抽象。把"团队办公"类比一下:

能力团队办公类比加载时机失败影响何时该升级
Custom instructions工位墙上的便利贴:永远在视线里每次相关请求自动注入规则错 → Copilot 一直按错的做同一规则在 ≥2 个 prompt 里手抄过,立刻沉淀进 instructions
Prompt file抽屉里的固定流程清单:要做就取你显式调用 /<name> 时加载单次任务跑偏同一 prompt 用过 ≥3 次,每次都基本一样,沉淀成 prompt file
Agent skill部门工具箱:含说明 + 脚本 + 示例任务相关时 agent 自动加载加载链断裂 / 脚本路径错 → 安静失败prompt file 满足不了,需要附脚本和示例
Hook流水线上的检查工位:固定时机执行agent 生命周期固定节点(Pre/PostToolUse 等)命令报错可能阻断 agent 整个会话必须强制阻断、记录、审批的危险操作(rm / 写敏感路径)
Plugin外购的能力包:装上就能用安装后按上面四种机制工作来源不可信 → 任意机器执行风险公司多团队复用同一套规则 + 工具

新手起步顺序:先写 instructions(10 分钟搞定的便利贴)→ 用一周后把高频 prompt 沉淀成 prompt file → 真有需要脚本时再升 skill → 必须强制控制时才上 hook → 公司级才考虑打 plugin。反过来从 plugin 起步基本都返工

2. Instructions:长期规则

Custom instructions 适合稳定、长期、广泛适用的项目规则。GitHub 官方响应定制页列出五种来源——personal(个人偏好)、repository-wide(仓库通用,写在 .github/copilot-instructions.md)、path-specific(路径专用,写在 .github/instructions/**)、agent instructions(agent 专用,如 AGENTS.md)、organization instructions(组织级),并说明它们有不同优先级。

适合:

  • 项目目录职责。
  • 技术栈和版本约束。
  • 编码规范、测试命令、审查要求。
  • 安全红线和敏感文件边界。

不适合:

  • 一次性任务。
  • 临时 bug 方案。
  • 密钥、账号、客户信息。
  • 过期迁移说明。
  • 和已有规则冲突的偏好。

3. Prompt files:重复任务

Prompt files 适合复用一类请求,例如:

  • “按团队规范写测试。”
  • “做一次 API 兼容性审查。”
  • “生成 release note 草稿。”
  • “按 PR 模板总结变更。”

它比 instructions 更适合任务型内容,因为不会污染每一次 Copilot 请求。任务经常用、但不是每次都要用,就放 prompt file。

4. Skills:能力包

VS Code 官方 Agent Skills 文档把 skill 定义为一组文件夹,里面可以有 instructions、scripts、examples 和 resources。Copilot 会在相关任务里加载它们,帮助完成特定能力。

适合 skill:

  • 测试工作流:测试命令、样例、失败排查脚本。
  • 安全审计:检查清单、敏感路径、报告模板。
  • 文档发布:frontmatter、截图流程、链接检查脚本。
  • 迁移任务:阶段步骤、验证命令、回滚策略。

一个 skill 目录至少要有 SKILL.md。如果要用脚本或示例,SKILL.md 必须显式引用它们,否则 agent 可能不会加载。

5. Hooks:生命周期控制

Hook 不是知识包,而是固定时机执行的 shell command。VS Code hooks 当前处于公开预览(public preview),Copilot CLI 也提供 hooks 能力。

典型用途:

  • PreToolUse:命令执行前检查 allowlist。
  • PostToolUse:文件编辑后跑 formatter、lint 或日志记录。
  • UserPromptSubmit:记录请求或注入可审计上下文。
  • SessionStart:检查项目状态。
  • PreCompact:压缩上下文前保存关键状态。
  • Stop:会话结束时做收尾记录。

Hook 风险更高,因为它真的会执行命令。上线前要验证命令可重复运行、失败可解释、日志不含密钥、受保护路径不能绕过。

6. Plugins:分发载体

Plugin 适合把 skills、custom agents、hooks、MCP server configurations 等组合打包分发。它解决的是安装、更新、卸载、版本管理,不是单个任务提示词。

适合 plugin:

  • 公司级工程规范包。
  • 多仓库共用测试和发布工作台。
  • skill、hook、MCP server 组合能力。
  • 需要版本和回滚的团队级分发。

安装 plugin 前,要像审代码一样看 manifest、脚本、权限、网络目标、更新机制和发布者。

7. 落地顺序

推荐顺序:

  1. 先写最小 instructions。
  2. 把重复任务沉淀成 prompt files。
  3. 需要脚本、示例、资源时升级成 skill。
  4. 必须强制校验、记录、阻断或审批时加入 hook。
  5. 需要跨团队安装更新时打成 plugin。

不要反过来。刚开始就做 plugin,通常会把还没稳定的 prompt、脚本和权限一起固化。

本章自检

上线前确认:

  • 这个能力解决的是规则、任务复用、专业能力、生命周期控制,还是分发?
  • 是否有 owner、版本、验证任务和回滚方式?
  • 是否会执行 shell 命令、访问网络或读取敏感文件?
  • 是否只在合适入口加载?
  • 是否能被禁用、卸载或替换?

通过标准:每个扩展能力都能说清职责、触发条件、权限和验证证据。

官方来源

接下来去哪

本页目录