使用 Claude Code SDK 建構自訂 AI 代理
安裝 SDK
@anthropic-ai/claude-code
:設定您的 API 金鑰
ANTHROPIC_API_KEY
環境變數:建立您的第一個代理
執行代理
@anthropic-ai/claude-code
claude
命令。使用 --print
(或 -p
)標誌以非互動模式執行並列印最終結果:標誌 | 描述 | 範例 |
---|---|---|
--print , -p | 以非互動模式執行 | claude -p "query" |
--output-format | 指定輸出格式(text 、json 、stream-json ) | claude -p --output-format json |
--resume , -r | 透過會話 ID 恢復對話 | claude --resume abc123 |
--continue , -c | 繼續最近的對話 | claude --continue |
--verbose | 啟用詳細記錄 | claude --verbose |
--append-system-prompt | 附加到系統提示(僅與 --print 一起使用) | claude --append-system-prompt "自訂指令" |
--allowedTools | 允許工具的空格分隔清單,或 允許工具的逗號分隔清單字串 | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | 拒絕工具的空格分隔清單,或 拒絕工具的逗號分隔清單字串 | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | 從 JSON 檔案載入 MCP 伺服器 | claude --mcp-config servers.json |
--permission-prompt-tool | 用於處理權限提示的 MCP 工具(僅與 --print 一起使用) | claude --permission-prompt-tool mcp__auth__prompt |
ANTHROPIC_API_KEY
環境變數,如 快速開始 中所示。
CLAUDE_CODE_USE_BEDROCK=1
環境變數並配置 AWS 憑證CLAUDE_CODE_USE_VERTEX=1
環境變數並配置 Google Cloud 憑證--allowedTools
標誌明確允許它們。MCP 工具名稱遵循 mcp__<serverName>__<toolName>
模式,其中:serverName
是來自您的 MCP 配置檔案的金鑰toolName
是該伺服器提供的特定工具mcp__<serverName>
),該伺服器的所有工具都將被允許。不支援萬用字元模式(例如 mcp__go*
)。--permission-prompt-tool
傳入一個 MCP 工具,我們將使用它來檢查使用者是否授予模型調用給定工具的權限。當模型調用工具時,會發生以下情況:
--allowedTools
和 --disallowedTools
;如果其中一個允許或拒絕工具調用,我們就繼續進行工具調用--permission-prompt-tool
中提供的 MCP 工具--permission-prompt-tool
MCP 工具會傳遞工具名稱和輸入,並且必須返回帶有結果的 JSON 字串化有效負載。有效負載必須是以下之一:
updatedInput
告訴模型權限提示改變了其輸入;否則,將 updatedInput
設定為原始輸入,如上例所示。例如,如果工具向使用者顯示檔案編輯差異並讓他們手動編輯差異,權限提示工具應該返回該更新的編輯。init
系統訊息開始,接著是使用者和助理訊息清單,最後是帶有統計資料的最終 result
系統訊息。每個訊息都作為單獨的 JSON 物件發出。
Message
和 MessageParam
類型在 Anthropic SDK 中可用。例如,請參閱 Anthropic TypeScript 和 Python SDK。
stdin
提供的訊息串流,其中每個訊息代表一個使用者輪次。這允許多輪對話而無需重新啟動 claude
二進位檔案,並允許在模型處理請求時向模型提供指導。
每個訊息都是一個 JSON ‘使用者訊息’ 物件,遵循與輸出訊息架構相同的格式。訊息使用 jsonl 格式格式化,其中每行輸入都是一個完整的 JSON 物件。串流 JSON 輸入需要 -p
和 --output-format stream-json
。
目前這僅限於純文字使用者訊息。