v0.2 · 交叉编码重排 Stage 5.5 交叉编码器重排(T-151r)上线:RRF 融合后,top-20 候选在预算打包前由 bge-reranker-base 重排,任何失败平滑回退融合顺序,并有 rerank_enabled 关闭开关。在提交的 gold-set 上实测(与模型选型同一 harness):全栈 recall@5 0.90 → 1.00,MRR@10 0.78 → 0.95,nDCG@10 0.83 → 0.96 —— 10 条查询里 9 条把正确记忆排在第 1;scope/时间校准无回退。正式下限已冻结并由 CI 把关。已接入 engram context pack、MCP server 和 Web Context Preview;经代码 + 安全双重评审。另新增持久 embedding 缓存(~/.engram/cache/embeddings.db,内容寻址,LRU,全程可降级),一次性 CLI 调用只重嵌改过的 body;以及 remote 后端(backend = remote,纯 stdlib urllib:OpenAI 兼容 embeddings + Cohere/Jina/Voyage 重排),与 observer 共用同一套已审计的 key 白名单和重定向剥离纪律。1456 单测,ruff + mypy strict 全绿。 词法通道索引人写的元数据(T-218,2026-07-29):记忆的 namedescription 是人手写的摘要,检索却完全看不见;索引之后提交 gold-set 上 BM25 MRR@10 0.670 → 0.764,融合通道 0.781 → 0.858,校准集不动。更有价值的是没有发布的那一半:同样的元数据喂给嵌入器,在 LOCOMO 上 MRR@10 掉 0.056、temporal 类掉 0.139 —— 它生成的 description 每条都带日期,于是每篇资产都对日期查询有点像。BM25 有 IDF 能把全语料重复的词压到无权重,稠密检索没有这道防线。能安全塞进词法索引的东西,不一定能安全塞进嵌入。另一个把元数据也喂给交叉编码器的变体拿到了满分 1.000/1.000/1.000/1.000,仍然没发布 —— 它的 LOCOMO 那一档还没测。1522 单测,ruff + mypy strict 全绿。 加入讨论区
开源记忆系统

你的记忆应该比模型活得更久

engram 是一个本地、可移植、不绑定任何 LLM 的记忆系统——越用越聪明。纯 markdown 存在你自己的磁盘上,任何模型,任何工具,你永久拥有。

~/acme-platform — engram
$ engram init --name=acme-platform
→ engram 仓已在 ~/acme-platform/.memory 初始化

$ engram memory add --type=feedback --enforcement=mandatory \
    --name="confirm before push" \
    --description="推送前必须先得到明确同意" \
    --body="推前先问。**Why:** 之前一次 force-push..."
→ 添加 local/feedback_confirm_before_push [mandatory]

$ engram memory search "push"
   3.420  local/feedback_confirm_before_push  [project/mandatory]

$ engram validate
→ clean —— 无 error 无 warning

$ engram status
→ .memory 位于 ~/acme-platform · store 0.2 · 1 asset · 0 pools
5 条命令,5 分钟,第一条记忆落盘。完整演示录屏将放在 docs/assets/demo.gif —— 上面这段 transcript 就是同一个流程。
第 1 层 数据层 .memory/ 目录 · ~/.engram/ · 纯 markdown,符合 SPEC,任何 LLM 都能读 第 2 层 控制层 engram CLI · memory / workflow / kb / pool / consistency / context / mcp / web 第 3 层 智能层 相关性闸门 · 一致性引擎 · 自学习引擎 · 演化引擎 · 跨仓传信器 · 智慧指标 可选,可关闭 第 4 层 接入层 适配器 · MCP Server · Prompt Pack · Python SDK · TypeScript SDK 第 5 层 观察层 engram-web · 总览 / 图谱 / 上下文预览 / 收件箱 / 自学习控制台 每层独立可替换
五层架构——删掉第 1 层以上的任何一层,store 仍然正常工作。

大多数 LLM 工具想拥有你的记忆

换模型,上下文丢了。换工具,一切从头教起。engram 是反过来的设计。

claude-mem

SQLite · 仅支持 Claude

记忆锁在私有 SQLite 数据库里。换模型——上下文消失。

ChatGPT / mem0

托管 · 厂商锁定

记忆存在厂商云端。无法导出,无法 git diff,无法在工具间迁移。

engram

纯 markdown · 你掌控

记忆以人类可读的 .md 文件形式存在你自己的磁盘上。任何 LLM、任何编辑器、git 友好——永久有效。

架构

五个独立的层

每一层都可以独立替换。删掉第 1 层以上的任何一层,系统仍然正确运行。

L5 观察层 engram-web (stdlib 服务端渲染) — 总览 · 记忆 · 工作流 · 知识库 · 收件箱 · 上下文预览 可选 L4 接入层 适配器 (CLAUDE.md / AGENTS.md / GEMINI.md) · MCP Server · Prompt Pack · Python SDK · TypeScript SDK 面向 LLM L3 智能层 可选层——让 engram 随时间越来越聪明 相关性闸门 一致性引擎 自学习引擎 演化引擎 跨仓传信器 智慧指标 核心魔法 ✦ L2 控制层 engram CLI — memory · workflow · kb · pool · team · org · inbox · consistency · context · mcp · web · migrate LLM 可选 L1 数据层 .memory/ · ~/.engram/ — 纯 markdown,符合 SPEC,任何 LLM 无需插件即可读取 永久押注
资产类别

三种知识形式

函数(资产是什么)区分,不按尺寸区分。没有任何硬上限。

M
记忆(Memory)

原子断言

一条可以独立被 supersede 的事实、规则、偏好或指针。LLM 上下文启动的基线。

结构:单个 .md + YAML frontmatter

角色:经相关性闸门进入系统 prompt

无尺寸上限——自适应信号替代固定阈值

W
工作流(Workflow)

可执行过程

有可运行的 spine、fixture 测试用例和 metrics 追踪器。不只是描述——必须能真正执行。

结构:workflow.md + spine.* + fixtures/ + metrics.yaml

角色:任务匹配时加载;自学习引擎持续演化

追踪结果,自动提出改进建议

KB
知识库(Knowledge Base)

领域参考

人会专门坐下来阅读的多章节文档。LLM 编译 _compiled.md 摘要以高效进入上下文预算。

结构:README.md + 章节 + assets/ + _compiled.md

角色:摘要优先进 budget;全文章节按需检索

人写章节;LLM 编译摘要

三个自适应信号替代硬上限:动态预算分配 · 百分位长度信号 · 演化引擎的拆分/升级/降级建议

Scope 模型

两个正交轴,不是一条线

真实团队共享知识的方式不止一种。engram 将归属层次与主题订阅分成两个独立的轴。

归属轴——隶属即继承 你隶属 → 自动继承上游所有层级 组织级(org) ~/.engram/org/<name>/ · 最高权威 团队级(team) ~/.engram/team/<name>/ · 0 或 N 个团队 用户级(user) ~/.engram/user/ · 跨项目基线 项目级(project) .memory/local/ · 最具体 订阅轴——主题池(pool) 显式订阅 → 在 subscribed_at 层级参与权威 pool: kernel-work ~/.engram/pools/kernel-work/ subscribed_at: team 场景示例: org 订阅合规池 → 所有项目都看到,强制级 team 订阅设计系统 → 团队所有项目继承 project 订阅 playbook → 仅该项目使用 Enforcement 级别: 强制级 (mandatory) — engram validate 报错 默认级 (default) — 可覆盖,须声明 overrides: id 建议级 (hint) — 自由覆盖 冲突解决(一棵决策树) mandatory > default > hint project > user > team > org(同级内) pool 按 subscribed_at 层级参与 subscribed_at
Pool 内容在声明的 subscribed_at 层级参与冲突解决——而非固定的"pool 级别"。
一致性引擎

七类冲突

一致性引擎运行四阶段扫描并给出建议。它永远不会自动执行任何变更。

事实冲突

规则冲突

引用失效

工作流衰变

已过期

时间过期

静默覆盖

同题分歧

永不自动执行

引擎给出建议,永不自动执行。删除操作始终经过 archive/,保留期至少 6 个月,之后才会物理移除。

跨仓库协作

跨仓传信器

你的 agent 经常并发操作多个关联仓库。当 A 的 agent 发现 B 仓的问题时,可以直接发一条结构化收件箱消息——不打断 B 的当前 session。

仓库 A LLM 发现 仓库 B 的问题 engram inbox send --to=repo-b ~/.engram/inbox/ repo-b/ 已 journal,已去重 下次 session 仓库 B 看到消息 与记忆一起进上下文 修复 · 确认 已解决 state: resolved 反向通知已发送 A 下次启动 时收到通知 仓库 A 已收到通知 ✓ 所有消息:journal 记录 · 按 code-ref 去重 · rate-limit 节流,防止刷屏
跨仓传信器是点对点通信。主题池处理广播式共享;收件箱处理有针对性的信号。
对比

能力对照

没有任何其他系统同时做到的组合:数据资产可移植性 + 主动质量维护 + 可量化的自改进。

能力 engram v0.2 claude-mem basic-memory Karpathy Wiki mem0 MemGPT / Letta ChatGPT Mem
纯 markdown 存储✓ 开放SQLite✓ gist托管托管托管
工具无关(任意 LLM)仅 Claude部分部分部分 API部分 API仅 ChatGPT
两轴 scope(层次 + pool)
显式 enforcement 级别
7 类一致性检测部分
可执行工作流部分
知识库类(KB)✓ 手动
一等公民 Web UI部分托管部分托管部分托管
MCP server
跨仓收件箱
量化的自改进✓ 智慧指标
开源✓ MIT部分
智慧指标

越来越聪明——有数据为证

四组量化曲线证明 store 在自我改进。"感觉更好用了"变成了一个可以回归或提升的数字。

workflow 成功率随时间上升

工作流熟练度

重复任务完成时间 ↓

任务复现效率

活跃/已验证/非冗余占比 ↑

记忆精炼率

tokens 消耗 / 任务实际价值 ↓

上下文效率

通过 engram wisdom report 查看——每条曲线均由记录的结果计算得出,而非启发式猜测。

核心原则

五条,不打折

01

记忆是你的数据资产,不是某个产品的功能

store 属于其拥有者,不属于写入它的工具。任何文本编辑器,任何 LLM,任何版本控制系统。

02

可移植性 > 花哨功能

乏味的 markdown 在十年尺度上赢。格式是永久的押注,智能层是可选的投资。

03

质量高于容量

不限你存多少,但严格守住每一条的水平。一致性引擎保证 store 即使膨胀也不乱。

04

永不自动删

删除走 archive/,保留期至少 6 个月。每次退役都需要明确决策。

05

证据驱动的演化

记忆的置信度来自记录的结果,不是感觉。系统用数据证明某条记忆不好,才让它退役。

快速开始

3 行命令启动

v0.2 CLI 持续建设中。2026-04-20 M2 骨架落地 —— 克隆后 pip install -e "cli[dev]",即可 engram --version。子命令在 M2–M4 逐步推出,SPEC + DESIGN 同步开放评审。

小团队

pip install engram-cli
engram init --subscribe=kernel-work --adapter=claude-code,codex
engram web serve    # 打开 http://127.0.0.1:8787

大组织

engram init --org=acme --team=platform \
  --subscribe=compliance-checklists,kernel-work,design-system \
  --adapter=claude-code,codex,gemini

与任意 LLM 配合使用

claude                    # 读 CLAUDE.md → 读 .memory/
codex                     # 读 AGENTS.md → 读 .memory/
engram mcp serve          # 给 Claude Desktop / Zed / 任何 MCP 客户端
engram context pack --task="修 auth flow" --budget=4k | ollama run qwen:7b

日常维护

engram review              # 聚合健康检查
engram consistency scan    # 扫冲突,给出 resolve 建议
engram wisdom report       # 看四组自改进曲线
路线图

八个里程碑

M1

SPEC 冻结

SPEC + DESIGN v0.2 已冻结 —— 各 14 章;外部评审开放中

M2

核心 CLI

完成 —— 完整 CRUD + validate + review,15 个任务

M3

Scope + Pool

完成 —— 完整 2 轴 scope、pool 订阅、v0.1→v0.2 迁移

M4

智能 + 自动续接

完成 —— Relevance Gate、Consistency Phase 1–3、MCP、5 个 adapter、4 层自动续接(T-200–T-212)

M5

Workflow + 自学习

Workflow 资产类已交付 —— spine / fixtures / rev。Autolearn ratchet 仍未做

M6

KB + 收件箱

KB 类 + inbox 端到端 & 反向通知 + Consistency Phase 3。Phase 4 staleness 待做

M7

Web UI

完成 —— stdlib 服务端渲染,6 个只读 P0 页,无 node/构建步骤

M8

演化 + SDK

下一步:基准驱动的检索(RRF / rerank)、Evolve 引擎、TypeScript SDK

检索

把对的记忆捞出来

每个任务,Relevance Gate 决定哪些记忆进入上下文预算。排得准不准就是这个产品的核心质量 —— 所以检索要对着一个冻结的基准量化,且只许变好。默认走纯关键词;需要时再开一个可选模型,补上语义和跨语言匹配。

默认

关键词(BM25)

纯 stdlib 的词项排序。无模型、无下载、无额外依赖 —— 出厂默认,即时、离线可用。

查询和记忆有共同词时就够用。

盲区:"怎么发到生产"匹配不到标题为"蓝绿发布"的记忆;中文查询匹配不到英文记录。

已上线 · 零依赖基线

可选 · 本地

语义,在本机

一个小的多语言嵌入模型 + 一个 cross-encoder 重排器,用 ONNX 在本地跑 —— 无 PyTorch、无 API key、不联网。补上关键词路径漏掉的改写和跨语言匹配,再把头部候选拿来"把查询和记忆一起读"重排一遍。

开启:pip install engram[ml]

模型按 id + revision 钉死,基准才可复现。

可选 · M8 落地中,受基准约束

可选 · 远程

语义,托管

同样两段,交给你自己选的端点 —— 本机的 Ollama,或 OpenAI / Cohere / Voyage。不用本地下载;代价是一次网络调用、以及把文本发出本机。

给已经在跑嵌入端点的团队。

默认关闭。端点校验 scheme;key 从环境变量读,不进日志。

可选 · 计划中,M8 快速跟进

默认就是兜底的:没有配置模型、或某个 provider 连不上时,该次查询自动退回关键词检索。基础安装始终保持纯 stdlib —— 模型是你主动开启的能力,不是被动继承的依赖。

灵感来源

站在巨人的肩膀上

每个先行项目都塑造了 engram 的某个具体部分。

Karpathy LLM Wiki

LLM 编译的知识随时间复利增值。启发了知识库类和编译步骤的设计。

autoresearch

八条纪律的 agent 自我批评循环。塑造了工作流 Autolearn 引擎的演化节奏。

Agent Factory

经验应存为可执行代码而非文本。工作流类 + 可运行 spine 的核心灵感。

evo-memory(DeepMind)

Search → Synthesize → Evolve 生命周期。ReMem action-think-refine 驱动演化引擎。

MemoryBank

艾宾浩斯曲线在 LLM 记忆中的应用。改造为基于置信度的保留而非时间衰减。

MemGPT / Letta

把记忆当 OS 虚拟内存。启发 Layer 1 分层数据结构——无需托管服务。

Claude Code 记忆系统

engram 直接泛化的前身。在实践中证明了 LLM 相邻 markdown 记忆的价值。

MemPalace

检索算法研究,为相关性闸门的候选排序管线提供了参考。

加入设计评审

SPEC 和 DESIGN 已开放。想聊 scope 模型、资产类别边界、一致性引擎分类法,或分享你的使用场景 —— 来讨论区。 报 bug 或提具体功能请求,走 Issues。

发现 bug,或者想提具体功能请求?

Issues 用于跟踪具体任务 —— 每条都有明确的可执行结果。开放讨论请去讨论区。

提交 Issue