agents
參數在 SDK 中定義和使用子代理。
概述
在使用 SDK 時,子代理可以通過兩種方式定義:- 程式化 - 在您的
query()
選項中使用agents
參數(推薦用於 SDK 應用程式) - 基於檔案系統 - 將帶有 YAML 前置資料的 markdown 檔案放置在指定目錄中(
.claude/agents/
)
agents
參數的程式化方法,這為 SDK 應用程式提供了更整合的開發體驗。
使用子代理的好處
上下文管理
子代理與主代理保持獨立的上下文,防止資訊過載並保持互動的專注性。這種隔離確保專門化任務不會用無關細節污染主對話上下文。 範例:research-assistant
子代理可以探索數十個檔案和文件頁面,而不會用所有中間搜尋結果混亂主對話 - 只返回相關發現。
並行化
多個子代理可以同時運行,大幅加速複雜工作流程。 範例:在程式碼審查期間,您可以同時運行style-checker
、security-scanner
和 test-coverage
子代理,將審查時間從分鐘縮短到秒。
專門化指令和知識
每個子代理都可以有量身定制的系統提示,具有特定的專業知識、最佳實踐和約束。 範例:database-migration
子代理可以擁有關於 SQL 最佳實踐、回滾策略和資料完整性檢查的詳細知識,這些在主代理的指令中會是不必要的雜訊。
工具限制
子代理可以限制為特定工具,降低意外操作的風險。 範例:doc-reviewer
子代理可能只能存取 Read 和 Grep 工具,確保它可以分析但永遠不會意外修改您的文件檔案。
建立子代理
程式化定義(推薦)
使用agents
參數直接在您的程式碼中定義子代理:
AgentDefinition 配置
欄位 | 類型 | 必需 | 描述 |
---|---|---|---|
description | string | 是 | 何時使用此代理的自然語言描述 |
prompt | string | 是 | 代理的系統提示,定義其角色和行為 |
tools | string[] | 否 | 允許的工具名稱陣列。如果省略,繼承所有工具 |
model | 'sonnet' | 'opus' | 'haiku' | 'inherit' | 否 | 此代理的模型覆蓋。如果省略,預設為主模型 |
基於檔案系統的定義(替代方案)
您也可以將子代理定義為特定目錄中的 markdown 檔案:- 專案級別:
.claude/agents/*.md
- 僅在當前專案中可用 - 使用者級別:
~/.claude/agents/*.md
- 在所有專案中可用
agents
參數)優先於同名的基於檔案系統的代理。
SDK 如何使用子代理
使用 Claude Agent SDK 時,子代理可以程式化定義或從檔案系統載入。Claude 將:- 載入程式化代理 從您選項中的
agents
參數 - 自動偵測檔案系統代理 從
.claude/agents/
目錄(如果未被覆蓋) - 自動調用它們 基於任務匹配和代理的
description
- 使用它們的專門化提示 和工具限制
- 為每個子代理調用維護獨立上下文
agents
參數)優先於同名的基於檔案系統的代理。
範例子代理
有關子代理的全面範例,包括程式碼審查員、測試運行器、除錯器和安全稽核員,請參閱主要子代理指南。該指南包括詳細的配置和建立有效子代理的最佳實踐。SDK 整合模式
自動調用
SDK 將根據任務上下文自動調用適當的子代理。確保您代理的description
欄位清楚地指示何時應該使用它:
明確調用
使用者可以在他們的提示中請求特定的子代理:動態代理配置
您可以根據應用程式的需求動態配置代理:工具限制
子代理可以通過tools
欄位限制工具存取:
- 省略該欄位 - 代理繼承所有可用工具(預設)
- 指定工具 - 代理只能使用列出的工具