如何讓 Claude Code 記住昨天寫了什麼?我設計了一套跨 Session 的 AI 開發「外部記憶體」系統
如何讓 Claude Code 記住昨天寫了什麼?我設計了一套跨 Session 的 AI 開發「外部記憶體」系統
💡 起點:一個讓人抓狂的問題
用 Claude Code 開發產品的人都遇過:你花了兩小時跟 AI 討論架構、做出關鍵決策、寫好程式碼。隔天打開新 Session 說「繼續上次的功能」,Claude 卻一臉茫然。
這不是 Claude 不夠聰明,而是 Context Window 的本質限制,每個 Session 都是白板。大多數人選擇在 System Prompt 塞更多背景,但這治標不治本,反而壓縮了真正任務可用的 Token。
我的解法:把記憶外化到檔案系統,並設計精確的「按需載入」規則。
第一步:釐清核心問題
決定 AI Agent 能力上限的,不是 Agent 的數量,而是 Context Window 裡裝了多少有用資訊。
Context window 就像 AI 的 RAM。問題不在於「怎麼買更多 RAM」,而是「怎麼讓每次 Session 只載入剛好夠用的資訊」。
第二步:三文件系統,各司其職
我設計了一套「給 Agent 讀」的導航架構:
PRD.md:功能規格 + 完成狀態。它是唯一事實來源,定義「做到什麼程度算完成」。TODO.md:實作任務 + 進度追蹤。使用[~](進行中)作為中斷後的重入錨點,解決「上次做到哪」的問題。DECISION.md:技術決策紀錄。解釋「為什麼程式碼長這樣」,防止新 Session 的 AI 把刻意為之的設計當 Bug 去「修正」。
關鍵機制:F-ID 交叉對應
透過 F001、F002 等編號,讓規格、任務、決策三者互相指向。刪除功能不重排 ID,永遠可追蹤。
第三步:CLAUDE.md 的分層設計
Claude Code 啟動時會自動載入 CLAUDE.md。我將其拆分為「全域」與「專案」兩層,避免 Context 浪費:
- 全域 (
~/.claude/CLAUDE.md):僅 44 行,只放 GitHub 規範、部署規則等跨專案通用的核心守則。 - 專案層 (
/project/CLAUDE.md):由自定義的/project-init生成,包含該專案的技術棧與工作流規範。
第四步:三道自動化防線 (Hooks)
單靠 Prompt Following 的準確率不是 100%。我利用 Claude Code 的 Hooks 機制建立了機械式的強制執行:
| 防線 | 時機 | 作用 |
|---|---|---|
| 防線一:注入背景 | 每次送出 Prompt 前 | 自動注入 TODO 當前任務與 DECISION 核心守則,讓 Agent 被動變主動。 |
| 防線二:一致性驗證 | 每次編輯文件後 | 自動校正 PRD 與 TODO 是否同步,發現不一致立刻發出警告。 |
| 防線三:Git 阻斷 | pre-commit | 最終關卡,若文件邏輯有衝突則中止 commit,嚴禁錯誤文件進版本庫。 |
第五步:規則寫法決定可靠度
這是設計過程中最重要的洞察:別讓 AI 做「判斷題」,要讓它做「選擇題」。
- ❌ 判斷性寫法:「有重要技術決策時,記錄到 DECISION.md。」
- ✅ 枚舉清單寫法:
必須寫:引入新 npm 套件、兩方案選一、刻意不優化、workaround、Schema 決策。 不用寫:變數命名、元件拆分、照 PRD 直接實作。
透過枚舉清單,AI 只需要對照清單打勾,大幅降低了語意理解的判斷空間,可靠度接近 100%。
🚀 結語:這套系統能幫你什麼?
這套系統並非讓你不用 Review,而是讓你的 Review 能量集中在「判斷題」而非「機械錯誤」。
- Agent 每次 Session 都能無縫銜接。
- 技術決策不會跨 Session 遺失。
- 機械性錯誤(ID 對不上、狀態沒同步)自動攔截。
這邊先粗淺的介紹一下,有機會再來個深度介紹。
真正的穩定來自設計,不來自祈禱。
