Type: concept
Confidence: 0.90
Created: 2026-04-15
Updated: 2026-04-15
Tags: AIAgent架构协议沙箱Agent系统

DeepAgents 后端协议

概述

DeepAgents 的存储与执行抽象层(libs/deepagents/deepagents/backends/)。BackendProtocol 定义统一的文件类 API,SandboxBackendProtocol 在其上扩展 shell 执行能力。上层中间件和工具只依赖协议接口,不感知底层是内存状态、本地磁盘还是远程沙箱——实现 Agent Harness模式 中"后端换皮、工具不变"的设计原则。

关键内容

BackendProtocol(文件类 API)

方法 职责
ls(path) 列目录,返回 LsResult
read(path, offset=0, limit=2000) 分页读取,返回 ReadResult
write(path, content) 新建文件(已存在则失败),返回 WriteResult
edit(path, old, new, replace_all=False) 精确字符串替换,返回 EditResult
grep(pattern, path=None, glob=None) 字面量子串搜索(非正则),返回 GrepResult
glob(pattern, path="/") 路径 glob,返回 GlobResult
upload_files(files) 批量上传,支持部分成功
download_files(paths) 批量下载,支持部分成功

每个同步方法均有 a* 异步变体(默认 asyncio.to_thread 包装,子类可覆盖)。

SandboxBackendProtocol(执行扩展)

class SandboxBackendProtocol(BackendProtocol):
    @property
    def id(self) -> str: ...          # 实例稳定标识
    def execute(command, timeout=None) -> ExecuteResponse: ...
    async def aexecute(...): ...

仅当 backend 实现此协议,execute 工具才对 Agent 可见(FilesystemMiddleware 在运行时动态检查)。ExecuteResponseoutput(stdout+stderr 合并)、exit_codetruncated

内置后端实现

实现 特点
StateBackend 文件内容存于 LangGraph 状态通道(ephemeral,线程内持久,无磁盘暴露)。create_deep_agent 的默认后端
FilesystemBackend 读写真实文件系统,支持 virtual_mode 等安全语义
CompositeBackend 按路径前缀路由到不同后端(如 /memories/ → 持久存储后端)
BaseSandbox 实现 SandboxBackendProtocol,接入具体沙箱;合作方包(libs/partners)在此扩展
LangSmithSandbox 专用于 LangSmith 评估环境

合作方沙箱(libs/partners/)

各自独立发版:DaytonaModalQuickJSRunloop,均通过替换 Backend 层扩展执行环境,不改变上层工具语义。

关键数据类型

设计决策

  1. 统一表面、多样实现:中间件不感知磁盘与远程差异
  2. 同步优先 + 默认线程卸载:降低实现门槛
  3. 批量与部分成功:上传/下载返回列表,逐项含 error 字段
  4. 执行能力分层:文件协议与 shell 协议分离,非沙箱环境不误暴露执行面
  5. 版本化文件载荷FileFormat v1/v2 明确,降低状态迁移成本

来源

相关