可插拔后端架构
Pluggable Backend Architecture
通过协议抽象实现文件操作和执行环境的可插拔后端
子问题
1.统一文件操作协议定义
2.多后端实现与组合
3.工厂模式延迟创建
4.跨后端一致性保证
5.同步异步双轨接口设计
6.路径前缀路由与结果重映射
7.大型工具结果驱逐到后端存储
各项目的解法1 solutions
Signals
横向对比
| 维度 | DeepAgents |
|---|---|
| 接口定义方式 | ABC 基类 + NotImplementedError,不标 @abstractmethod 允许渐进实现 |
| 后端种类 | 5 种:State(内存)/ Store(持久)/ Filesystem(磁盘)/ LocalShell(磁盘+shell)/ Composite(路由组合) |
| 组合机制 | CompositeBackend 按路径前缀最长匹配路由,聚合查询自动合并多后端结果 |
| 延迟创建 | BackendFactory = Callable[[ToolRuntime], BackendProtocol],中间件 _get_backend() 运行时解析 |
| 同步异步 | 每个方法 sync + async 双版本,async 默认 asyncio.to_thread 包装 sync |
| 执行能力 | SandboxBackendProtocol 扩展接口,execute_accepts_timeout 反射检查向后兼容 |
| 状态同步 | CompositeBackend 写入后 best-effort 同步 files_update 到 default 后端 state |
最佳实践
1.定义 Protocol 接口而非抽象基类
2.支持 CompositeBackend 组合多后端能力
3.async 默认用 asyncio.to_thread 包装 sync,子类可覆盖提供原生 async
4.CompositeBackend 聚合查询时自动还原路径前缀
5.BackendFactory 延迟到工具调用时创建,确保拿到最新 runtime 上下文
6.execute_accepts_timeout 用 lru_cache + inspect.signature 做向后兼容检查