基于 Obsidian 双向关联的本地记忆系统,为 Claude Code 提供持久化记忆能力。
- Prompt 驱动:保存、搜索等操作由 AI 使用 Unix 命令执行,灵活且透明
- 自动注入:通过 Hooks 自动注入知识库规则,用户无感知
- Memory + Index 分层:Memory 自包含内容和关系,Index 轻量导航且自动演化
- 项目/全局分离:项目记忆和全局记忆通过目录分离
- 自组织演化:分类由使用模式驱动,无需预定义模板
bash install.sh脚本会自动完成:
- 复制记忆库到
~/.localmemory/ - 配置 Claude Code Hook
- 写入版本号
重启 Claude Code 后生效。更新时再次执行 bash install.sh,只会覆盖 prompt 和 scripts,不会丢失已有的记忆数据。
每次用户输入时,inject-memory.sh 会输出:
- 知识库规则(目录结构、操作命令、触发条件)
- 当前记忆库状态(Memory 总数、分类列表、项目列表)
Memory 层(~/.localmemory/memory/):
- 自包含的记忆单元,一个文件 = 一条完整记忆
- 承载内容、frontmatter 元数据(created, tags)和 wiki-link 关系
- 读取一个文件即可获得完整信息,无需跨层拼装
Index 层(~/.localmemory/index/):
- 纯导航层,帮 AI 决定「该读哪条记忆」
- 不重复 Memory 的内容,只保留路径 + 一句话摘要
- 随记忆量自动演化:单文件 → 分类拆分 → 多级目录
- 可从 Memory 层随时重建,丢失不影响数据完整性
项目记忆(memory/projects/{project_name}/):
- 项目代码相关的决策
- 项目特定的配置和约定
- 项目相关的人员关系
全局记忆(memory/{category}/,如 knowledge/、preferences/):
- 通用技术知识
- 个人偏好和习惯
- 跨项目的最佳实践
不通过写入时标签判断,而是由实际使用模式决定。compact.sh 会检查每条记忆被其他记忆引用的次数,零引用的记忆会被标记供审查。
Prompt 驱动(AI 使用 Unix 命令):
- 搜索记忆:
cat、grep、find - 保存记忆:
mkdir、cat >、echo >> - 删除记忆:
rm、sed
脚本执行(复杂逻辑):
- 整理记忆:
compact.sh(重建索引、合并碎片、淘汰过期、自动拆分)
~/.localmemory/
├── memory/ # Memory 层:自包含记忆
│ ├── {category}/
│ │ └── {slug}.md
│ └── projects/
│ └── {project_name}/
│ └── {slug}.md
├── index/ # Index 层:轻量导航
│ └── root.md
├── prompt/
│ ├── inject.md # 基础规则(静态)
│ └── supplement.md # 补充规则(动态,AI 可修改)
└── scripts/
├── inject-memory.sh # 注入脚本
└── compact.sh # 整理脚本
应该保存的(满足至少 2 个条件):
- 独立性:这条记忆是否可以独立存在?
- 持久性:这条记忆在 1 个月后还有价值吗?
- 可引用性:这条记忆是否可以被未来的对话引用?
- 信息密度:这条记忆是否包含足够的信息?
不应该保存的:
- 临时性的操作记录
- 片段化的信息
- 无价值的闲聊
- 可以从代码/文档中直接获取的信息
一个 Memory 文件 = 一个完整的记忆单元
好的示例:
- 一次完整的决策过程及结论
- 一个完整的方法论或最佳实践
- 一个重要的用户偏好集合
- 一个项目的关键上下文摘要
AI 会根据以下条件自动操作:
自动搜索记忆:
- 用户提到之前的事情("上次"、"之前"、"记得")
- 用户要求回忆或总结历史
- 问题涉及已知的上下文
自动保存记忆:
- 用户明确要求保存("记住"、"保存")
- 对话中产生重要决策或结论
- 用户表达偏好或习惯
# 整理记忆库(重建索引、清理过期、自动拆分)
bash ~/.localmemory/scripts/compact.sh可以编辑 ~/.localmemory/prompt/inject.md 自定义:
- 操作规则:告诉 AI 如何搜索和保存记忆
- 触发条件:定义什么情况下触发操作
~/.localmemory/prompt/supplement.md 是动态规则层。AI 在使用过程中可根据用户需求和使用模式自动维护此文件。每条调整带原因,删除某条即可回退。补充规则优先级高于基础规则。
inject-memory.sh:修改注入的内容和格式compact.sh:调整整理逻辑和策略(如 Index 拆分阈值)
在用户目录下的 ~/.localmemory/ 文件夹。
cat ~/.localmemory/index/root.md
grep -rl "关键词" ~/.localmemory/memory/bash ~/.localmemory/scripts/compact.sh- 项目记忆:与特定项目相关,存储在
memory/projects/{project_name}/ - 全局记忆:适用于所有项目,存储在
memory/{category}/
可以。在执行 compact.sh 时,系统会检查项目记忆是否有价值纳入全局。
Index 可以随时从 Memory 层重建,执行 compact.sh 即可。
详细设计请参见 DESIGN.md。
MIT