pi-optchat 插件关闭默认压缩,用摘要树保留完整聊天记录
用 Pi 跑长任务时,默认的上下文压缩(compaction)会把旧对话压成一段摘要,原文从上下文中消失,一旦压缩出错就无法找回,经常出现之前约定好的细节丢失、模型开始输出错误内容的问题。
用户 @chasen_liao 最近发现了 Pi 插件 pi-optchat,它直接关闭主 Agent 的默认压缩机制,改用摘要树存储对话内容。该插件实现的是 Victor Taelin 提出的 OptChat 方案,核心逻辑是聊天记录本身就是记忆,Victor 称这是他从 GPT-3 以来最大的一次工作流升级。
它的运行原理并不复杂:所有消息都会原样存入日志,永远不会删除。短消息直接保留原文,长消息会由专门的压缩模型压缩为约 512 字节的单行内容,相邻的两行再合并为一行,逐层向上合并,最终形成一棵二叉树。越新的消息保留的细节越完整,越旧的消息概括程度越高。
每一轮对话都会从全新的上下文开始,模型看到的是这棵树的一个视图,上限为 128KB,满了就一次性合并回 64KB。平时只在末尾追加内容,因此几乎每轮都能命中 prompt 缓存。如果某一行内容过于模糊,模型可以通过 zoom 操作逐层展开,一直回溯到最初的原始对话内容。
作者表示,在 200K 上下文的模型上做 A/B 测试,原本跑到 100K token 左右就会中断放弃的长任务,开启该插件后可以完整跑完。
除此之外,该插件还支持按 work、personal 等不同配置文件(profile)分别存储对话,每个 profile 对应一条永远不会结束的对话,可以在后台派生子 Agent 执行任务,实时查看任务进度。
在同一个 profile 下新开一个 Pi 窗口,会自动生成一个可以直接对话的子 Agent。它还支持导入 Claude Code、Codex、ChatGPT 的历史对话记录。
安装命令为 pi install npm:pi-optchat。