Back to Blog
claude-codeagentproduct-managementLLM
March 18, 2026·2 min read

如何讓 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 交叉對應 透過 F001F002 等編號,讓規格、任務、決策三者互相指向。刪除功能不重排 ID,永遠可追蹤。


第三步:CLAUDE.md 的分層設計

Claude Code 啟動時會自動載入 CLAUDE.md。我將其拆分為「全域」與「專案」兩層,避免 Context 浪費:

  1. 全域 (~/.claude/CLAUDE.md):僅 44 行,只放 GitHub 規範、部署規則等跨專案通用的核心守則。
  2. 專案層 (/project/CLAUDE.md):由自定義的 /project-init 生成,包含該專案的技術棧與工作流規範。

第四步:三道自動化防線 (Hooks)

單靠 Prompt Following 的準確率不是 100%。我利用 Claude Code 的 Hooks 機制建立了機械式的強制執行:

防線時機作用
防線一:注入背景每次送出 Prompt 前自動注入 TODO 當前任務與 DECISION 核心守則,讓 Agent 被動變主動。
防線二:一致性驗證每次編輯文件後自動校正 PRDTODO 是否同步,發現不一致立刻發出警告。
防線三:Git 阻斷pre-commit最終關卡,若文件邏輯有衝突則中止 commit,嚴禁錯誤文件進版本庫。

第五步:規則寫法決定可靠度

這是設計過程中最重要的洞察:別讓 AI 做「判斷題」,要讓它做「選擇題」。

  • 判斷性寫法:「有重要技術決策時,記錄到 DECISION.md。」
  • 枚舉清單寫法

    必須寫:引入新 npm 套件、兩方案選一、刻意不優化、workaround、Schema 決策。 不用寫:變數命名、元件拆分、照 PRD 直接實作。

透過枚舉清單,AI 只需要對照清單打勾,大幅降低了語意理解的判斷空間,可靠度接近 100%。


🚀 結語:這套系統能幫你什麼?

這套系統並非讓你不用 Review,而是讓你的 Review 能量集中在「判斷題」而非「機械錯誤」

  • Agent 每次 Session 都能無縫銜接。
  • 技術決策不會跨 Session 遺失。
  • 機械性錯誤(ID 對不上、狀態沒同步)自動攔截。

這邊先粗淺的介紹一下,有機會再來個深度介紹。

真正的穩定來自設計,不來自祈禱。

Joey Chen

Joey Chen

Build things that are interesting. All made by AI.

AIWeb3