OpenClaw 为什么又贵又健忘?OpenViking 基本上就是来治这个的

OpenClaw 为什么又贵又健忘?OpenViking 基本上就是来治这个的

OpenClaw 的对话一长,贵和健忘往往会一起出现。OpenViking 本质上是在给 OpenClaw 补一层上下文治理。

发布于 2026/04/02
更新于 2026/06/26
7 分钟阅读
44 次阅读

一句话总结:OpenViking 会把“原样堆历史”的长会话,改成“先召回该带的,再归档该存的”。

OpenClaw 的对话一长,贵和健忘往往会一起出现。
前面的历史越堆越厚,每一轮都要再带一次;真到该用时,关键偏好和结论还埋在流水账里。

我这次回头看这条链路,最有用的判断其实很简单:
OpenViking 本质上是在给 OpenClaw 补一层上下文治理。它管的不是“记不记得”这一个点,而是每一轮回复前到底该带什么、该放远什么、该把什么沉成以后还能命中的记忆。

所以它同时碰两件事。
一边让 prompt 不再一路膨胀。
一边让长期信息不必每次都靠整段聊天硬带。

先看 without / with OpenViking 的差别

场景没有 OpenViking 时常见情况有 OpenViking 之后更像什么
当前会话历史消息越堆越厚,越聊越重只把当前活跃区留在前台,旧内容转去摘要和索引
记忆使用方式关键偏好、案例、实体埋在 transcript 里先做 recall,把最相关的少量记忆带回来
成本形态每轮都像把整段旧历史再读一遍先看便宜层,再决定要不要拿更完整的内容
健忘表现信息明明聊过,下一轮还是不稳长期有用的信息会被提炼出来,后面更容易命中
长会话后果花的钱越来越多,回答却不一定更稳预算更可控,历史也更容易复用

如果你想先把一条 hello 请求背后到底塞了多少上下文看得更细,可以接着读 OpenClaw的 Hello 为什么这么费 Token?我顺着源码终于懂了

它到底插在什么位置

把 OpenClaw 的长会话简化看,OpenViking 主要插在两个时刻:回复前的 recall,以及历史变厚后的 commit

  1. 新消息进来,系统先看这一轮眼下还活跃的上下文。
  2. recall 开始工作,从摘要、索引、长期记忆里找这一轮最该带回来的少量内容。
  3. 本轮 prompt 组装完成,模型基于“当前消息 + 活跃区 + 召回结果”来回答。
  4. 对话继续变长后,系统再做 commit,把旧历史压缩、归档,并沉出更适合长期复用的记忆。

可以把它概括成这样:

新消息进入
-> 保留当前 active messages
-> recall:从摘要、索引、记忆里找最相关内容
-> 组装本轮 prompt
-> 模型回复
-> 会话变厚后触发 commit
-> 旧内容压缩成 summary / archive index
-> 长期有用的信息沉成更稳定的记忆

这一步很关键。因为真正进模型的,不再只是完整 transcript,而是“当前最需要的上下文组合”。

recall 这一步,决定它会不会把无关历史也塞回来

很多长期记忆系统,问题不在“记不住”,而在“记得太杂”。
OpenViking 这条路更像分层探测:先用便宜的层筛,再决定要不要下钻到更完整的层。

层级会先看到什么适合干什么
L0一句话抽象 / abstract先快速判断这条记忆像不像现在要找的东西
L1概览 / overview补更多上下文,确认值不值得继续带
L2完整内容 / full只有真的需要细节时才展开

这样做的价值很直接。
先扫 L0,成本低。
需要更多判断时再看 L1。
真要落到完整细节,再去碰 L2。

后面通常还会接去重、重排、分数过滤、token budget 裁剪这些动作。
最后真正被塞回 prompt 的,不该是一长串“看起来相关”的候选,而是这一轮最值得占位置的那几条。

commit 这一步,决定它会不会越聊越贵

只要会话够长,系统就不可能永远把原始消息挂在前台。
会话里的 pending_tokens 一高,OpenViking 就要开始处理“历史怎么收口”这件事。

它更像做三件事:

  1. 把旧对话压成能快速回忆的 summary。
  2. 给归档内容留一个 archive index,后面还能追溯。
  3. 把当前最该参与推理的消息继续留在 active messages。

于是上下文从“无界追加”,变成了“前台活跃区 + 后台可回查区”的结构。
旧内容没有消失,只是离开了每一轮都最贵的位置。

如果你想把这里的“token 为什么能降”继续对到账单上的输入 Token、输出 Token、Cache hit,可以再看 大模型 API 的输入 Token、输出 Token、Cache hit,为什么价格差这么多?

它为什么能同时治“贵”和“健忘”

把这件事拆开看,就顺了。

第一层,贵,常常贵在每一轮都把太多旧东西重新带进去。
OpenViking 通过压缩、索引、分层召回,让真正留在前台的内容少很多。

第二层,健忘,常常不是因为历史不存在,而是因为历史只有原始聊天记录这一种形态。
当偏好、实体、事件、案例、模式这些内容被提炼出来后,后面的命中方式就变了。它们不必每次都躺在几百行 transcript 里等模型自己翻。

第三层,贵和健忘本来就是一件事的两面。
你把所有历史都原样带着,成本会高;你把历史全丢着不整理,命中会差。OpenViking 真正做的是把“历史存在”变成“历史可用”。

什么时候值得上 OpenViking

如果你只是偶尔开几轮短对话,它未必会排在最前面。
可一旦出现下面这些信号,优先级就会明显往上走:

  • 同一个 session 会连续跑很久
  • system prompt、tools、skills 这些固定前缀本来就重
  • 用户偏好、项目约束、解决过的案例需要跨轮复用
  • 你已经开始频繁 newcompact,成本还是不稳,回答也还是会漏

我更愿意把它看成 OpenClaw 进入长会话后的治理层。

延伸阅读

评论区

欢迎留下你的看法,支持匿名评论。

你的评论会公开展示,建议填写便于交流的昵称,并尽量提供有信息量的反馈。