← ClaudeAtlas

memory-overhaullisted

给混乱膨胀的 Claude Code 项目记忆系统做一次性重构——git 化 + lint 结构闸 + hook 自动提交 + 三热文件瘦身 + 单一事实单一家 + 索引贴顶时分层(常驻层/域索引)。当用户说记忆系统乱/handoff 太大读不动/记忆错乱/索引超预算/要部署记忆方案时使用。
weisbert/claude-memory-overhaul · ★ 1 · AI & Automation · score 72
Install: claude install-skill weisbert/claude-memory-overhaul
# 记忆系统重构(memory-overhaul) 把一个 append-only 膨胀、并发覆盖、纪律靠自觉的项目记忆目录,改造成 **git 版本化 + 机械闸强制 + hook 自动提交** 的系统。本方法在 WalkingReader 项目实战验证过(handoff 35k→3.6k 字符、backlog 63k→5.6k、lint 闸当天就拦住并发会话的 megaline)。 **核心理念**(向用户解释时用):capture ≠ maintain。纯 prose 纪律没有 forcing function 必然漂移——"不是你忘了,是流程允许你忘"。修法 = 把生产系统的闸门哲学用在记忆系统自己身上:历史进 git(文件只存现在时)、结构违规 FAIL、收尾动作由 hook 兜底而非靠记得。 **零信息丢失承诺**:第一步就是 git baseline commit,之后删的一切都可考古。对用户明确这一点,才能放心大刀瘦身。 ## 前置确认 1. 记忆目录路径在系统提示里(`~/.claude/projects/<sanitized-cwd>/memory/`)。目录不存在或只有几个小文件 → 不需要本方案,只部署 Phase 2+3(闸+hook)当预防即可,跳过瘦身。 3. **先判断项目有没有接语义检索记忆层**(OpenViking 等):看 `~/.openviking/ovcli.conf` 是否存在、或 `claude plugin list` 里有没有 `openviking-memory`。**接了的话 Phase 4 的索引部分整个换路**(见该节「已接语义检索层」分叉)——手写索引/触发器映射本质是人肉做检索优化,有了语义检索就是重复劳动,而且会腐烂。 2. 平台:Windows 用 `templates/*.ps1` + `templates/settings-hooks.windows.json`;macOS/Linux 用 `templates/*.sh` + `templates/settings-hooks.unix.json`。两版逻辑一一对应、对同一目录给同样的判定(bash 版依赖 perl 做 UTF-8 字符计数,macOS/Linux 自带)。 ## Phase 0 — 诊断(先测量,再动手) - `ls` 记忆目录:文件数、大小、mtime。找出三类病:**巨石文件**(handoff/backlog/archive 类,>20KB)、**索引膨胀**(MEMORY.md 尺寸 = 每场必付的 token 税)、**append-only 违规**(handoff 里的"归档·上轮"堆叠)。 - 试 Read 最大的文件——读不动(超 token 上限)本身就是最有力的诊断证据。 - grep 找**同一决策多处落盘**的重复(多个文件复述同一个"当前生效"事实 = 漂移温床)。 - 把诊断结果(带具体数字)报给用户再开工;如果用户已经明确说"直接做",报完继续不等确认。 ## Phase 1 — git 化(任何删改之前) ``` cd <memory目录> git init -b main printf '* -text\n' > .gitattributes # 关掉换行转换,避免 CRLF 噪音 git add -A && git commit -m "baseline: memory dir as-is before overhaul (<关键数