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 命令、訪問網路或讀取敏感檔案?
  • 是否只在合適入口載入?
  • 是否能被停用、解除安裝或替換?

透過標準:每個擴充套件能力都能說清職責、觸發條件、許可權和驗證證據。

官方來源

接下來去哪

本頁目錄