OC
OpenClaw 中文解释版

给五岁小朋友也能看懂的说明书

简要总结

Session Management Deep Dive

这页说明书就像一本“对话小管家”的说明书。它告诉你,当你和电脑里的智能助手聊天时,它怎么记住你们聊过的所有事情,以及当聊天内容太多、记不住的时候,它怎么把旧的事情变成一个小总结,好继续记住新的事情。如果你想知道聊天记录是怎么保存的,或者为什么有时候聊天会“重新开始”,就可以看看这一页。

五岁小孩版解释

OpenClaw 就像一个聪明的对话小管家,它会把你们的每一次聊天都好好地记下来。它主要用两个小本本来记。

  1. 第一个小本本叫 sessions.json:你可以把它想成是一个“目录本”。它很小,里面记着每个聊天现在用哪个大本本,还有聊天的名字、上次聊天的时间、一些开关设置(比如要不要多思考一下)等等。这个目录本可以安全地修改。
  2. 第二个小本本就是真正的“聊天大本本”,名字像 <聊天编号>.jsonl。它会把你们说的每一句话、助手做的每一件事,都按顺序记下来,就像一棵不断长大的树。这个本本只会往后增加内容,不会修改前面写好的东西。

这两个本本都放在电脑上一个叫 ~/.openclaw/agents/<助手名字>/sessions/ 的文件夹里。

小管家很爱干净,它会自动打扫,不让本本太多太乱。你可以告诉它怎么打扫:

  • mode:可以选 warn(只提醒)或者 enforce(真的动手打扫)。
  • pruneAfter:如果一个聊天超过这么多天(比如30天)没人说话,就可以清理掉。
  • maxEntries:目录本里最多记多少个聊天。
  • maxDiskBytes:整个聊天文件夹最多用多少电脑空间。

如果选 enforce,小管家会先清理最旧的、没人要的聊天大本本,如果空间还不够,就清理最旧的聊天目录和它的大本本,直到空间够用为止。

你也可以自己动手打扫,用这两个命令: openclaw sessions cleanup --dry-run (先看看哪些会被打扫,但不动手) openclaw sessions cleanup --enforce (真的开始打扫)

聊天是怎么被认出来的? 每次聊天都有一个“聊天钥匙”(sessionKey),就像不同房间的钥匙。直接和助手聊天、在群里聊天、或者定时任务,都有不同的钥匙。这把钥匙决定了你们的对话会进到哪个“聊天桶”里。

聊天为什么会“重新开始”? 每个“聊天钥匙”指向一个当前正在用的“聊天大本本”(sessionId)。在几种情况下,会换一个新的大本本,感觉就像聊天重新开始了:

  • 你用了 /new/reset 命令。
  • 到了每天凌晨4点(管家电脑的时间),下次发消息时会开新本本。
  • 聊天闲置太久(比如设置了 session.reset.idleMinutes),下次有人说话时会开新本本。
  • 如果从一个很长的聊天里开新话题,但原来的本本已经太大了(超过 session.parentForkMaxTokens 设置,默认10万个词),新话题也会用一个全新的本本开始。

当聊天内容太多,记不住了怎么办? 这就是“压缩”(Compaction)。小管家会把很久以前的聊天内容,变成一个简短的小总结,写进聊天大本本里。这样,以后再看时,就看到这个总结和最近的新消息,又能记住很多东西了。压缩是永久性的,总结会一直留在本本里。

小管家会在两种情况下自动压缩:

  1. 模型说“内容太多,装不下了!”的时候。
  2. 聊天内容快装满模型脑子的时候(contextTokens > contextWindow - reserveTokens)。

你可以设置压缩的规则,主要看这两个数:

  • reserveTokens:要留出多少空间,给提示词和助手的回答。OpenClaw 会保证它至少是 20000,这样压缩前还有空间做点别的事。
  • keepRecentTokens:压缩时要保留最近多少词的内容不动。

压缩前先存好重要记忆 小管家很贴心,在自动压缩快要发生之前,它会偷偷地(不让用户看见)让助手把重要的记忆写到硬盘上的日记里(比如 memory/YYYY-MM-DD.md)。这样,即使压缩把旧聊天变成了总结,重要的记忆也已经单独保存好了。这个功能默认是打开的。

怎么知道压缩发生了? 你可以用这些方法看看:

  • 在聊天里输入 /status 命令。
  • 在命令行输入 openclaw statusopenclaw sessions
  • 如果打开了详细模式,你会看到 🧹 Auto-compaction complete 这样的消息。

如果出了问题怎么办?

  • 聊天跑错房间了?先用 /status 命令看看现在的 sessionKey 对不对。
  • 找不到聊天记录了?确认一下你查看的电脑是不是“小管家”运行的那台电脑。
  • 压缩发生得太频繁了?检查一下:模型的“脑子”(上下文窗口)是不是太小了;reserveTokens 是不是设得太大了;是不是工具返回的结果太长了(可以试试调整“会话修剪”设置)。