core
每个 agent 一份,加密存放。人格、对主人的理解、情绪、没做完的事、随手的笔记—— 都是它自己的立场,由它自己写,不经过自动抽取,也不共享给别人。
一条记忆只回答「结论是什么、关于谁、什么时候、出处在哪」。 原文不进记忆,留在原始对话表里;按编号用 recollect_turn 取回那一轮,前后各可带 10 轮。这样模型可以随时换、提示词可以随时改, 而原始会话一个字节都不会丢。
记忆不是一件事。一半是 agent 自己的加密小本,只有它自己看得见、写得了; 另一半是它和你一起经历的世界,可查、可追溯,也能被同一个人名下的其他 agent 读到。 世界记忆放在多台设备、多个 agent 之间共用:大家一起抽、一起查;core 只认单一 agent 的钥匙。
每个 agent 一份,加密存放。人格、对主人的理解、情绪、没做完的事、随手的笔记—— 都是它自己的立场,由它自己写,不经过自动抽取,也不共享给别人。
你们一起经历的事:谁在什么时候说了什么、做了什么决定、结果如何。 每条都带出处和指针,能按指针取回原话,也能被撤销、被替换、被同一主人名下的其他 agent 读到。
这不是三个库,也不是三层存储——是同一份东西在不同场合被拿出来的三种粒度。
记忆不是一段段自由文本,而是分开的条目:这条是称呼,那条是状态,另一条是事件, 各自挂在一个固定身份上——这个身份就叫锚。点一下或悬停任意节点,看它连着什么。下面的图为示意,仅作示范。
工具是同一套,重点不一样:陪伴型多看常驻简报、情绪与画像; 工程型多看事件线、交接与原话。两边都会用对方的:陪伴型也会翻世界记忆,工程型也有自己的 core。
「我是谁?我们到哪了?」
常驻简报:身份、关系、没做完的事,一次给全。
「他现在心情怎么样?」
情绪与状态,带时间和有效期,不写死成永久属性。
「我该怎么称呼他?」
用户画像与人格设定,只有这个 agent 自己看得见。
「先记一笔,别丢了。」
写进小本本,只增不改;摘要会自动进常驻简报。
「上次那个部署脚本放哪了?」
一句话简报 + 编号句柄;想看细节再按编号展开。
「原话到底怎么说的?」
直接搜原话,命中里带 turn_uid 和会话号;要原文再用「取」。
「这句原话前后还说了什么?」
凭 turn_uid 取目标轮,带同会话前后各 10 轮;跨机也能取。
「这事我在哪个会话里说的?」
列出会话,再按会话取上下文。
「我上次停在哪?」
读上一段会话留的交接条,接着往下做。
「这条帮上忙了吗?」
用后回一句:帮上了 / 没用 / 部分 / 条件不符 / 已失效。
「这条记错了。」
打报告,走人工判定;不直接改库,也不让模型自己改。
13 个共享记忆工具 + 28 个私有工具(读写 agent 自己的小本);其余是给运维和调试的,日常用不到。
不是把聊天记录存一份,是拆成六种能直接用的东西;每一种都能追到原话。
谁在哪、是什么、多少。能被反复引用,也能被推翻。
部署脚本是 scripts/build-release.sh
什么时候、发生了什么、结果怎么样。带时间,能排成线。
10 月 24 日改过一次发布流程
定了什么、为什么、后来改没改。旧的那条标成「被取代」,不删。
先切分支再合,别直接推 main
当时的感受和处境,带有效期;过期自然淡出,不贴永久标签。
这周想歇两天(截至周五)
谁和谁、什么关系、从什么时候开始。关系变了是加一条,不是改旧的。
阿岚是同事,10 月 12 日起
人、项目、机器、账号。所有记忆都挂在锚上,换个说法不会变成另一个人。
「recollect 这个项目」
另外一类是 agent 自己写的:人格、用户画像、小本本、交接条。它们放在 core, 只有这个 agent 自己看得见;上面这六种则在共享的记忆层里,可按权限被同主人的其他 agent 读到。
召回先用本地关键词索引捞出候选——词级精确匹配,不调用嵌入模型;再把同一批候选拼成不同的读法: 给模型看的是一句带编号的简报,行首的 [1] 就是句柄,拿着它能换回那条记忆;记忆里的 turn 指针再用 recollect_turn 取回原话; 给程序看的是 JSON,给核对的人看的是能一路展开到原话的证据链。切换标签看同一份记忆的不同切面。
召回先把候选拼成一句自然语言,行首带 [n] 句柄;整句有上下文,比一堆碎片和字段更不容易读偏。读的时候不调用模型,模型也不用先解析表结构。
t-7f3a · span 128–214[e12] → transcript.db展开给到的是记忆正文与 turn:<uid> 指针;按指针取那一轮用 recollect_turn(可带前后各 10 轮), 按会话取全文用 recollect_session。指针换个设备、重新导入一次都指向同一段。
演示中的原文展开按 recollect_turn / recollect_session 的机制绘制; 按钮里的数字仅作示范,字段与流程来自真实实现。
记忆层不是一张大表。身份与来源、抽取与审核、实体本身、使用与引用、运维,各自成组;审计与来源从建表那天就带着。
表名不用记,看五个分组就行:每组各管一件事,缺哪组一眼能看出来。
以上是主要分组,不是全表清单:25 张正式核心表,另有 7 张归属、审查、事件、归档、复用侧表,共 32 张;版本以 MEMORY_VERSION = 6 为准。