Hooks 介紹
似乎沒有人對 Hooks 進行足夠的討論。
但它們可能是目前 VS Code 中最強大的功能之一。
本指南將詳細解析什麼是 Hooks、它們如何運作,以及如何利用它們來自動化您的工作流程。
先決條件
開始之前:您需要安裝 VS Code Insiders,並完成 GitHub Copilot 和 GitHub Copilot Chat 擴充功能的設定與登入。
什麼是 Hooks?
Hooks 允許您在代理程式(agent)工作階段的特定生命週期點執行自訂 Shell 指令。
Hooks 不再需要手動執行任務,而是讓您定義在事件發生時會自動執行的動作。這使其成為自動化、驗證及確保工作流程一致性的理想選擇。
總體而言,Hooks 通常用於:
- 自動化重複性任務
- 強制執行安全或編碼標準
- 在執行前後驗證變更
- 與外部工具整合
生命週期事件(Hooks 的執行時機)
VS Code 支援八種 Hook 事件,會在代理程式工作階段的特定時間點觸發:
| Hook 事件 | 觸發時機 | 常見用途 |
|---|---|---|
SessionStart |
使用者提交新工作階段的第一個提示(prompt)時 | 初始化資源、記錄工作階段開始、驗證專案狀態 |
UserPromptSubmit |
使用者提交提示時 | 稽核使用者請求、注入系統內容 |
PreToolUse |
代理程式呼叫任何工具之前 | 阻擋危險操作、要求審核、修改工具輸入 |
PostToolUse |
工具成功完成後 | 執行格式化工具、記錄結果、觸發後續動作 |
PreCompact |
對話內容壓縮之前 | 匯出重要內容、在截斷前儲存狀態 |
SubagentStart |
子代理程式(Subagent)啟動時 | 追蹤巢狀代理程式使用情況、初始化子代理程式資源 |
SubagentStop |
子代理程式完成任務時 | 彙整結果、清理子代理程式資源 |
Stop (停止) |
SessionStop | 代理程式工作階段結束時 |
生成報告、清理資源、發送通知
Hooks 依賴生命週期事件,這些事件決定了它們何時執行。
這些事件在代理程式工作階段中充當觸發點。例如,Hook 可能在工作階段開始、提交提示時或工具完成工作後執行。
範例:使用 Prettier 自動格式化
選擇正確的生命週期事件至關重要,因為它定義了您的自動化實際上何時發生。
Hooks 最實用的範例之一是自動格式化程式碼。
在這種情況下,設定一個 Hook 在每次檔案編輯後執行 Prettier。系統會確保一切保持一致,而無需手動格式化檔案。
建立 Hook
核心概念很簡單:一旦定義了動作,它就會在每次觸發時自動執行,無需人工介入。
要建立 Hook,您可以使用「代理程式自訂」(Agent Customizations)檢視並直接產生一個。
- 例如,您可以建立一個 Hook 來:
- 自動執行 Prettier
- 在工具執行完成後觸發(post tool use)
透過 Shell 指令碼執行
範例:Hook 實際運作

Copilot 可以根據您的描述為您產生 Hook,包括必要的設定和指令。

建立 Hook 後,您可能需要重新載入環境以啟用它。一旦啟用,它就會根據您定義的生命週期事件自動執行。

當您進行變更(例如更新 README 檔案中的文字)時,Hook 會在背景觸發。
為什麼 Hooks 很重要
結果是即時的:檔案在無需額外輸入的情況下被更新並格式化。Hook 會默默地為您處理這些工作。
Hooks 將自動化提升到了另一個層次。
與提示(prompts)、指令(instructions)或技能(skills)不同,Hooks 不需要您明確觸發它們。當符合條件時,它們會自動執行。
- 這改變了您的工作方式:
- 任務在背景執行
- 自動強制執行一致性
工作流程變得順暢無阻
Hooks 代表了從「手動執行」到「事件驅動自動化」的轉變。
您不再需要要求 AI 做某事,而是定義它應該何時發生,並讓系統處理剩下的工作。
下一步規劃
Hooks 有助於在不需要人為介入的情況下自動化工作流程。
如果您想了解 Hooks、代理程式、技能和指令如何共同運作,下一步就是將它們作為一個完整的系統來進行比較。