Skip to content

长会话日志从 178.4 MB 缩至 45.7 MB ​

撰写日期:2026-09-29

标签:会话 可靠性 性能

一段长期协作会话可能留下几十万条逐 token 事件。它们记录了推理、回复和工具参数,但每个很短的片段都带着完整的事件外壳。会话越长,磁盘文件和索引写入就越容易被这些重复外壳放大。

一份用户反馈中的两日会话达到 1,003,611 行、488.6 MB:推理增量约 205 MB,工具参数增量约 83 MB;完整消息快照约 147 MB,其中包含约 71 MB 图片数据。这些是问题规模的线索,不等于可节省的字节数。

我们在 NextClaw 开发版本中调整了日志写入:实时界面仍逐片显示;写入会话日志前,将同一消息中相邻、同类型的短增量合为一条。日志继续使用原有 v1 格式,完整消息、工具结果、图片和运行状态仍然保留。

冻结样本的结果 ​

在一份真实长会话的隔离副本上,离线维护后的结果如下。维护前后分别冷重放,并比较完整消息;随后从新文件冷启动、分页,再追加一条消息并重启确认。

指标维护前维护后
会话日志大小178,436,341 字节(约 178.4 MB)45,655,999 字节(约 45.7 MB)
事件行数434,83512,476
文件降幅—74.4%

这是一份样本的实测结果,不是所有会话的保证值。尤其是图片和完整消息快照占比高的会话,节省比例会不同。上面提到的用户会话没有用于改写或测量,因此不能把 74.4% 套到它身上。

我们还在隔离运行的开发实例中发起了一次真实对话:实时流送出 598 个正文增量,日志只写入 13 条合并后的正文增量,最终回复内容一致且运行正常结束。这验证了该次对话的流式输出与落盘合并可以同时工作;正式版本的延迟对照仍需发布前测量。

为什么能省,又能继续用 ​

日志中的 reasoning-delta、text-delta 和 tool-call-args-delta 通常每条只含很短的正文。NextClaw 现在只在相邻事件属于同一消息、同一工具和同一类型时按原顺序拼接正文;遇到消息、工具或运行状态边界就立即写出。实时状态和显示链路仍收到原来的逐片事件。

已有会话不会在普通升级时自动改写。若要整理旧日志,可用 nextclaw sessions compact-journal先预览收益;真正应用前必须停止所有使用同一数据目录的 NextClaw 实例,并显式确认。维护器保留原文件备份,校验候选文件的冷重放结果,再切换文件;中断时启动恢复优先回到备份。应用后若会话尚未继续写入,也能通过 --restore 恢复原件;有新消息时会拒绝覆盖。

当前边界 ​

上述数字与恢复验证来自开发版本和隔离副本。安装包升级、各平台文件切换与实时延迟仍需发布前验证;本文不把开发验证写成已经向所有用户推出的版本,也不承诺每次写入都具有新的断电持久性。正式发布后,普通升级仍不自动瘦身旧文件。

基于 MIT License 发布。