§10 长期记忆:AGENTS.md 让代理记得住
先给结论:用 AGENTS.md 文件存"持久偏好"。它每轮都加载——和 Skills 的渐进式披露不同。
我一开始把 AGENTS.md 和 Skills 搞混了。 区别一句话:Skills 用到才加载,AGENTS.md 每轮都加载。
AGENTS.md 该放什么?放"身份、约定、偏好"这种恒定信息。
agent = create_deep_agent(
model="...",
memory=["/AGENTS.md"], # 每轮加载
checkpointer=MemorySaver(),
)
它和 Skills 的关键差别
| 维度 | AGENTS.md (memory) | SKILL.md (skills) |
|---|---|---|
| 加载时机 | 每轮都加载 | 用到才加载 |
| 适合内容 | 身份、偏好、约定 | 领域知识、流程 |
| 是否可被忽略 | 否 | 模型自行判断是否触发 |
两种后端的播种方式
# StateBackend:用 files 参数播种
agent = create_deep_agent(
model="...",
memory=["/AGENTS.md"],
backend=StateBackend(),
)
# StoreBackend:用 store.put() 预填
store.put(("namespace",), key="AGENTS.md", value=content)
标叔的经验:我曾把"运行时指令"塞进 AGENTS.md,比如"严格保留原图外观"。结果每轮都占上下文,还很怪。运行时指令该放 Skill 或 system_prompt。AGENTS.md 只放真正持久的东西。
标叔的结论:AGENTS.md 是代理的"性格与习惯"。少而精,别当垃圾桶。
注意:AGENTS.md 每轮加载。内容越长,每轮越费 token。只放恒定信息。
下一章,讲怎么看清代理在干嘛:流式输出。