託管 Agent SDK
Claude Agent SDK 與傳統的無狀態 LLM API 不同,它維護對話狀態並在持久環境中執行命令。本指南涵蓋架構、託管考慮因素以及在生產環境中部署基於 SDK 的代理的最佳實踐。
託管要求
基於容器的沙箱
為了安全和隔離,SDK 應在沙箱容器環境中運行。這提供:
- 進程隔離 - 每個會話的獨立執行環境
- 資源限制 - CPU、內存和存儲約束
- 網絡控制 - 限制出站連接
- 臨時文件系統 - 每個會話的清潔狀態
系統要求
每個 SDK 實例需要:
-
運行時依賴項
- Python 3.10+(適用於 Python SDK)或 Node.js 18+(適用於 TypeScript SDK)
- Node.js(Claude Code CLI 所需)
- Claude Code CLI:
npm install -g @anthropic-ai/claude-code
-
資源分配
- 建議:1GiB RAM、5GiB 磁盤和 1 個 CPU(根據您的任務需要進行調整)
-
網絡訪問
- 出站 HTTPS 到
api.anthropic.com - 可選:訪問 MCP 服務器或外部工具
- 出站 HTTPS 到
理解 SDK 架構
與無狀態 API 調用不同,Claude Agent SDK 作為長時間運行的進程運行,該進程:
- 在持久 shell 環境中執行命令
- 在工作目錄內管理文件操作
- 處理工具執行,包含來自先前交互的上下文
沙箱提供商選項
多個提供商專門提供用於 AI 代碼執行的安全容器環境:
生產部署模式
模式 1:臨時會話
為每個用戶任務創建一個新容器,完成後銷毀它。
最適合一次性任務,用戶可能在任務完成時仍與 AI 交互,但完成後容器會被銷毀。
示例:
- 錯誤調查和修復:使用相關上下文調試和解決特定問題
- 發票處理:從收據/發票中提取和結構化數據用於會計系統
- 翻譯任務:在語言之間翻譯文檔或內容批次
- 圖像/視頻處理:對媒體文件應用轉換、優化或提取元數據
模式 2:長時間運行的會話
為長時間運行的任務維護持久容器實例。通常在容器內根據需求運行多個 Claude Agent 進程。
最適合主動代理,它們在沒有用戶輸入的情況下採取行動、提供內容的代理或處理大量消息的代理。
示例:
- 電子郵件代理:監控傳入電子郵件並根據內容自主進行分類、回復或採取行動
- 網站構建器:為每個用戶託管自定義網站,具有通過容器端口提供的實時編輯功能
- 高頻聊天機器人:處理來自 Slack 等平台的連續消息流,其中需要快速響應時間
模式 3:混合會話
臨時容器,使用歷史和狀態進行補充,可能來自數據庫或 SDK 的會話恢復功能。
最適合與用戶進行間歇性交互的容器,啟動工作並在工作完成時關閉,但可以繼續。
示例:
- 個人項目經理:幫助管理進行中的項目,進行間歇性檢查,維護任務、決策和進度的上下文
- 深度研究:進行多小時的研究任務,保存發現並在用戶返回時恢復調查
- 客戶支持代理:處理跨越多次交互的支持票證,加載票證歷史和客戶上下文
模式 4:單一容器
在一個全局容器中運行多個 Claude Agent SDK 進程。
最適合必須密切協作的代理。這可能是最不受歡迎的模式,因為您必須防止代理相互覆蓋。
示例:
- 模擬:在模擬中相互交互的代理,例如視頻遊戲。
常見問題
我如何與我的沙箱通信?
在容器中託管時,公開端口以與您的 SDK 實例通信。您的應用程序可以公開 HTTP/WebSocket 端點供外部客戶端使用,而 SDK 在容器內部運行。
託管容器的成本是多少?
我們發現服務代理的主要成本是令牌,容器根據您配置的內容而異,但最低成本大約是每小時運行 5 美分。
何時應該關閉空閒容器與保持它們溫暖?
這可能取決於提供商,不同的沙箱提供商將允許您設置不同的空閒超時標準,之後沙箱可能會關閉。 您需要根據您認為用戶響應可能的頻率來調整此超時。
我應該多久更新一次 Claude Code CLI?
Claude Code CLI 使用 semver 進行版本控制,因此任何破壞性更改都將進行版本控制。
我如何監控容器健康和代理性能?
由於容器只是服務器,您用於後端的相同日誌記錄基礎設施將適用於容器。
代理會話在超時前可以運行多長時間?
代理會話不會超時,但我們建議設置 'maxTurns' 屬性以防止 Claude 陷入循環。