記憶與脈絡:為什麼 Agent 會忘記
第 4 課結束時,你的多代理實戰跑得很順——orchestrator 派出 subagent、平行完成任務、匯回報告。然後你關掉視窗。
隔天早上再開 Claude Code,輸入:「繼續昨天的競品分析。」
它說:「請問你在說什麼任務?」
這一刻就是本課的起點。對 agent 而言,每一個新的對話視窗都是一塊全新的白板——昨天研究了什麼、你說過要什麼風格、你的專案叫什麼名字,全部歸零。這不是 Claude 特別健忘,也不是程式 bug:AI 語言模型是**無狀態(stateless)**設計,它沒有跨 session 的長期記憶。
你有三個選擇:每次開對話都花 5 分鐘重新自我介紹;放棄讓 agent 長期協作;或者——學會這一課教的記憶機制。
這堂學什麼
- Context window 是什麼,為什麼決定了 agent 能「記多少」
- 記憶的四層架構:從工作記憶到持久記憶,哪些會消失、哪些不會
- CLAUDE.md 的設計原理與實際寫法——讓 agent 每次開啟都記住你的規則
- Claude Code auto memory:agent 自動幫自己記筆記的機制
- 長任務接力策略:跑超過 context 上限的任務怎麼辦
- RAG 是什麼:知識庫掛載的白話預告(第 7 課綜合實戰會用到)
觀念一:Context Window 就是 AI 的工作桌
你工作時,桌面放得下的東西是有限的。一本書、幾張便利貼、一疊報告——當桌面滿了,新的文件進來,你就得把舊的收起來。
AI 的「桌面」叫做 context window。它的單位是 token(中文一個字約 1.5 個 token),代表這次對話裡 AI 能同時「看到」多少內容。各家主力模型的上限(2026 年 7 月):
| 模型 | Context Window |
|---|---|
| Claude Sonnet 4.5 / Opus 4.5 | 200K tokens |
| Claude Opus 4.8(旗艦) | 1M tokens |
| GPT-4o | 128K tokens |
200K tokens 大約等於一本 250 頁的中文書——但 agent 跑長任務時會很快把它填滿:系統提示、CLAUDE.md 的內容、你說的每一句話、每一個工具呼叫結果,全部都在這個桌面上佔空間。
Context window 滿了,agent 要嘛停下來等你決定,要嘛把舊的對話「摘要壓縮」來騰出空間(Claude Code 的 auto compact)——但被壓縮的細節就消失了。更根本的問題:你關掉視窗、結束 session,整個桌面清空。下次開新對話,桌面是全新的。這就是「agent 失憶」的技術根因——不是它不想記,是設計上本就沒有跨 session 的記憶。

觀念二:記憶的四層,哪些會消失
認識 context window 之後,接下來要理解:AI 的「記憶」其實有四層,存活週期完全不同。
| 層次 | 叫什麼 | 存活週期 | 典型例子 |
|---|---|---|---|
| 第一層 | 工作記憶(in-context) | 對話期間 | 這次你說的所有話 |
| 第二層 | 壓縮摘要(compact 後) | 同一 session 內 | auto compact 保留的重點 |
| 第三層 | 持久指令(CLAUDE.md / auto memory) | 每次開啟都載入 | 你寫的規則、agent 自動記的偏好 |
| 第四層 | 外部知識庫(RAG / 檔案) | 永久,按需取用 | 產品文件、合約、客服記錄 |
前兩層在你關掉視窗後消失。第三、第四層才是真正能跨 session 的記憶。
這堂課的核心是第三層(CLAUDE.md + auto memory);第四層(RAG)本課只做白話預告。

觀念三:CLAUDE.md——讓 Agent 每次都記住你的規則
CLAUDE.md 是一個純文字的 Markdown 檔案,放在指定位置。Claude Code 每次啟動時會自動讀取它,等於你先替自己說好「嗨,這個專案的規矩是這樣的」。
CLAUDE.md 有三個層級:
- 全局(~/.claude/CLAUDE.md):你個人的偏好,不管在哪個專案都套用。例如「我喜歡繁體中文回覆、程式碼用 TypeScript、套件管理用 pnpm」
- 專案(專案根目錄/CLAUDE.md):這個專案特有的規矩。例如「測試框架是 Vitest、API 文件在 /docs、不要動 layout.tsx」——這份通常 commit 進 repo,團隊共用
- 本機個人(專案根目錄/CLAUDE.local.md,加進 .gitignore):你個人習慣,不想同步給隊友。例如「我的本機 debug port 是 3001」
三個層級同時生效,越具體的越優先。
有效的 CLAUDE.md 寫什麼?
根據社群整理(2026 最佳實踐),五個核心區塊:建置與測試指令(Claude 不知道你用什麼指令跑、測試、lint,不說它就猜,猜錯就浪費三個回合)、架構說明(主要目錄用途與重要檔案位置)、程式風格規定(TypeScript 嚴格模式、不用 any 之類)、禁止事項(哪些檔案不能動、提交前必跑什麼)、個人偏好(語言、說明習慣、改動前要先告知計畫)。
一個重要原則:CLAUDE.md 的內容要精,不要多。 目標控制在 200 行以內,超過之後遵守率明顯下降——每一行都應該是「沒有這行,Claude 就可能犯錯」才值得留著。

觀念四:Auto Memory——Agent 幫自己記筆記
除了你手動寫的 CLAUDE.md,Claude Code 還有一個更動態的機制:auto memory。
邏輯是這樣:你跟 Claude Code 工作時,如果你糾正了它的行為、或確認了某個做法有效,Claude 會判斷「這個資訊對未來的對話有用嗎?」——如果有用,它會自動把筆記寫進 ~/.claude/memory/ 資料夾。下次開新對話,它自動讀取這份索引,等於「記住了」你上次說的事。
Auto memory 分四類:user(你的角色與偏好)、feedback(你給過的糾正)、project(架構決策與現狀)、reference(重要資源位置)。
版本要求:auto memory 需要 Claude Code v2.1.59 以上,預設開啟。 輸入
/memory查看已記住的內容;想手動寫入,直接說「請把這件事存進你的記憶」。
觀念五:長任務的接力策略
Claude Code 在 context 接近上限(大約 95%)時會自動 compact——保留任務目標,但中途的具體限制條件可能被摘要掉。解法是主動讓進度落地到檔案:
每完成一個主要步驟,把「目前所有確認的決定和限制條件」追加到 progress.md。
新步驟開始前先讀 progress.md 確認現狀。不要依賴對話記憶。
就算 context 被壓縮或下次開新 session 繼續,agent 都能從檔案重建脈絡——磁碟上的資料不隨對話消失。
另一個技巧是手動 compact:跑完一個大段落之後輸入 /compact,並在指令前補一句「compact 時必須保留:已確認的決定、已完成的步驟、技術限制條件」,確保重要資訊留在摘要裡。

觀念六:RAG 是什麼(白話預告)
CLAUDE.md 和 auto memory 解決了「規則和偏好」的持久記憶。但如果你需要讓 agent 查詢一個很大的知識庫——公司所有的產品文件、一份 500 頁合約、三年的客服記錄——這些東西根本塞不進 context window。
這時候用的方法叫 RAG(Retrieval-Augmented Generation,檢索增強生成)。
白話解釋:agent 有一個外部的「圖書館」。你問問題時,agent 先去圖書館查相關段落(檢索),把查到的幾頁放進 context window 用來回答,而不是把整個圖書館都塞進去——知識庫可以超大,context 不會爆。
RAG 的完整設定涉及向量資料庫、embedding 等技術細節——這堂課你只需要記住:RAG 是第四層記憶的實現方式,解決「大量文件無法放進 context」的問題。第 7 課綜合實戰會用到。

手把手實戰:設定讓 Agent 記住你偏好的記憶檔
這個實戰做兩件事:建一份個人全局 CLAUDE.md,以及測試 auto memory 怎麼觸發。
Step 1:建立你的全局個人 CLAUDE.md
開啟終端機,建立全局記憶檔:
mkdir -p ~/.claude
用任何文字編輯器建立並打開 ~/.claude/CLAUDE.md。貼入以下範本,根據你的習慣修改:
# 我的個人偏好
## 溝通風格
- 請用繁體中文回覆
- 解釋技術概念時,先說「為什麼」再說「怎麼做」
- 給選項時,說清楚每個選項的取捨,不只是條列
- 修改任何程式碼或檔案前,先告訴我你打算做什麼,確認後再動手
## 技術偏好
- 程式語言:TypeScript(不用 `any`,型別要明確)
- 套件管理:pnpm 優先,不用 npm
- 格式化工具:Prettier
## 工作流程
- 有不確定的地方先問我,不要假設
- 一次改動不要超過三個檔案,除非我明確說全部一起改
- 完成後告訴我「可以測試了」,不要幫我直接執行
存檔。從這一刻起,只要你開 Claude Code 的任何對話,它都會先讀這份檔案。
Step 2:建立專案 CLAUDE.md
切換到你的專案資料夾,建一份專案層級的 CLAUDE.md。重點是「這個專案特有的事情」,不要重複全局已經寫的個人偏好:
# 用你自己的專案路徑,這裡以範例說明
touch ~/my-project/CLAUDE.md
# 專案:個人品牌網站
## 技術棧
- 框架:Next.js 15,App Router
- 樣式:Tailwind CSS v4
## 指令
- 開發:`pnpm dev`(port 3000)
- 建置驗證:`pnpm build`
- 格式:`pnpm lint`(提交前必跑)
## 目錄結構
- `app/`:頁面(App Router)
- `components/`:可重用元件
- `lib/`:工具函式
## 禁止事項
- **不要動** `app/layout.tsx` 的 `<head>` 區塊(SEO 已手動調好)
- API 金鑰一律放 `.env.local`,不進 git
這份 CLAUDE.md commit 進 repo 後,隊友的 Claude Code 也會自動讀取。
Step 3:讓 Claude Code 確認已讀取記憶
在 Claude Code 對話框輸入:
請告訴我你目前載入了哪些記憶檔案,以及你記住了哪些關於我的偏好和這個專案的規則。
它應該能說出你在 CLAUDE.md 裡寫的設定:語言偏好、指令、禁止事項等。如果它回答說沒有特別的偏好、或不知道這個專案的框架——代表 CLAUDE.md 沒有正確讀取。確認:路徑有沒有打錯、檔案名稱是不是 CLAUDE.md(大小寫都要對)、有沒有重新啟動 Claude Code。
Step 4:觸發 auto memory,讓 Claude 自己記筆記
在正常工作的過程中,糾正 Claude 的行為就能觸發 auto memory。試試這樣:
你剛才的解釋順序弄反了——我說過我希望先說「為什麼」再說「怎麼做」。
以後遇到解釋技術概念的時候,請記住這個順序。把這個習慣存進你的記憶。
Claude Code 感應到這是值得記住的反饋時,會在背景把筆記寫進 ~/.claude/memory/。輸入 /memory 查看目前已儲存的內容。
Step 5:驗收——關掉視窗、重新開啟
完全關閉 Claude Code。重新開啟,建立全新對話。輸入:
你記得我喜歡用什麼套件管理工具?這個專案的建置指令是什麼?修改程式碼前你要先做什麼?
如果它能正確回答「pnpm」、「pnpm build」、「先告訴你計畫再動手」,你的記憶機制就設定成功了。
這是這堂課最重要的一刻:你讓 agent 第一次擁有了跨 session 的記憶,之後開新對話不再需要重新自我介紹。
常見坑
坑 1:CLAUDE.md 愈長,agent 遵守率愈低
症狀:你寫了一份 400 行的 CLAUDE.md,列滿各種規定,但 Claude 照樣不遵守——有時還是用了 npm、有時忘了先說計畫、有時又用英文回覆。
原因:CLAUDE.md 的內容都佔用 context space。檔案太長,Claude 讀完就記不住全部了,後半段規定幾乎形同擺設。
解法:把 CLAUDE.md 砍到 50 行以內,只留「沒有這條,Claude 就會犯錯」的規定。其餘靠 auto memory 在工作中累積。
坑 2:個人偏好和專案規定混在同一份 CLAUDE.md
症狀:隊友 clone 你的 repo,Claude Code 讀到你的個人偏好(「繁體中文回覆」「不要用 npm」),但隊友習慣英文操作、平時用 yarn——雙方互相干擾。
解法:嚴格分三份——~/.claude/CLAUDE.md 個人偏好(不進 repo)、CLAUDE.md 專案共用規定(commit 進 repo)、CLAUDE.local.md 個人且不給隊友看的(加進 .gitignore)。三份分開,個人習慣不影響隊友。
坑 3:Context compact 把重要決策摘要掉了
症狀:任務跑到一半,Claude 突然問你「你之前說的 API endpoint 要用哪種格式?」——但你兩小時前就說清楚了。對話裡看到「(對話已自動壓縮)」的提示,代表 auto compact 啟動,你說過的具體限制條件在壓縮中被捨棄。
解法:長任務一開始就加這段指令:
每個步驟完成後,把「目前所有確認的決定和限制條件」追加到 decisions.md。
新步驟開始前先讀 decisions.md。不要依賴對話記憶來記住重要決策。
一旦關鍵決策存進檔案,compact 再猛也不會把它弄丟。
坑 4:Auto memory 沒有自動觸發,以為功能壞了
症狀:你糾正了 Claude 好幾次,跑 /memory 查看卻空空如也。
原因:auto memory 觸發有條件——反饋要「清楚到讓 Claude 判斷這是可重用的偏好」才會觸發。只說「這樣不對」,Claude 不知道要記什麼;說「以後遇到 X,用 Y 處理」,它才會記。
解法:把糾正說完整,加上「以後」這個關鍵詞,再加「請把這個習慣記下來」:
以後給我技術選項時,請同時列出每個選項的缺點,不只是優點。請把這個習慣記下來。
說清楚「以後遇到 X 情況,用 Y 方式處理」,auto memory 才有東西可寫。
作業
- 建立你的全局 CLAUDE.md:照本課的範本,在
~/.claude/CLAUDE.md建一份。至少包含:回覆語言偏好、一個技術偏好、一個工作流程習慣。建完後重啟 Claude Code,問它「你記得我有什麼偏好?」驗證能說出你寫的設定。 - 建立一份專案 CLAUDE.md:為你目前在用的任何專案建一份。只寫:指令、目錄結構、至少一條禁止事項。
- 觸發並查看 auto memory:在工作中糾正 Claude 的某個行為,說「以後請記得 [某某事],請把這個存進你的記憶」,輸入
/memory看有沒有記進去,關掉視窗重開再驗證。 - 選做:接力策略測試:選一個多步驟任務,開頭加入「每步完成後把結論追加到 progress.md」。跑完後打開 progress.md 看看。
下一課預告
你的 agent 現在有記憶了。但「有記憶」帶來一個新問題:你授權它的工具,它也記得怎麼用。讀你的信箱、動你的資料夾、呼叫你的 API——如果 agent 方向跑偏或被惡意誘導,它可能用這些工具做出你不想要的事。
第 6 課《授權與安全:別讓 Agent 闖禍》,我們把這個面向攤開:哪些操作需要你明確授權、怎麼設定最小權限原則、agent 遇到不確定情況時如何讓它停下來問你——讓 agent 能幹,同時也不自己闖禍。