模組 1:核心 Agent 4 / 6
初階
Session 4 子代理 上下文 架構
子代理與上下文隔離
學習 Claude Code 如何產生具有乾淨上下文視窗的子代理 — 實現平行工作、保護父級上下文,以及處理複雜子任務。
2026年3月20日 · 17 分鐘閱讀
你將學到什麼
當 Claude Code 遇到複雜子任務 — 例如探索程式碼庫或研究 API — 它不一定在主對話中處理。相反,它可以產生一個子代理:一個擁有自己乾淨上下文視窗的子進程。
完成後,你將了解:
- 為什麼上下文隔離很重要
- 子代理如何被產生和管理
- 父子通訊模式
- 何時使用子代理 vs. 直接執行
問題是什麼
每個 token 都很重要。上下文視窗(AI 一次可以處理的文字總量)是有限的。當 Claude Code 讀取大型檔案、執行複雜搜尋或探索多個目錄時,所有這些輸出都消耗上下文。
問題:研究工作會污染工作上下文。 如果 Claude Code 讀取 50 個檔案來找到正確的那個,那 49 個不相關的檔案內容仍然在上下文視窗中,使後續工作效果降低。
如何運作
子代理模式
┌─────────────────────────────────────────┐
│ 父代理 │
│ │
│ 訊息: [使用者提示, ...] │
│ │
│ "我需要找到 auth 實作在哪裡。 │
│ 讓我產生一個探索代理。" │
│ │ │
│ │ 產生 │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ 子代理 │ │
│ │ 訊息: [僅任務提示] │ │
│ │ │ │
│ │ • 讀取檔案 A(不相關) │ │
│ │ • 讀取檔案 B(不相關) │ │
│ │ • 讀取檔案 C(找到了!) │ │
│ │ │ │
│ │ 返回: "Auth 在 │ │
│ │ src/middleware/auth.ts, │ │
│ │ 使用 JWT 和刷新 token..." │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ │ 結果(僅摘要) │
│ ▼ │
│ 父代理收到:簡潔摘要 │
│ (不是子代理讀取的所有檔案) │
│ │
└──────────────────────────────────────────┘
關鍵洞見:只有結果流回,而非完整的探索歷史。父代理的上下文保持乾淨。
上下文視窗比較
沒有子代理:
父級上下文: [使用者提示] + [50 個檔案讀取] + [實際工作]
└── 上下文視窗幾乎耗盡 ──┘
有子代理:
父級上下文: [使用者提示] + [代理結果: 200 字] + [實際工作]
└── 上下文視窗大部分可用 ──┘
子級上下文: [任務提示] + [50 個檔案讀取] + [摘要]
└── 獨立上下文,完成後丟棄 ──┘
關鍵洞見
子代理不只是關於平行處理 — 它們是關於上下文管理。 AI 編程會話中最珍貴的資源是上下文視窗空間。上下文中每個不必要的 token 都會降低後續工作的品質。
把它想像成真實團隊中的委派:
- 你(父代理)專注於大局
- 團隊成員(子代理)做研究並回報
- 你只需要知道結論,而不是他們採取的每一步
模型選擇
為任務選擇合適的模型:
Haiku(快速,便宜):
→ 簡單搜尋、檔案探索、列舉任務
Sonnet(平衡):
→ 程式碼分析、重構計劃、中等複雜度
Opus(強大):
→ 複雜推理、架構決策、關鍵任務
前後對比
| 沒有子代理 | 有子代理 |
|---|---|
| 所有工作在一個上下文中 | 研究在子級,決策在父級 |
| 上下文很快填滿 | 上下文保持乾淨 |
| 順序探索 | 可以平行探索 |
| 一個模型處理所有 | 每個任務用合適的模型 |
下一堂課
第 5 堂課涵蓋 Skills 與知識載入 — Claude Code 的雙層注入系統如何預先載入 skill 名稱,但延遲載入完整定義直到需要時,保持系統提示精簡。