TodoList 中间件与文件系统 Agent

Published by rcdfrd on 2026-02-24

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 系统。