memory-os 是一套给 AI agent 用的记忆系统。目标有四个:辅助项目开发和源码分析;把会话流水沉淀成可检索、可复用的结构化知识;在 web 端聊天时用最少的 token 拿到该记住的东西;提取用户数据做分析、建用户档案、优化人机协作。
分五块:源码分析工作流、编译主链路、web 端实时层、数据底座、状态文件。
skill + 编译:读源码 → 会话 → 写 concepts + knowledge → 更新 index → 追加 log。 用 source-code-reading skill 读大型代码库,用claude-memory-compiler把可复用结论编译进 knowledge。
Claude Code 会话
↓ flush(session-end hook)
daily/(原始源,append-only)
↓ compile(6PM,按"技术 / 个人"边界分流)
├─ knowledge/ 纯技术百科(concepts + connections,正文不掺日期)
│ └─ index.md = 检索目录(query 先读它)
├─ people/ 个人信息
└─ log.md = 时间线汇总(个人信息 + 项目信息,带日期,commit 从这提炼)
编译边界:技术 / 项目知识 → knowledge/;个人 / 闲聊 → people/;项目开发进程 → log。判断标准:这条信息一年后还用得上吗。
关键设计:daily 只增不改,compile 再收敛。乱账的根源是写入时没有收敛机制,把"记录"和"提炼"拆成两件事,compile 跑坏了可以重跑,源数据不丢。
TLB 会话级 + 短期 json 天级 TTL + 冷搜读本地记忆仓库。
companion 聊天 ──实时 / 5min──▶ 写 daily(桥,appendToCompilerDaily)
daily ──每天 6PM──▶ 编译 knowledge + people + log(compiler 的 compile)
实时调度(chat-memory-mmu/memory.js):用纯正则把消息分类,0 token 决定"要不要搜索":
用户消息 → classify(ack / pushback / question / cont / update / new_topic)
├─ ack / pushback → 不搜,只用 TLB 快照
└─ question / new_topic → 先查 TLB,命中即停,miss 才冷搜
冷搜读 knowledge 目录:抽关键词 → 文件打分 → 抽片段 → top3。
三个关键机制:
- turn 时间轴:
fact.turn判断是旧状态(→ UPDATE)还是刚提过(→ CONT)。 - dirty 一致性:值变标 dirty,
_tlEvict跳过 dirty(脏数据宁可超载不驱逐),flushTLB才标干净返回写回。 - 0 token 决策:把"要不要搜索"从 LLM 手里抢过来,冷搜触发率从 100% 压到 30-40%。
短期 json 是 .short-memory.json,TTL 24h 读取时懒清理,定位是"跨重启的 TLB 补充"——TLB 重启即弃,短期 json 跨重启留 24h 补缺口。
账单 + 用药 + 经期 + 日历 + 驱力 + 情绪,管理健康数据和生活数据。
实时修改,标记时间戳,用于 diff 距离上次 skill 更新后用户个人信息 / 技术栈的变化,驱动 skill 自更新。
后续计划接入手机端 / 平板端的非隐私数据,动态扩充数据底座。
- 编译主链路参考并二次开发自开源项目 claude-memory-compiler