openclaw太耗token怎么办?AI Agent 长期记忆的正确打开方式
本文探讨了AI Agent长期记忆系统的优化方案,提出分层记忆架构解决成本失控和信息断层问题。核心思路是将记忆分为三类:短期记忆(保证对话连贯)、实体画像记忆(存储结构化事实)、长期情景记忆(保存非事实语境)。同时引入"摘要-概览-详情"分层索引机制,实现按需加载记忆内容。文章建议新手从最小可行方案入手:限制上下文长度、结构化存储关键事实、选择性保存高价值情景记忆。这种分层记忆
从“你好消耗 1.5 万 token”说起:AI Agent 长期记忆的正确打开方式

如果你刚开始做 AI Agent(比如 OpenClaw / Dify / Coze / AutoGLM 这类可执行智能体),大概率会遇到两个诡异现象:
1)Agent 越用越贵:明明只问一句“你好”,却消耗了上万 token。
2)Agent 越用越笨:要么忘掉你之前说过的关键事实,要么把旧信息胡乱套用。
这不是模型突然变差,也不是你不会写 Prompt。
更核心的原因只有一个:
我们把“记忆”当成了“聊天记录”,然后把所有聊天记录塞回去让模型读。
结果就是:
- 塞得越多 → token 爆炸 → 成本失控
- 塞得越少 → 信息断层 → 行为混乱
所以长期记忆的正确问题,从来不是“存多少”,而是:
存什么?怎么存?用的时候怎么取?取多少?
这篇文章我会用最新手也能听懂的方式,把一套“可长期运行、可控成本、可精准召回”的 Agent 记忆架构讲清楚。你读完就能理解:为什么 Agent 需要分层记忆,以及如何把上下文从“全量加载”改成“按需加载”。
一、先把问题讲透:Agent 为什么会“爆炸”和“失忆”?
1)记忆爆炸:全量上下文塞进 prompt
很多同学做 Agent 的第一反应是:
“那我把历史对话都保存下来,每次都拼进 prompt,不就能记住了吗?”
看似合理,但它会很快把系统拖死:
- 历史越积越多,prompt 越来越长
- token 消耗指数级增长(尤其是有工具说明、系统提示、长对话时)
- API 调用越来越贵,本地模型也跑不动
- 更致命:模型注意力被“噪音”稀释,反而更容易答偏
你会看到这种荒诞现象:
一句“你好”,消耗上万 token。
不是“你好”值这么多钱,是因为你让模型把一整本“聊天史”重新读了一遍。
2)记忆缺失:只留最近几轮
另一种反应是:
“那我只保留最近 5~10 轮对话吧,省 token。”
这确实省钱,但会带来另一类崩溃:
- 用户之前说过的关键事实(设备、目标、偏好、约束)丢失
- Agent 每次像第一次见面一样重新问
- 执行任务时缺少边界条件 → 动作变得危险或不可靠
- 用户体验很差:“你怎么又忘了?”
3)结论:记忆不是越多越好,而是“可控 + 可用”
真正能长期跑的 Agent,必须同时满足:
- 成本可控:不能每次都把过去全塞进去
- 事实准确:对关键事实要“精准召回”,不能模糊匹配
- 语境不断裂:对话风格、情绪氛围、场景细节要能还原一部分
- 按需加载:用多少取多少,不要一次性把全部记忆拉满
这就引出了下一部分:人类是怎么做到的?
二、人类怎么记忆?这是最好的“入门类比”
想象一个问题:
“你大学住在哪?”
你会怎么回答?
你不会把大学四年所有聊天记录从头回放一遍。你更像这样:
1)先调出一个事实:城市/学校/宿舍区
2)如果对方追问,再想起当时的场景:周围环境、通勤路线、室友
3)如果再追问,再回忆更具体的细节:门牌号、哪栋楼、哪一层
注意这个顺序:
先事实(准确、短) → 再场景(丰富、有氛围) → 再细节(只有需要才想)
这就是我们要给 Agent 做的长期记忆系统:分类型 + 分层级 + 按需加载。
三、核心架构:三类记忆分离(短期 / 事实画像 / 长期情景)
我最终采用的是一种“类人”的三层记忆架构:
1️⃣ 短期记忆(Short-Term Memory,STM)
它是什么:
最近 N 轮原始对话(比如 8~20 轮)
它解决什么:
- 指代消解:“他/她/这个/那个”到底指什么
- 保持对话连贯性:刚刚你说的,模型不能忘
它的特点:
- 不做复杂检索
- 直接拼进 prompt
- 但必须严格限额(否则立刻爆炸)
一句话总结:
短期记忆负责“连贯”。
2️⃣ 实体画像记忆(Entity/Profile Memory,EPM)——核心层
这是整个系统最重要的一层。
它是什么:
把用户/项目/设备/偏好/约束等“事实型信息”提取出来,变成结构化记录。
比如用户说:
- “我用 RTX 4070 Laptop GPU”
- “我工作日通勤 07:00–08:00”
- “我的主线是 AI 应用/自动化工程”
- “我希望你用长期主义,不要让我竭泽而渔”
这些不是情绪,不是聊天氛围,而是可复用、可校验、跨会话有效的事实。
为什么必须结构化?
因为事实需要的是精准召回,而不是模糊相似。
很多新手会犯一个错:
把“事实”也塞进向量库,用向量搜索来查。
问题是:向量检索擅长“语义相似”,不擅长“事实准确”。
它可能把“我有 RTX 4070”搜成“我有 4090”附近的内容,也可能把时间、数字搞混。
所以事实型信息应该进:
- 结构化表(键值、三元组、档案式记录)
- 可加置信度、来源、时间戳
- 可更新、可覆盖、可冲突检测
一句话总结:
实体画像记忆负责“准确”。
3️⃣ 长期情景记忆(Long-Term Scene Memory,LSM)
它是什么:
记录对话中“非事实但有价值”的部分:
- 你那天很累、昏沉、头晕
- 你对某个方向焦虑或兴奋
- 你在某次项目上卡住的过程
- 你和某人关系的语气、氛围、心理线索
这些东西不一定能结构化成固定字段,但它决定了:
- 你和 Agent 的互动是否“像在跟熟悉的人说话”
- 建议是否贴合当下状态
- 推进节奏是否合适(比如你状态差,就不适合强推高强度任务)
这类记忆适合:
- 向量形式存储
- 用相似度检索找“类似情境”
- 但同样要控制量、控制调用
一句话总结:
长期情景记忆负责“语境与温度”。
四、关键升级:再加一层“摘要-概览-详情”的分层索引(像图书馆)
即使你把记忆分成 STM/EPM/LSM 三类,如果你每次都把它们原文全部加载,还是会爆炸。
所以必须引入第二个关键思路:
像图书馆一样:先看目录,再决定读哪几页。
这就是“分层索引”。
我把每条长期记忆都拆成三层:
L0:摘要层(一句话定位)
- 作用:快速判断“这条记忆跟我现在的问题有没有关系”
- 形式:一句话
L1:概览层(目录/结构导航/要点)
- 作用:在不加载原文的情况下,拿到足够的决策信息
- 形式:要点列表、结构大纲
L2:详情层(原文/证据/对话片段)
- 作用:只有在必须引用细节、需要证据、或遇到冲突时才加载
- 形式:原始记录、长文本、完整事件过程
这样你每次调用模型时,默认只带:
- EPM 的 L1(事实目录)
- LSM 的 L1(情境目录)
- STM 的最近对话(但限额)
而不是:把所有 L2 原文全部塞进去。
这一步,往往就是节省 80% token 的核心来源。
五、Agent 工作流程:一次请求是怎么“取记忆”的?
把流程说清楚,你就能写出一个能长期跑的 Agent。
当 Agent 收到用户问题时,它不是直接“把历史全拼上”,而是这样做:
Step 1:先判断本次问题属于什么类型
- 是问“事实”?(设备、计划、目标、规则)
- 是问“建议”?(健康、训练、选择、决策)
- 是问“延续对话”?(刚聊到哪了)
- 是要“执行任务”?(操作电脑、调用工具、写代码)
这一步决定“需要哪些记忆”。
Step 2:先查实体画像(EPM)——保证事实准确
- 用精准查询把相关事实拿出来
- 默认只拿 L1(要点),不拿原文
比如用户问“我现在应该怎么学习融合 openclaw?”
那你需要的是:
- 用户的主线定位、时间精力结构、学习原则(事实)
- 用户已有技术栈(Python、MySQL、Dify、OpenClaw)
- 用户的作息约束(每天可用时间)
这些都应该从 EPM 拉出。
Step 3:再查长期情景(LSM)——补语境与近期状态
- 用相似检索找最近类似情境
- 默认只拿 L1
比如用户问“今天状态昏沉怎么办?”
那你需要的是:
- 最近几天的状态记录(情景)
- 最近训练和饮食的波动(情景)
Step 4:再加短期对话(STM)——保证连贯
- 最近 N 轮原文放进来
- 但如果 token 紧,就裁剪成最近 4~8 轮
Step 5:只有必要时才升级加载 L2 详情
触发条件通常包括:
- 需要引用原话(“你之前说过一句话是什么?”)
- 出现冲突(同一事实前后不一致)
- 高风险动作(真实账号操作、付款、删除文件)
- 用户强要求“不许改动、逐字复述”
这时才把相关记忆的 L2 拉进上下文。

六、给新手的落地建议:先做“最小可用版”,不要一上来造航母
如果你是刚入门的同学,不要想着一步到位做完美系统。
最小可用版本只需要 4 件事:
1)强制限制上下文预算
- 永远不要允许“无限拼接历史”
- 先把 token 控制住
2)短期记忆只保留最近 N 轮
- N=8~20 轮即可
- 超了就丢弃(环形队列)
3)把“事实”从对话里抽出来单独存
- 用结构化方式存(哪怕是 JSON 文件也行)
- 不要把事实丢进向量库当作唯一方案
4)情景记忆只保存“值得保存的”
- 不要全量存储
- 只存“复用价值高”的事件/状态/氛围
你会发现:
只要做到这四点,你的 Agent 就已经从“玩具”进化成“能长期运行的系统”。

七、总结:长期记忆的本质不是“记住一切”,而是“按需想起”
最后用一句话收束:
Agent 的长期记忆设计,不是让它拥有无限记忆,而是让它像人一样:先记关键事实,再记重要情境,用的时候先看目录,必要时再翻原文。
当你把“记忆”从“聊天记录”升级为“分层知识系统”,Agent 才真正具备了长期可用性:
- token 消耗可控
- 事实召回准确
- 语境更像真实交互
- 系统能长期跑,不会越跑越贵、越跑越乱
更多推荐


所有评论(0)