第 8 課:進階功能
學習目標
完成本課程後,您將能夠:
- 使用子代理進行專門任務(Explore、Plan、Bash)
- 執行和管理背景任務
- 設定鉤子進行自動化
- 理解工作階段管理
- 管理脈絡壓縮
先決條件
- 完成第 1-7 課 - 核心操作、技能和配置
- 舒適的基本工作流程 - 檔案操作和權限
- 多專案經驗 - 至少在 2-3 個專案上工作過
預估時間: 30 分鐘
子代理
子代理是 Claude Code 可以啟動以處理特定類型任務的專門代理。
什麼是子代理?
將子代理想像成專家:
- Main Claude(專案經理) = 協調一切
- 子代理 = 處理特定任務的專家
為什麼使用子代理
專注:
- 每個代理專注於一件事
- 不同任務的獨立脈絡
- 優化工作
效率:
- 並行處理獨立任務
- 更快的工作流程
優化:
- 針對工作的工具
- 在某些任務上更快的工具
- 更好的工作流程
三種子代理類型
1. Explore Agent
用途: 快速探索和理解程式庫
何時使用:
- "authentication 如何實作?"
- "哪些檔案處理使用者輸入?"
- "API 端點 X 在哪裡?"
- 理解新專案
如何運作:
- 使用 Glob 和 Grep 廣泛探索
- 並行讀取多個檔案
- 建立程式庫的心智地圖
- 報告回發現
2. Plan Agent
用途: 在執行前設計實作策略
何時使用:
- "新增使用者驗證"
- "重構為使用 TypeScript"
- 複雜的多檔案變更
- 架構決策
如何運作:
- 分析需求
- 探索程式庫
- 建立逐步計畫
- 識別相依性
- 呈現供審查
3. Bash Agent
用途: 安全地執行命令列任務
何時使用:
- 執行建置腳本
- 安裝相依性
- 執行測試
- 任何終端機操作
如何運作:
- 存取專用 Bash 工具
- 可執行多個命令
- 優雅地處理錯誤
- 報告命令輸出
叫用子代理
自動叫用: Claude 自動選擇何時使用子代理。
手動叫用:
You: 使用 Explore agent 查找所有資料庫查詢
背景任務
背景任務允許長時間運作在您處理其他事時繼續。
為什麼需要背景任務
問題: 某些操作需要時間
- 執行完整測試套件
- 大型檔案搜尋
- 處理多個檔案
- 監看檔案變更
解決方案: 在背景執行它們
- 繼續工作
- 檢查進度
- 完成時非同步處理
啟動背景任務
方法 1:明確背景請求
You: 在背景執行完整測試套件
方法 2:背景旗標
claude --background "npm test"
方法 3:對話期間
You: 搜尋所有 Python 檔案中的 TODO 註解
Claude: 這將需要一陣子。在背景執行?
[任務在背景執行]
鉤子與自動化
鉤子允許您在事件發生時自動觸發動作。
什麼是鉤子
鉤子是腳本或命令,當特定事件發生時自動執行。
Hook 事件:
pre-tool- 任何工具使用前post-tool- 工具完成後pre-commit- git commit 前post-commit- git commit 後on-edit- 編輯檔案時session-start- 工作階段啟動時session-end- 工作階段結束時
配置鉤子
在設定檔中:
{
"hooks": {
"pre-commit": ["npm run lint", "npm run test"],
"on-edit": ["./scripts/format.sh"]
}
}
工作階段管理
Claude Code 工作階段可以持久化和恢復。
工作階段持久性
儲存的內容:
- 對話歷史
- 檔案操作脈絡
- 任務狀態
- 使用的設定
工作階段儲存在:
- Linux/macOS:
~/.local/state/claude-code/sessions/ - Windows: `%LOCALAPPDATA%\claude-code\sessions``
恢復工作階段
方法 1:自動恢復
claude --resume
恢復最近的工作階段。
方法 2:特定工作階段
claude --resume session-id
方法 3:期間工作階段
You> /sessions
[列出可用工作階段]
You: 恢復工作階段 abc123
✅ 檢查您的理解
-
哪個子代理專門探索程式庫?
- Plan Agent
- Bash Agent
- Explore Agent
- Search Agent
-
背景任務的用途是什麼?
- 執行任務在背景時繼續工作
- 刪除舊檔
- 管理權限
- 使用更快的工具
-
哪個 hook 在 git commit 前執行?
- post-commit
- pre-commit
- on-edit
- session-start
-
True or False: 您可以恢復之前的 Claude Code 工作階段。
- True
- False
-
脈絡壓縮做什麼?
- 刪除舊對話
- 壓縮對話歷史以節省 tokens
- 加密對話
- 匯出對話到檔案
答案: 1-c, 2-a, 3-b, 4-True, 5-b
⭐ 2.1.33 新增:進階代理功能
Claude Code 2.1.33 引入幾個建構在本課程概念上的進階功能。
代理團隊(第 18 課)
雖然子代理獨立工作,但代理團隊在分割窗格終端機中一起工作:
// settings.json
{
"teammateMode": "tmux",
"agentTeams": {
"fullstack": {
"teammates": [
{"name": "backend", "systemPrompt": "後端開發"},
{"name": "frontend", "systemPrompt": "前端開發"}
]
}
}
}
與子代理的主要差異:
- 視覺化協作 - 即時看到隊友工作
- 直接訊息傳遞 - 隊友之間互傳訊息
- 分割窗格 - tmux、WezTerm、iTerm2 支援
- spawnTeam 工具 - 以程式設計方式建立團隊
深入瞭解: 第 18 課:代理團隊與隊友
增強的鉤子(第 20 課)
鉤子現已可用於技能、代理和指令:
---
name: deploy
hooks:
pre-tool:
command: ./scripts/pre-deploy.sh
post-tool:
command: ./scripts/notify.sh
---
新的鉤子功能:
- 技能鉤子 - 技能的前/後工具執行
- 代理鉤子 - 子代理開始/停止鉤子
- 權限鉤子 - 自動批准/拒絕模式
- 逾時:10 分鐘 - 從 60 秒增加
深入瞭解: 第 20 課:2.1.x 進階功能
萬用字元權限(第 20 課)
使用萬用字元簡化權限規則:
{
"permissions": {
"allowedOperations": [
"Bash(npm *)", // 所有 npm 指令
"Bash(git *)", // 所有 git 指令
"Bash(* test)", // 任何測試指令
"Read(*.md)" // 所有 markdown 檔案
]
}
}
工作階段分叉(第 20 課)
使用工作階段分叉安全實驗:
# 分叉目前工作階段
claude --fork-session
# 倒轉到先前點
/rewind
外部編輯器(第 20 課)
按 Ctrl+G 在您喜愛的編輯器中編輯提示:
export EDITOR=vim # 或 nano、code 等
# 在 Claude Code 中
[輸入提示... 按 Ctrl+G]
[Vim 開啟您的提示]
[編輯並儲存]
[提示在 Claude 中更新]
總結
在本課程中,您學到了:
- 子代理 - Explore、Plan、Bash 專家
- 背景任務 - 非同步執行
- 鉤子 - 事件驅動的自動化
- 工作階段管理 - 持久化和恢復
- 脈絡壓縮 - 管理長對話
下一步
在**第 9 課:Git 整合**中,您將學到:
- 使用 Claude 進行 git 操作
/commitskill- 建立拉取請求
- 搜尋 git 歷史
進階閱讀
繼續至第 9 課:Git 整合 →