Backend 系统设计
BackendProtocol 抽象 Agent 的「虚拟文件系统」与部分执行环境;Filesystem middleware 的工具调用最终落到 Backend 实现。
1. 为何抽象 Backend
| 需求 | Backend |
|---|---|
| 开发调试 | 内存 State |
| 跨会话 | Store / DB |
| 真磁盘 | Filesystem |
| 隔离执行 | Sandbox |
| 混合 | Composite 按路径路由 |
2. 协议能力(概念)
| 操作 | 用途 |
|---|---|
ls / read | 列目录、读文件 |
write / edit | 创建、字符串替换编辑 |
grep / glob | 搜索(视实现) |
| 执行 | Sandbox 后端可跑命令 |
返回结构化结果供工具格式化给模型。
3. 实现类型
| 实现 | 场景 |
|---|---|
| StateBackend | 默认,状态存在 LangGraph state |
| StoreBackend | 长期 KV,跨 thread |
| FilesystemBackend | 映射真实目录(需权限管控) |
| CompositeBackend | 前缀 /mem/ vs /disk/ 分流 |
| SandboxBackend | 容器/沙箱内执行 |
4. 工厂与默认
createDeepAgent({ backend }) 接受实例或工厂;未指定时用 StateBackend,与 checkpointer 配合可持久化 state 内文件字段。
5. 与 Middleware
Filesystem middleware 只调协议,不直接 fs.readFile,便于测试替换成内存实现。
6. 错误与性能
- 路径不存在、权限拒绝 → 工具返回明确错误文本供模型修正。
- 大文件应分块 read 或 eviction(见 05),避免一次塞进 context。
7. 总结
换存储 = 换 Backend 实现,无需改 Agent 图结构。