OpenChronicle 记忆格式与 Supersede 机制如何确保 AI 记忆永不丢失、可追溯【免费下载链接】OpenChronicle项目地址: https://gitcode.com/gh_mirrors/op/OpenChronicleOpenChronicle 是一款开源的 AI 本地记忆工具它把 AI 智能体的记忆存放在纯 Markdown 文件中并依靠Supersede取代而非删除机制确保每一条 AI 记忆永不丢失、始终可追溯。本文将从普通用户视角带你搞懂它的记忆格式长什么样、信息更新时为什么旧内容不会被抹掉。一、为什么记忆不丢失是 AI 记忆的难点 大多数 AI 助手的记忆要么放在不透明的黑盒数据库里要么在更新时直接覆盖旧值。这带来两个问题旧信息一去不返AI 忘了你三个月前在哪家公司就无法回答你以前做什么的无法审计用户无法知道 AI 到底记了什么、何时改的。OpenChronicle 的做法很工程化记忆就是磁盘上的普通 Markdown 文件任何改动都以追加 划掉旧值的方式留痕。你可以用grep、diff甚至手改它们详见 docs/memory-format.md。二、OpenChronicle 的记忆文件格式人眼可读的 Markdown 2.1 一个实体一个文件所有记忆文件位于~/.openchronicle/memory/文件名前缀就说明了这是关于谁/什么的记忆前缀用途示例user-用户本人的持久信息user-profile.mdproject-某个具体项目project-openchronicle.mdtool-软件 / 服务 / 命令行工具tool-cursor.mdtopic-知识领域或持续关注的话题topic-rust-async.mdperson-经常互动的人person-alice.mdorg-公司、团队或机构org-anthropic.mdevent-每日活动日志按天一个文件event-2026-04-22.md2.2 文件结构Frontmatter 追加式条目每个文件由两部分组成YAML Frontmatterdescription一句话摘要、tags、statusactive/dormant/archived、created/updated时间戳、entry_count等元数据条目列表每条记忆是一个独立小节标题固定为时间戳 唯一 ID 1~3 个标签的格式## [2026-04-20T16:30:05] {id: 20260420-1630-3f0e99} #work #employer ~~User works at Old Corp as a principal engineer.~~ #superseded-by:20260421-0915-c4f1a5 ## [2026-04-21T09:15:00] {id: 20260421-0915-c4f1a5} #work #employer User joined Acme Corp as a senior engineer.正文要求 1~3 句、自包含不依赖上下文即可读懂完整判定规则写在 prompts/schema.md 中AI 写记忆前会先过一遍这套决策树。三、Supersede 机制详解信息变了旧条目怎么办这是 OpenChronicle 记忆系统的灵魂。当 AI 发现旧事实过时比如你换了工作它不会删除或改写旧条目而是执行一次supersede取代操作具体四步划掉旧内容旧条目正文被~~...~~包裹Markdown 删除线留下指针旧条目标题追加#superseded-by:{新ID}标签索引同步SQLite 全文索引中该条目标记superseded1默认搜索不再命中它追加新条目新事实作为一条全新条目追加到文件末尾并附reason说明为何取代。核心逻辑在 entries.py#L148-L219 的supersede_entry函数中文件修改与索引更新在同一把锁内完成保证磁盘上的 Markdown和SQLite 索引永远一致。为什么这样设计时间线完整read_memory/search带上include_supersededtrue参数就能把整条变化链完整调出来——AI 能告诉你你 4 月 20 日还在 Old Corp4 月 21 日入职了 Acme零静默丢失没有任何数据被物理删除出问题随时能回溯默认搜索更干净旧条目在默认搜索中被隐藏AI 平时只看到当前有效的事实。四、记忆文件变大后怎么办压缩但绝不丢事实 ️记忆只追加会让文件越写越长。OpenChronicle 的 compact 阶段会用 LLM 重写压缩文件例如把多次取代合并成当前状态 历史备注但有一道硬护栏正则提取压缩前后的唯一名词短语若丢失超过5%本次压缩直接拒绝文件保留原样并标记待人工检查。这个阈值写在 compact.py#L26拒绝逻辑见 compact.py#L98-L107。此外还有软/硬 token 上限默认 20000/50000触发压缩检查且压缩时若发现文件在 LLM 运行期间被新写入会主动放弃本次压缩——宁可下次再来也不覆盖新数据。五、你能自己动手检查、编辑这些记忆吗✅完全可以这正是本地优先设计的意义读任何能读 Markdown 的工具都行grep -r user- ~/.openchronicle/memory/就是最快的第一遍检索手写允许但编辑后运行openchronicle rebuild-index重建 SQLite 全文索引安全且幂等避免索引漂移清空openchronicle clean memory可清空全部记忆会要求确认配置文件本身永不受影响。整体写入流程会话压缩 → 事实提取 → 分类落盘 → 压缩在 docs/writer.md 有完整说明。六、快速上手从哪看起 想了解的去哪里看记忆格式与 Supersede 语义docs/memory-format.md写入器整体流程docs/writer.md端到端架构docs/architecture.mdSupersede 源码src/openchronicle/store/entries.py压缩与事实保留检查src/openchronicle/writer/compact.py结语OpenChronicle 用两条简单而克制的设计回答了AI 记忆如何不丢失、可追溯记忆全部落盘为人读 Markdown更新永远走 Supersede 追加留痕、绝不物理删除。配合 5% 事实保留阈值的压缩护栏即使是 AI 自动生成的记忆库也达到了每一条都能翻出原始出处的可审计级别——这对把长期记忆交给 AI 的用户来说或许才是最重要的安心感。【免费下载链接】OpenChronicle项目地址: https://gitcode.com/gh_mirrors/op/OpenChronicle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考