skip to content
tlj 的工程笔记
← 项目

归墟 / guixu:把 AI 协作的完整过程原样存下来

个人

一个反 summary 的 append-only 冷存储——不做 memory、不做提炼,把 AI 协作的完整原始上下文原封不动留住,需要时整段喂给新模型去复用。赌注是:模型是 runtime,原始上下文是程序。

时间
2026-06
角色
独立设计与实现(开源)
成果
append-only 冷存储 + 运行时整段注入复用;bash/python3 零依赖;use 的逐级压缩是撞到 104 万 token 窗口墙后逼出来的

仓库:github.com/tljcpa/guixu(MIT)。这是个开源的方法 + 工具,不是产品。

归墟做的事只有一件:把 AI 协作工作的完整原始上下文,原封不动地留下来,永不压缩。 不是 memory,不是 summary,不是又一个把经验提炼成几行要点的系统。

为什么反 summary

起点是一个不信任:我不信任提炼

提炼的那一刻,你就已经替未来决定了”什么重要”——而你大概率会决定错。那些当时看着像杂质的东西,往往才是日后真正有用的。一段 AI 协作里真正发生过的,是整个过程:prompt 怎么一版版改、方案为什么推倒重来、在哪一步卡了三个小时、绕了什么远路、最后为什么是这样而不是那样。结果只是这个过程坍缩之后的一个采样,而 summary 把那个采样当成了全部。

最硬的一条论证是关于可逆性的:任何结构 (schema、要点、知识图)三个月后都可能让你后悔,但原始记录不会——它随时能被未来的任意结构重新加工。过早结构化的危险,本质是不可逆;而原始,是唯一可逆的选择。

唯一的规矩

它不是框架、不是 schema。只有一条规矩,且这条永不改:

append-only · 原始 · 带时间戳 · 永不删除 · 永不就地压缩。

其余全是可替换的形态(要不要检索、要不要图、怎么切”事件”),用到了再长,错了就换。

两层:冷的是真身 ,热的是门牌

一个我自己挺得意的设计断言:“事件”(一次比赛、一个卡三小时的 bug)是热层对冷层的一个视图,不是存储实体。 同一批原始记录可以被多种颗粒度同时切——所以”多大算一个事件”这种问题永远不用提前回答,那是读取时的事。

实现:存 → 洗 → 用

整套是 bash + python3 标准库,零第三方依赖。闭环就三个动词:

use 里最诚实的一段是压缩逻辑,它不是设计出来的,是撞墙逼出来的:一个 48 小时的事件整段倒进去约 104 万 token,超过百万窗口。所以我加了 L0→L3 逐级有损压缩(完整 → 收紧工具输出 → 丢工具结果 → 只留发言和决策),还塞不下就硬截尾保留最近的部分。但有一条不动:文本发言永远保留,砍的只是工具噪声——因为经验在人的决策里,不在命令回显里。

它在 2026 的版图里站哪

我做了一轮多 agent 调研(6 路搜索 → 25 源 → 119 条主张 → 对抗核验)来确认归墟到底新不新。结论是它处在一个相对空白、但非无人触及的位置:

我没有证明它有效

归墟跑通过一次 n=1 的经验迁移:我把一个 session 的完整对话原样喂给一个全新 session,一件原本花了将近两天的活,它四个小时做完了。

但我必须把话说死:我没法证明这 4 小时全是”经验迁移”的功劳。也许那次任务本就简单些,也许是我自己变熟了。我不知道模型具体学到了什么、怎么学的——端到端的黑盒。所以我不下结论,只把这件事和那份完整记录(脱敏后)摆在这。这正是归墟的态度:给你原文 ,不给你结论,你自己看。

它现在也明显还不能做一件事:当我有几十个事件 、手动找不动时,自动该喂哪一段(我管这个叫”图书管理员”)。但我故意不提前建它——等真到了那天再建,在那之前造任何东西都是另一种形式的逃避。

一条自我约束

归墟是真实工作的排泄物,不是宿主。不该给它排工期,它只该在我做真正的活时被动地长大。哪一天我发现自己”在建设归墟”而没在干真正的活,它就成了逃避——那就该停手,去干活。

写这个项目最大的收获,不是工具本身(就几个几十行的脚本),而是想清楚了一件事:在 AI 是 runtime 的时代,我该交给它的或许不是我提炼好的结论,而是完整的、未经我裁剪的过程——因为该保留什么,模型可能比我更会判断。 这个赌注对不对我还不知道,但我觉得值得押。