多 Agent 很爽,直到你发现:它们活得像一群陌生人。
这篇文章把我在使用 OpenClaw(以及类似的多 Agent 框架)时遇到的“记忆问题”拆开讲清楚,并给出一套可以快速落地的改造思路:
- L0/L1/L2 三层按需加载:先读索引,再读摘要,最后才读全文
- P0/P1/P2 生命周期标签:给记忆加“保质期”,控制膨胀
- shared-memory 共享层:解决 Agent 之间的信息孤岛
思路受 OpenViking(字节跳动开源项目)启发:
把 Agent 的记忆当“文件系统”来管理,而不是当“文档”从头读到尾。
1. 真实痛点:为什么多 Agent 会“失忆”且“烧钱”#
如果你跑过多个 Agent,大概率见过这些场景:
- 每次开新对话都要重新自我介绍
- 你刚说完“写作风格/目标读者/偏好”,下次它又问一遍。
- Agent A 做完的事,Agent B 完全不知道
- 技术 Agent 修好了一个配置问题;你让写作 Agent 写复盘,它却要你从头复述。
- 聊了半小时的上下文,一刷新全没了
- 你不得不把背景信息再喂一遍。
这些问题的根源通常只有一句话:
Agent 之间没有共享记忆,且每次“全量读记忆”会导致 token 线性燃烧。
于是出现两个副作用:
- 重复交代 = 重复花钱(token 成本)
- 信息孤岛 = 协作效率低(多 Agent 变成多段单聊)
2. 核心理念:把记忆当“文件系统”,而不是当“文档”#
想象你打开电脑找资料:
- 你不会把硬盘里所有文件全文读一遍
- 你会先看“目录/文件夹名”(索引)
- 再打开目标文件
对 Agent 记忆也应如此。
3. L0/L1/L2:三层按需加载(Layered Memory Loading)#
把记忆分为三层:
- L0:目录索引(Index)
- 只回答:记忆里有哪些“主题/文件/类别”
- L1:内容摘要(Summary)
- 只回答:某个主题/文件讲了什么(可控的几百 tokens)
- L2:完整内容(Full Text)
- 只有确认需要时才加载全文(几千 tokens 甚至更多)
一个常见的 token 量级(仅作直觉参考):
- L0:~100 tokens
- L1:~500 tokens
- L2:~5000+ tokens
3.1 读取策略(从“每次全读”→“按需读取”)#
- Agent 启动时只读 L0:先知道“都有什么”
- 需要某类信息时读 L1:确认是否命中
- 确认需要再读 L2:加载全文
这能把大量“无效全量加载”的 token 消耗砍掉。
4. P0/P1/P2:给记忆加“保质期”(Lifecycle / TTL)#
光分层不够,记忆会随着时间膨胀。解决办法是引入生命周期标签:
- P0:核心信息(永久)
- 例如:你的称呼、写作风格、关键系统配置
- P1:活跃项目(保留 90 天,之后归档)
- 例如:当前正在推进的项目、正在调试的功能
- P2:临时信息(保留 30 天,之后清理/归档)
- 例如:某次对话的细节、临时 debug 记录
配合一个每天跑一次的脚本:
- P1 超过 90 天 → 自动归档
- P2 超过 30 天 → 自动清理/归档
记忆不会无限膨胀,但需要时仍能从归档中找回来。
5. shared-memory:建立共享记忆层,打破“信息孤岛”#
多 Agent 协作最大的问题是:你告诉 A 的偏好,B 不知道;你和 C 确认的方案,D 没听说过。
建议建立一个所有 Agent 都能读取的共享目录:
shared-memory/
├── .abstract # 共享记忆索引(L0)
├── user-profile.md # 用户画像(所有 Agent 共用)
├── active-tasks.md # 当前进行中的任务
└── cross-agent-log.md # 跨 Agent 协作结论日志5.1 不写代码也能“自动写共享记忆”#
一个实用的规则是:
完成重要任务后,把关键结论追加到
shared-memory/cross-agent-log.md。
格式建议:
- [2026-02-24] [Tech Agent] 修复了 X 问题:根因是 Y,解决方案是 Z。
- [2026-02-24] [Writer Agent] 文章结构定稿:A/B/C 三段,读者画像为 D。只记结论,不记过程;每条不超过两行。
在 OpenClaw 的工作流里,可以把这条规则写进 AGENTS.md(相当于工作手册),让所有 Agent 在完成任务时遵守。
6. 30 分钟落地路线图(三步走)#
第一步:给每个 Agent 加 .abstract 索引(10 分钟)#
在每个 Agent 的 memory/ 目录下创建一个 .abstract 文件(就是 L0):
# memory/.abstract
- 用户偏好:写作风格、发布节奏、目标读者
- 系统配置:Agent 列表、通信方式、模型设置
- 项目记录:当前创作任务、历史发布文章
- 工具笔记:常用命令、API 配置、踩坑记录第二步:给记忆条目打 P 标签(10 分钟)#
在记忆文件条目前加标签:
## [P0] 用户基本信息
- 称呼:xxx
- 写作风格:大白话、第一人称、短句
## [P1] 当前项目:xxx
- 状态:进行中
- 截止:2026-03-01
## [P2] 2026-02-21 临时对话记录
- 讨论了文章大纲
- 确定了标题方案再配一个简单清理脚本(每天扫一次)。
第三步:建立共享记忆层(10 分钟)#
按上一节创建 shared-memory/,并将“共享记忆规则”写进工作手册。
7. 可复用 Prompt:让 Agent 生成配置与脚本#
你可以把下面 Prompt 交给 OpenClaw(或你自己的 Agent Runner),让它直接生成所需文件与脚本:
请根据“文件系统式记忆管理”的方案,给我的 OpenClaw 多 Agent 系统接入分层记忆管理:
1. 为每个 Agent 的 memory 目录添加 .abstract 索引文件(L0)
2. 实现 L0/L1/L2 三层记忆架构(按需加载)
3. 引入 P0/P1/P2 生命周期标签系统(TTL/归档/清理)
4. 创建跨 Agent 的共享记忆层 shared-memory/(包含 .abstract、user-profile、active-tasks、cross-agent-log)
请直接生成所需的配置文件和脚本。8. 最后一句话(真正的结论)#
多 Agent 的记忆问题,核心就两件事:
- 分层加载:不要每次全读,先看目录再按需取
- 共享记忆:让 Agent 之间能互相通气
当记忆变成“文件系统”,你就能既省 token,又提升协作效率。