记忆摄取¶
Claude Code 会维护自己的自动记忆——它为自己蒸馏出的 Markdown——存放在:
~/.claude/projects/<encoded-cwd>/memory/MEMORY.md (a link-only index)
~/.claude/projects/<encoded-cwd>/memory/<topic>.md (distilled prose, one fact per file)
<encoded-cwd> 是仓库绝对路径中除字母和数字外的每个字符替换为 - 后的结果(例如 /home/you/code/my_app → -home-you-code-my-app)。Claude Code 会将超过 200 个字符的名称截断为 200,并在末尾加上一个短哈希。
claude-mem memory ingest 会将这些主题文件直接作为观察导入到你的记忆数据库中。
为什么它不花费任何成本¶
自动记忆已经过蒸馏——每个主题文件与观察生成器生成的工件属于同一类型。因此 memory-ingest 不会运行 Haiku 生成流水线。它会通过 claude-mem 现有的观察接入点(内容哈希去重 + Chroma 同步)直接存储每个文件的正文。对已经蒸馏过的正文重新运行生成既会有损,又会为负价值付费。
MEMORY.md 索引会被跳过——它只是链接,自身不携带任何知识。
用法¶
始终先进行 dry-run——这是一个零花费、不涉及数据库的扫描与计数:
# Scan the current repo's memory dir and report what would be stored
npx claude-mem memory ingest --dry-run
# Sweep every project under ~/.claude/projects/*/memory/
npx claude-mem memory ingest --all --dry-run
然后运行真正的摄取:
# Ingest the current repo's memory (default source = cwd)
npx claude-mem memory ingest
# Ingest from an explicit directory
npx claude-mem memory ingest --source ~/.claude/projects/-home-you-code-app/memory
# Ingest everything
npx claude-mem memory ingest --all
选项¶
| 选项 | 作用 |
|---|---|
| (无) | 来源 = 你运行命令所在仓库的 memory 目录。 |
--source <dir> |
从明确的 memory/ 目录摄取。它必须位于 Claude Code 的 projects 目录(~/.claude/projects 或 $CLAUDE_CONFIG_DIR/projects)内;任何其他位置,包括指向该目录之外的符号链接,都会被拒绝。 |
--all |
扫描所有 ~/.claude/projects/*/memory/ 目录。 |
--dry-run |
仅进行零花费解析和计数。不启动 worker,不写入数据库。请先运行此命令。 |
--require-cwd |
跳过无法解析其来源 cwd 的孤立项目目录(而不是在回退项目下摄取它们)。 |
运行方式¶
--dry-run纯粹是解析与计数——它完全在 CLI 进程中运行,不接触 worker,也不接触数据库,不产生任何花费。- 真正的摄取会将数据存储到位于 worker 中的 SQLite 观察数据库。CLI 在需要时启动 worker,并在摘要到达 worker 时通过 HTTP(
POST /api/memory/ingest)驱动导入。批量导入不受时间限制。 - 无法读取的文件会被报告为
failed;其余导入会继续执行。符号链接形式的笔记绝不会被跟随解析,超过 64 KB 的笔记不会被读取;两者都会报告为skipped,并各自标明原因。在扫描过程中被替换为符号链接的笔记,在打开时会被拒绝,并报告为failed。位于 projects 目录之外或不存在的来源,worker 会返回400。 - 只会导入记忆笔记。一个同级 transcript 文件会被读取以获取其
cwd,用于像实时捕获那样确定项目键;它的内容绝不会被摄取。
Frontmatter¶
主题文件带有一个小的 YAML frontmatter 块,该块会作为观察元数据被保留:
---
name: recent-work
description: "What was done in the most recent session"
metadata:
node_type: memory
type: project
originSessionId: 74e59070-...
---
<the distilled prose — stored as the observation body>
metadata.type(例如 project、feedback、reference、user)和 metadata.originSessionId 会被传递保留;没有 frontmatter 的文件会按原样使用其正文存储。
幂等性¶
摄取操作可以安全地重复运行。观察在插入时会按内容哈希去重,因此已经导入的文件会被报告为 already-imported 并跳过——只有新增或变更的文件会被存储。
即使文件保留相同的标题且 CLAUDE_MEM_DEDUP_ENABLED=true,变更后的正文也会被存储。原生笔记使用精确内容去重;对生成的观察仅按标题合并不会丢弃笔记修订版本,也不会丢弃共享同一标题的不同主题文件。更早的修订版本仍然可用。
摘要行会报告结果:
相关¶
- 记忆导出/导入 — 在不同安装之间共享记忆集合。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem