系列文章: Deepagent (6/10)

可插拔後端:In-Memory、Disk、LangGraph Store、Sandbox 怎麼選
上一篇說到代理人有虛擬 Filesystem——但那個 Filesystem 的底層是什麼?資料到底存在哪裡?
Deep Agents 的 Filesystem 設計是「後端可插拔」的,你可以根據場景換掉底層的儲存實作。這個設計看起來很工程師味,但實際上背後的選擇邏輯蠻直覺的——就是「我現在需要的是快速測試、持久保存、還是隔離執行」這三個問題。
四種後端,四種場景
1. In-Memory(記憶體)
最快、最輕,什麼都不用設定。代理人結束後,資料跟著消失。
適合場景:
- 開發和測試——你不在乎資料,你只想看代理人的行為
- 短暫任務——任務完成後不需要保留中間檔案
- 原型驗證——先讓邏輯跑通,後面再換正式後端
from deepagents import create_deep_agent
from deepagents.backends import InMemoryBackend
agent = create_deep_agent(
tools=[...],
filesystem_backend=InMemoryBackend(),
)不傳 filesystem_backend 的話,預設就是 In-Memory。
2. 本地磁碟(Local Disk)
資料寫到你指定的目錄,代理人結束後依然存在。可以用一般的檔案工具去看、編輯、備份。
適合場景:
- 本地開發,你想在執行後直接用
cat或文字編輯器看代理人產出了什麼 - 任務結果需要持久保存,但只需要單機使用
- 除錯——直接翻資料夾看代理人做了什麼
from deepagents.backends import LocalDiskBackend
agent = create_deep_agent(
tools=[...],
filesystem_backend=LocalDiskBackend(base_dir="./agent_workspace"),
)3. LangGraph Store(跨 Thread 持久化)
資料存在 LangGraph 的 Memory Store,可以跨 thread、跨 session 存取。主要用在需要長期記憶的場景(下一篇會深入講),但它也可以單獨當 Filesystem 後端用。
適合場景:
- 代理人需要在不同對話之間保留工作狀態
- 多個代理人需要共用同一個 Filesystem
- 任務可能被打斷,下次對話要從中途繼續
from langgraph.store.memory import InMemoryStore
from deepagents.backends import LangGraphStoreBackend
store = InMemoryStore() # 或換成 PostgresStore 等持久化實作
agent = create_deep_agent(
tools=[...],
filesystem_backend=LangGraphStoreBackend(store=store),
)4. Sandbox(隔離執行環境)
代理人的 Filesystem 和程式碼執行都在隔離環境裡跑——支援 Modal、Daytona、Deno。
適合場景:
- 代理人需要執行來自用戶的程式碼(不能直接在你的機器上跑)
- 需要隔離不同任務的執行環境,避免相互影響
- 雲端部署,需要彈性的計算資源
from deepagents.backends import ModalBackend # 或 DaytonaBackend, DenoBackend
agent = create_deep_agent(
tools=[...],
filesystem_backend=ModalBackend(),
)Sandbox 後端設定相對複雜,需要對應平台的帳號和設定,但安全隔離和彈性計算是它的核心優勢。
選擇矩陣
| 需求 | 建議後端 |
|---|---|
| 開發和測試 | In-Memory(預設) |
| 本地持久化、方便除錯 | Local Disk |
| 跨 session 保留狀態 | LangGraph Store |
| 需要執行不受信任的程式碼 | Sandbox |
| 多代理人共用 Filesystem | LangGraph Store |
| 雲端部署 + 彈性計算 | Sandbox |
後端可以組合用嗎
可以——Deep Agents 支援 Composite 後端,根據路徑或規則,把不同的檔案路由到不同的後端:
from deepagents.backends import CompositeBackend
agent = create_deep_agent(
tools=[...],
filesystem_backend=CompositeBackend(
backends={
"/tmp/": InMemoryBackend(), # 暫存就用記憶體
"/results/": LocalDiskBackend("./output"), # 最終結果存磁碟
}
),
)這個設計在複雜任務裡很有用:暫存資料用記憶體(快),需要保留的最終結果存磁碟(持久),不用為了所有資料選同一個後端。
從開發到生產的後端遷移策略
推薦的遷移路徑:
- 原型階段:In-Memory,什麼都不用設定,先讓邏輯對
- 本地開發:Local Disk,可以直接看代理人產出的檔案
- 整合測試:LangGraph Store,測試跨 session 的行為
- 生產部署:視需求——如果是 SaaS 用 LangGraph Store,如果需要代碼執行用 Sandbox
不同後端的 API 是一樣的,切換只要換 filesystem_backend 的參數,不需要改其他地方。
一個關鍵提醒
Sandbox 後端很強大,但它不等於「讓代理人連上網際網路做任何事」——Sandbox 控制的是執行隔離,不是網路訪問控制。如果你需要限制代理人能存取什麼資源,那是另一層安全設計,不在 Filesystem 後端的範疇裡。
上一篇:Filesystem 工具:用檔案管理 Context,不讓 Token 爆炸 下一篇:Subagents:用 task 工具把複雜任務分包出去