使用文件系统实现Multi Agent间的协作
- 使用文件系统共享数据,如langgraph scratchpad和claude code 子智能体
- 使用文件系统卸载上下文,如langchain
- 使用文件系统实现分布式的agent协作,如manus
langgraph scratchpad
langgraph中可以定义一个公共的state来存储multi agent共享的state,称为scratchpad,每个agent定义自己私有state,表示自己可以接收的数据。
可以定义传递什么状态
- 共享完整思考过程:Agent间传递完整的消息历史(scratchpad),包括中间推理步骤
- 优势:帮助其他Agent做出更好决策,提升整体推理能力
- 劣势:随着Agent数量和复杂度增长,scratchpad会快速膨胀,需要额外内存管理策略
- 仅共享最终结果:Agent维护私有scratchpad,只向其他Agent传递最终结果
- 优势:适合多Agent或复杂Agent系统
- 实现:需要为不同Agent定义不同的状态模式
agent之间共享的数据格式:
1. 消息传递机制
- 共享状态通道:通过共享消息列表进行通信
- Agent标识:在消息中标注Agent名称,便于追踪消息来源
- Handoff表示:通过专用handoff工具实现Agent间控制权转移
2. 状态管理策略 - 共享消息列表:所有Agent共享同一个消息历史
- 私有消息列表:每个Agent维护独立的消息视图
- 状态模式分离:不同Agent可使用不同的状态模式
参考文档
https://langchain-ai.github.io/langgraph/agents/context/
https://blog.langchain.com/langgraph-multi-agent-workflows/
https://langchain-ai.github.io/langgraph/concepts/multi_agent/?h=scratchpad#message-passing-between-agents
claude code 子智能体
Claude Code通过文件系统实现多智能体间的上下文共享,主要采用以下技术:
1. 多层记忆架构
- 项目记忆:通过
CLAUDE.md文件存储项目架构、编码规范、技术栈信息 - 用户记忆:通过
~/.claude/CLAUDE.md存储个人偏好、编码风格、常用模式 - 分层读取:不同层级的记忆文件为Claude提供不同粒度的上下文信息
2. 文件系统共享状态
- Markdown文件通信:多个Claude代理通过共享的Markdown文件进行状态传递
- 工作票据机制:一个代理可以创建
ticket.md文件,为其他代理指定后续工作内容 - 状态持久化:利用文件系统的持久化特性,实现跨会话的上下文保持
3. 多代理协作模式
- 文件传递模式:代理A完成任务后写入状态文件,代理B读取并继续执行
- 并行协作:虽然原生不支持并行执行,但通过文件共享实现准并行协作
- 上下文继承:后续代理可以继承前面代理的工作成果和上下文信息
这种基于文件系统的上下文共享方式,充分利用了LLM强大的文件理解和处理能力,为多智能体协作提供了简单而有效的解决方案。
参考文档
https://x.com/jasonzhou1993/status/1955970025984287004
https://x.com/shao__meng/status/1956148557444211014
https://manus.im/zh-cn/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus
context offload
上下文卸载(Context Offloading)是一种优化大型语言模型性能的技术,通过将部分上下文信息从主内存中移出到外部存储,以解决上下文窗口限制和内存管理问题。
1. 核心概念
- 定义:将信息存储在LLM上下文之外的行为,通常通过工具来存储和管理数据
- 目的:避免上下文腐化(Context Rot),当信息被埋藏在上下文窗口深处时,模型在简单检索或推理任务上的准确性会以非均匀且令人惊讶的方式下降
- 解决方案:将上下文卸载到外部存储,然后根据需要选择性地加载(如通过RAG)
2. 实际应用案例
- Anthropic研究:多智能体研究中使用scratchpad将研究计划持久化到上下文窗口之外,当上下文超过200,000 tokens时避免截断
- Manus系统:将上下文卸载到文件系统,特别适用于存储token密集的工具调用,通过写入计划文件(如todo.md)并在执行过程中重写
- 产品应用:ChatGPT、Cursor、Windsurf等产品都有基于用户-智能体交互自动生成长期记忆的机制
3. 实现方式
- 运行时状态对象:scratchpad可以是运行时状态对象中的一个字段,在智能体运行时持续存在
- 工具调用写入文件:通过工具调用将信息写入文件系统
- 跨交互记忆:通过”记忆”存储跨多个用户-智能体交互的上下文信息
4. LangGraph实现
- 状态对象:LangGraph围绕状态对象设计,作为图中节点间传递的中央数据结构
- 检查点机制:将图的每个步骤状态保存到线程中,每个线程由唯一标识符引用
- 长期记忆:允许跨线程持久化特定上下文,支持保存单个文件或记忆集合
- BaseStore接口:使用键值存储,可在内存中使用或与LangGraph Platform部署一起使用
5. 技术优势
- 避免上下文腐化:防止信息在上下文窗口深处时模型性能下降
- 扩展上下文能力:突破模型原生上下文窗口限制
- 跨会话记忆:支持智能体在多次交互中记住有用信息
- 灵活存储:支持多种存储方式,从内存到文件系统到数据库
通过上下文卸载机制,开发者可以在保持模型性能的同时,有效处理更复杂和更大规模的任务。
tools 中间存储
在生产中,agent服务和mcp服务一般会部署到不同的集群中,因为mcp一般会有访问外网的诉求,所以会部署在与公网互通的集群内,两者的资源是互相隔离的。
为了实现Agent和mcp产生的数据的互通,这里会引入一个中间存储,比如数据库、文件系统,但文件系统会更加通用一些,因为大部分mcp都会基于文件系统来设计,因此我们最大的卡点在于实现文件系统的云上挂载能力: