问题域/PD-434

可插拔后端架构

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 做向后兼容检查