同一个组织的记忆不要按目录分裂
在父目录启动有 200 多条记忆,进子仓库只剩 8 条:自动记忆按启动位置分家,同一个坑反复踩
同一组织统一一个自动记忆目录,别让记忆按启动目录分家
发生了什么
我习惯在一个组织的父目录启动 Claude Code,做跨仓库的事。一年下来,那里攒了 200 多条自动记忆:踩过的坑、个人偏好、各种“别这么做”。
有一次我直接进某个代码仓启动,发现它对这些一无所知,这个仓库名下的记忆只有 8 条。两边互相看不到:在父目录会话里早就记下的坑,到了子仓库会话里又踩了一遍。
为什么会这样
自动记忆默认存在 ~/.claude/projects/<project>/memory/,<project> 按 git 仓库来算:同一个仓库的子目录和 worktree 共用一份;不在 git 仓库里时(比如父目录),就按启动目录算。于是父目录一份、每个子仓库各一份,彼此隔离。
这种分裂不容易被发现,因为每个地方看起来都“有记忆”。另外,每次启动只加载 MEMORY.md 索引的前 200 行或前 25KB,条目多了,合并时还得顺手精简。
怎么做
选一个统一目录,各仓库都指过去。在这个组织每个仓库(包括父目录)的 .claude/settings.local.json 里写:
{
"autoMemoryDirectory": "~/.claude/org-memory/<组织名>"
}路径写绝对路径或以 ~/ 开头。推荐放在各仓库的 .claude/settings.local.json(不进 git)或用户级设置;部分版本会忽略项目级 .claude/settings.json 里的这个设置,出于安全考虑也不建议把它提交进仓库。放用户级 ~/.claude/settings.json 时要注意,那样所有项目共用一份,两个组织的记忆会混在一起。
合并已有记忆。先整体备份,再用 ls ~/.claude/projects/ 找到父目录和各子仓库对应的目录,把各自 memory/ 下的主题文件拷进新目录。几份 MEMORY.md 索引让 Claude 合并去重,控制在 200 行以内。
验证。在子仓库开一个新会话,用 /memory 打开自动记忆文件夹,确认指向的是统一目录;再问一个只在父目录记过的坑,看它是否知道。
不要再加新的存储。团队结论进 ops 仓(经审查),个人判断留在这份自动记忆里。