TodoList 中间件与文件系统 Agent
TodoList 中间件与文件系统 Agent
复杂任务需要规划,多 Agent 之间需要共享数据。这篇看两个实用组件:TodoListMiddleware 让 Agent 学会制定计划,FilesystemMiddleware 让 Agent 能读写文件。
TodoListMiddleware
Agent 拿到复杂任务时,先拆解成待办事项,再逐步执行:
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
agent = create_agent(
model=model,
tools=[internet_search, calculate],
middleware=[TodoListMiddleware()],
)
result = agent.stream({"messages": [
{"role": "user", "content": "请先规划步骤再回答:2026年春晚有什么节目?"}
]})
for step in result:
for update in step.values():
for todo in update.get("todos", []):
print("TODO:", todo)
Agent 会在回答前先列出计划,然后按计划执行。输出里除了 messages 还有 todos 字段,能看到完整的任务列表。
FilesystemMiddleware
让 Agent 能读写文件,多个 Agent 可以通过文件共享数据:
from langgraph.store.memory import InMemoryStore
from deepagents.backends import StoreBackend
from deepagents.middleware.filesystem import FilesystemMiddleware
store = InMemoryStore()
agent1 = create_agent(
model=model,
store=store,
middleware=[FilesystemMiddleware(
backend=lambda runtime: StoreBackend(runtime)
)],
)
# Agent 1 创建文件
agent1.invoke({"messages": [
HumanMessage("创建文件 cs.txt,内容是 12345678")
]})
# Agent 2 读取同一个文件
agent2 = create_agent(
model=model,
store=store, # 同一个 store
middleware=[FilesystemMiddleware(
backend=lambda runtime: StoreBackend(runtime)
)],
)
agent2.invoke({"messages": [
HumanMessage("读取 cs.txt 的内容")
]})
关键是两个 Agent 共享同一个 store 实例。InMemoryStore 用于开发测试,生产环境可以换成持久化存储。
小结
TodoListMiddleware 解决了「复杂任务需要规划」的问题,FilesystemMiddleware 解决了「多 Agent 数据共享」的问题。这两个组件结合起来,就能构建出有规划能力、能持久化产出的复杂 Agent 系统。