如何打造不會遺忘的 AI Agents(使用 Memory Files)

@sairahul1
英語4 週前 · 2026年6月19日
395K
256
44
16
773

TL;DR

AI Agents 常因無法在對話間維持持久的上下文而表現不佳。透過使用如 CLAUDE.md 和 AGENTS.md 等記憶檔案,開發者可以建立能記住專案規則並隨時間學習模式的 Agents。

大多數 AI Agent 失敗的原因不是模型不好。

它們失敗,是因為每次新對話都像失憶一樣從頭開始。

你跟 Claude 說:「我們用 pnpm,不用 npm。」

下次對話:它又試 npm。

你跟它說:「這裡不用預設匯出。」

下次對話:它寫了一個預設匯出。

你每次的修正,都會在對話結束時消失。

有一個單一檔案就能解決這個問題。

我花了三個月不斷重複同樣的指令才找到它。

以下是我學到的一切。

為什麼大多數 AI Agent 都會失敗

Rahul - inline image

問題不在模型。

在於模型底下缺少的那一層。

→ 你寫提示詞

→ Agent 執行任務

→ 對話結束

→ 記憶消失

→ 下次對話:同樣的錯誤

→ 你重複同樣的指令

→ 永遠循環

這個循環是 AI 編碼中浪費時間的最大來源。

不是錯誤的程式碼,不是幻覺。

是重複。

缺少的那一層:記憶

Rahul - inline image

每個人都執著於哪個模型最聰明。

搞錯層級了。

真正的升級不是更聰明的模型。

而是給模型一個地方儲存它學到的東西。

→ 提示詞 → 告訴 Agent 現在要做什麼

→ Agent → 執行任務

→ 記憶 → 跨對話持續保留上下文

→ 持續的上下文 → 不再重複修正

→ 學習系統 → Agent 真的會隨時間進步

這就是工具和隊友的差別。

工具是你說什麼它就做什麼,每次都從零開始。

隊友會記得昨天的事。

每個 AI Agent 需要的 5 個記憶檔案

Rahul - inline image

一旦你接受記憶是缺少的那一層,接下來的問題就是:記憶存在哪裡?

五個檔案。每個有不同的任務。

→ CLAUDE.md — Claude 的個人簡報文件

→ AGENTS.md — 通用標準,每個主要工具都會讀取

→ CLAUDE.local.md — 你的個人偏好,不會提交到 git

→ MEMORY.md — AI 自動寫下的筆記,關於它自己

→ README.md — 給人類看的,不是給 Agent 看的

我們逐一來看。

CLAUDE.md — 這一切的起點

Rahul - inline image

把這個檔案放在你的專案根目錄。

Claude 每次對話開始時都會讀取它。

把它想像成給一個失憶的新團隊成員看的簡報文件。

一個好的 CLAUDE.md 包含四個部分:

→ 專案背景 — 一句話。「Next.js 電子商務應用程式,整合 Stripe 和 Postgres。」

→ 程式碼風格 — 不是「格式化程式碼」,而是「使用 ES 模組、命名匯出、2 空格縮排。」

→ 指令 — 確切字串。pnpm test:integration,不是「執行測試。」

→ 架構 —「API 路由放在 /src/api/[resource]/route.ts。資料庫存取使用 Repository 模式。」

text
1# CLAUDE.md
2
3## 專案背景
4Next.js 14 電子商務應用程式。Postgres + Stripe 整合。
5
6## 程式碼風格
7- 僅使用 ES 模組
8- 命名匯出,絕不使用預設匯出
9- 2 空格縮排
10- TypeScript 嚴格模式
11
12## 指令
13- 安裝:pnpm install
14- 開發:pnpm dev
15- 測試:pnpm test:integration
16- 語法檢查:pnpm lint:fix
17
18## 架構
19- API 路由:/src/api/[resource]/route.ts
20- 資料庫存取:僅使用 repository 模式
21- 元件:/src/components,每個元件一個檔案

目標:少於 300 行。

每一行都在和實際工作競爭注意力。

執行 /init,Claude 會自動產生一個起始檔案。

然後刪掉大部分的內容。

預設檔案會包含 Claude 已經從你的 package.json 知道的東西。只保留那些沒有這個檔案 Claude 會搞錯的部分。

@imports 系統 — 保持精簡

Rahul - inline image

CLAUDE.md 不需要容納所有東西。

它可以匯入其他檔案:

查看

@README .md 取得專案概覽 查看

@docs/api-patterns .md 取得 API 慣例 查看

@package .json 取得可用的 npm 腳本

匯入可以遞迴 — 最多 5 層。

這解決了「單一巨大檔案」的問題。

對團隊來說:前端團隊擁有 docs/frontend-rules.md。

安全團隊擁有 docs/security.md。

CLAUDE.md 只是匯入它們全部。

一個根檔案。多個專門的來源。

AGENTS.md — 通用標準

Rahul - inline image

CLAUDE.md 只對 Claude 有效。

如果你的團隊也使用 Cursor、Copilot 或 Gemini CLI — 它們不會讀取 CLAUDE.md。

AGENTS.md 解決了這個問題。

一個檔案。每個主要的 Agent 都會讀取。

支援的工具包括 Claude Code、Cursor、GitHub Copilot、Gemini CLI、Windsurf、Aider、Zed、Warp 等等。

它是標準的 Markdown。不需要特殊的 schema,也不需要使用 YAML。

text
1# AGENTS.md
2
3## 專案概覽
4基於 Next.js 14、Postgres 和 Stripe 建立的電子商務平台。
5
6## 建置與測試
7- 安裝:pnpm install
8- 開發:pnpm dev
9- 測試:pnpm test
10- 語法檢查:pnpm lint:fix
11
12## 程式碼標準
13- TypeScript 嚴格模式
14- 命名匯出優於預設匯出
15- API 路由遵循 REST 慣例,放在 /src/api/
16
17## 測試需求
18- 所有 PR 必須包含測試
19- 單元測試使用 vitest,端到端測試使用 playwright

把它想像成給 AI Agent 看的 README。

README.md 是給人類看的。AGENTS.md 是給所有 Agent 看的,不論是哪一家廠商。CLAUDE.md 則是在上面加入 Claude 專用的額外內容。

它們是互補的,不是彼此競爭。

自動記憶 — 會自己寫筆記的 AI

Rahul - inline image

這是最新也最有趣的一層。

Claude Code 現在會在你的工作階段中自動寫下自己的記憶檔案。

memory/ ├── MEMORY.md ← 索引,每次對話都會載入 ├── debugging.md ← 除錯模式的筆記 ├── api-conventions.md ← API 設計決策 └── ...

關鍵的轉變:

你寫 CLAUDE.md。你提供指令。

Claude 寫 MEMORY.md。它記錄下它學到的東西。

→ 人類寫規則

→ Agent 在工作中發現模式

→ Agent 寫下自己的記憶

→ 未來的對話從更高的起點開始

你可以直接觸發這個動作。在一個高效的對話結束時,只要說:

「用你今天學到關於我們程式碼庫的知識,更新你的記憶檔案。」

學到的東西會留存下來。不用再第五次重新解釋你的自訂 ORM 包裝器。

隨時執行 /memory 來檢視或編輯 Claude 儲存的內容。

先 /init 再刪除的工作流程

Rahul - inline image

在新專案上啟動記憶檔案最快的方法:

  1. 在專案目錄中執行 /init
  2. Claude 會根據你的程式碼庫產生一個起始的 CLAUDE.md
  3. 刪掉你不需要的部分

第三步是大多數人搞錯的地方。

產生的檔案是草稿,不是成品。

它常常包含一些填充內容。「這個專案使用 JavaScript。」謝謝 — 從 package.json 就能看出來。

從合理的草稿中編輯刪減,比從空白檔案開始寫要好。

設定好之後,有機地逐步建立。

當 Claude 做出錯誤假設時 — 例如它一直匯入一個已棄用的套件 — 不要只修正它一次。

告訴它:「加到我的 CLAUDE.md:總是從 @company/utils-v2 匯入,不要從 @company/utils。」

這個指令會持續存在於未來的每一次對話。

每隔幾週,請 Claude 檢視並清理 CLAUDE.md。

指令會累積。有些會變成多餘的。有些會彼此衝突。快速整理一下可以保持精簡。

我的實際設定

Rahul - inline image

在跨越多個正式專案測試過這一切之後,以下是留下來的做法:

AGENTS.md 放在專案根目錄 — 任何 AI 工具都會讀取的共用指令。包含建置指令、程式碼標準、測試需求。

CLAUDE.md 使用 @imports 引入 Claude 專用的行為。保持在 100 行以下,大部分指向 docs/ 目錄中的檔案。

CLAUDE.local.md 存放個人偏好 — 我的測試資料、沙箱 URL、快捷指令。絕不提交到 git。

啟用自動記憶。 Claude 會自己寫筆記。我每月檢視一次。

其他所有東西都用符號連結取代,指向 AGENTS.md。單一事實來源。

bash
1# 多工具一致的符號連結設定
2ln -sfn AGENTS.md .github/copilot-instructions.md
3mkdir -p .cursor/rules && ln -sfn ../../AGENTS.md .cursor/rules/main.mdc

不優雅。

但它消滅了團隊中每個工具之間的指令偏差。

更大的轉變

Rahul - inline image

大多數開發者認為:

更好的模型 = 更好的 Agent。

錯。

真正的公式是:

模型 + 記憶 + 檢索 + 回饋 = 有用的 Agent

一個更聰明的模型但沒有記憶,明天還是會忘記你的測試指令。

一個普通的模型但有很好的記憶,每週都會變得更敏銳。

記憶是複利變數。

模型智慧則不是。

我對 AI 工作流程做出的最大改進,不是切換模型。

而是給模型一個記憶。

差別在於:

「Claude,我們用 pnpm」 — 每一次對話

和:

「Claude 已經知道了」 — 每一次對話

這正是工具和隊友之間的差距。

如果這篇文章對你有幫助:

→ 分享出去,讓每個還在對 Claude 重複說同樣話的開發者都看到

→ 追蹤 @sairahul1 獲取更多能在你睡覺時持續累積的系統

→ 把這篇收藏起來 — 今晚就設定好,明天就不用再修正了

我寫關於 AI、打造產品,以及不需要你也能運作的系統。

一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章