AI Agent 是怎麼自我學習的?我的歸納是「超有紀律的記憶管理」。
從 metacognition 到 self-improving agent,整理一條完整的演進脈絡。
我最近在研究 agentic system 的自我成長機制,從學術論文 Self-Refine、Reflexion、HyperAgents,一路追到實務套件 Claude Code、everything-claude-code〈ECC〉、Hermes、OpenClaw。
看完之後最大的歸納是這個——所謂的「Agent 自我學習」,本質上就是一套超有紀律的記憶管理工程。從認知心理學一路發展出 Agentic Design Pattern。
一切都從 Meta-cognition 開始
Meta-cognition 「後設認知」這個詞,最早由 Stanford 發展心理學家 John Flavell 在 1979 年提出,現在最常被簡稱為——
「Thinking about your thinking」
學習如何學習
Flavell 原始模型有四個組件,但後人簡化成兩組件版本,反而成為當代主流引用:
- Knowledge of Cognition〈認知知識〉
- Declarative — 知道有哪些策略
- Procedural — 知道怎麼用策略
- Conditional — 知道什麼時候、為什麼要用某個策略
- Regulation of Cognition〈認知調控〉
- Planning — 計劃
- Monitoring — 監控
- Evaluating — 評估
這跟 agent 學習「怎麼學習」關係超大。因為當你把 agent 拆開看,它的能力就是這兩組東西——「我會什麼〈knowledge〉」、「我怎麼決定何時用〈regulation〉」。而所謂的「自我學習」,就是 agent 能夠改進這兩組東西。
二、最有價值的是 Conditional Knowledge — 也就是 Strategic Memory
三種 knowledge 裡,Conditional Knowledge 是最珍貴的——知道什麼時候、為什麼要用某個策略。這在工程上對應到一個學術概念叫 Strategic Memory——帶有因果推論和策略建議的記憶類型。
這個類型是從 Meta HyperAgents 論文中歸納出來,類似的概念是 Operational Knowledge。簡單說,就是那些要傳授「怎麼做」、「做什麼」的實務經驗。Strategic memory 會記錄一條完整的因果鏈——
情境 → 方法 → 結果 → 原因 → 建議
舉個例子——
- 情境:要在一個專案的 PR 流程裡加入自動化測試
- 方法:先讓 agent 寫測試,再讓另一個獨立 agent review
- 結果:bug 攔截率提升、agent 不會自圓其說
- 原因:實作者跟驗證者用同一顆腦袋的時候,會對自己的錯誤產生內部一致的解釋
- 建議:所有「會自我評估」的流程都拆成兩個 agent,不要讓同一個 agent 既做又評
這跟普通的「記事實」完全不同——它是可遷移、可組合、可被未來情境檢索的知識。
順帶補充一下三種最常見的記憶類型——
- Episodic Memory〈情節記憶〉— 記得「發生了什麼」,例如 session對話紀錄
- Procedural Memory〈程序記憶〉— 記得「怎麼做」,例如 workflow 步驟
- Semantic Memory〈語意記憶〉— 記得「什麼是什麼」,例如團隊技術文檔
Strategic memory 跟這三種都不一樣——它記的是「什麼時候用什麼方法、為什麼有效、下次怎麼調」。
整篇研究最大的觀察——所有 self-improving agent 系統,本質上都在生產 strategic memory。
三、為什麼這套概念在認知心理學是有實證的
英國有個叫 EEF〈Education Endowment Foundation〉的政府背書研究機構,研究發現使用 metacognition + self-regulation 的學生,一年內可以產生相當於額外 +7 到 +8 個月 的學習成效。
機制是什麼?他們會在學習後做結構化的反思——分析自己怎麼完成任務、什麼方法有效、什麼沒效、下次該怎麼調整。這就是學霸為什麼是學霸,因為跟「多讀幾遍」完全不同——學霸花時間回頭看自己的學習過程本身,把自己的學習框架『反思〈Reflect〉』出來。白話說,就是「設計一個學習系統」+「舉一反三」。
更有趣的觀察是:弱勢學生除非被明確教導 metacognitive 策略,否則不太會自己發展出這些能力。換句話說——metacognition 是可以被工程化的,不是天賦,是流程。這個觀察直接打開了一條路——如果可以教給人類,那也可以教給 agent。
四、Agent 自我學習的兩個關鍵動作 — Context 提取 + Memory 寫下
把整個研究讀完之後,所有 self-improving agent 系統都在解同一組問題。這個問題只有兩個動作——
- 動作一:Context 的提取
- 什麼時機要提取
- 要提取什麼內容
- 透過什麼方式「觸發」
- 動作二:記憶的寫下
- 寫成什麼格式
- 寫到哪一層
- 怎麼確保下次能找到
看起來簡單,但魔鬼在細節——整個產業所有自我學習系統的差異,幾乎全部集中在「觸發方式」這一層。
五、觸發方式的演進 — 從手動到自動的三段論
這是我看完所有 runtime 後最清楚的演進脈絡——
Level 1: 手動觸發〈Manual〉
代表設計:aviadr1/claude-meta 的 magic prompt。固定一句話——「Reflect on this mistake. Abstract and generalize the learning. Write it to CLAUDE.md.」貼上去就觸發反思。簡單暴力但有效,缺點是全靠人觸發「反思」。
Level 2: 有條件觸發〈Conditional〉
分兩種——
- Deterministic〈確定性〉— Hook 觸發,系統一定會跑(像系統的鬧鐘,到時間一定響)。代表:
Claude Code的 SessionEnd hook、ECC 的 evaluate-session.js、OpenClaw 的 pre-compaction silent turn - Non-deterministic〈機率性〉— LLM 自己判斷要不要記(可能漏可能準)。代表:
Claude CodeAuto Memory 自己決定「這個資訊在未來對話會不會有用」
OpenClaw 的設計特別值得一提——它的觸發是「當 context window 用到一定 threshold 就觸發 silent agentic turn 把記憶 flush 到 disk」。換句話說——把 context 即將溢出當作觸發點,這在 deterministic 觸發裡是很聰明的設計。但我個人不是很買單,因為當 context window 越來越大、或切換不同 model 的時候,觸發的時機反而不受控制。
最強的設計是兩種一起用——Hook 負責「reflection 一定會發生」,LLM 負責「reflection 的品質」。
Level 3: 全自動〈Autonomous〉
代表設計:Hermes Curator、Claude Code 的 Auto Dream。背景跑的整理 agent,使用者根本不用知道它在跑。Hermes Curator 預設一週跑一次,至少 2 小時沒新活動才跑,30 天沒用標記 stale,90 天沒用 archive。
但 Level 3 有個更重要的設計原則——Capture 跟 Consolidate 必須分離:
- Capture = 把資訊寫下來(便宜、隨時可做)
- Consolidate = 整理、蒸餾、合併重疊(昂貴、要 LLM 跑、要時間)
每次 session 結束就 consolidate,看似積極但大部分 session 沒有新洞察,反而累積雜訊——而且每次都花一次 LLM 成本。所以 Auto Dream 推測用 dual-gate——24 小時 + 5 sessions,兩個條件都成立才觸發 consolidate。時間 gate 確保有足夠沉澱,數量 gate 確保有足夠新內容值得整理。Dual-gate 本質上是一種粗糙但有效的成本控制機制——也是 capture / consolidate 分離後才有意義的設計。
六、從 self-learning agent 發展 timeline 看演進
進入 timeline 之前,先思考一個會讓腦袋當機的問題——
有一個 task agent 負責做事,一個 meta agent 負責改進它,請問——誰來改進 meta agent?
再加一層 meta-meta agent 只是把問題往上推,永遠解不開。傳統做法把 meta agent 寫死,但等於幫系統設了天花板——改進的能力被鎖在設計者當初寫的那套邏輯裡。整個 metacognitive agent 的演進史,本質上就是在回答這個問題。
2023 春 · Self-Refine 〈Self-Refine: Iterative Refinement with Self-Feedback, Madaan et al., 2023〉
同一個 LLM 三組 prompts〈generate / feedback / refine〉。Session 內反思,單次任務上的 iterative loop。缺點:只能單次任務,學不到下次。
2023 春 · Reflexion 〈Reflexion: Language Agents with Verbal Reinforcement Learning, Shinn et al., NeurIPS 2023〉
Actor / Evaluator / Self-Reflection 三角色。把 task feedback 轉成 verbal reflection 存進 episodic memory。從 session 內延伸到跨任務記憶——是所有現代 agentic memory 系統的理論起點。
2025 · Metacognition Agentic Pattern
以 Microsoft 的教學為例,experience_data 跨任務累積。跨 session 學習,但反思邏輯固定。
2026 · HyperAgents 〈Meta FAIR + UBC + Vector Institute,ICLR 2026〉
UBC = University of British Columbia〈加拿大頂尖 AI 研究機構〉,FAIR = Meta 的 Facebook AI Research。
真正的突破——meta agent 自己也可演化。Self-improving——task agent 和 meta agent 在同一個 codebase,meta agent 在改 task agent 的同時也能改自己。論文稱之為 metacognitive self-modification。
回到一開始的問題——誰來改進 meta agent?HyperAgents 的答案是:meta agent 自己。不需要 meta-meta-agent,只需要一層,但這一層可以改自己。關鍵設計超級簡單——meta agent 的 prompt 只有一句話:「Modify any part of the codebase at ‘{repo_path}’.」把整個 codebase〈包含 meta agent 自己的程式碼〉都列在可修改範圍裡,演化壓力會讓 meta agent 自然學會改進自己。
我自己最喜歡的一個比較——Reflexion 是在系統內反思,HyperAgents 是系統外反思:
- 系統內反思:反思的內容會變,但反思的機制本身不會變
- 系統外反思:包括「如何反思」這件事本身,都在修改範圍內
對應到現有實務系統——
- Claude Code Auto Dream〈若屬實〉→ 系統內
- Hermes Curator → 系統內
- ECC /evolve → 系統內
- HyperAgents → 系統外
整個產業大部分 production system 還在「系統內」階段。HyperAgents 是第一個讓 meta agent 自己也能演化的系統。
七、設計範式的分類 — 各種派系怎麼整合記憶
把所有看過的設計整理成光譜,按自動化程度由低到高排——
- aviadr1 magic prompt — 人工貼一句話〈低〉
- Christopher Allen seed — 人工 + 結構化 triage〈低〉
- memory-mcp — Stop / PreCompact / SessionEnd hook〈中〉
- claude-mem — Hook + async worker〈中高〉
- ECC v1 — Stop hook signal〈中高〉
- ECC v2 instincts — PreToolUse + LLM 聚類〈中高〉
- OpenClaw memoryFlush — Token threshold 自動〈中高〉
- Hermes Curator — 背景 curator 一週一次〈高〉
幾個值得深入的設計範式——
- Magic Prompt 派 — 固定字串觸發特定模式,把 metacognition 當開關用
- Seeded Reflection 派 — 在 CLAUDE.md 寫一段 seed prompt,每次 session 都載入。Christopher Allen 的 Core Loop:Reflect → Triage → Cascade
- Auto Dream 派 — 背景跑、定期跑、不打擾主流程的整理。四階段:Orient → Gather Signal → Consolidate → Prune
- Memory Consolidation 派 — 不是每次都整理,capture 跟 consolidate 分離。平常只 capture(便宜),累積到一定量才 consolidate(貴但深)
- Instinct + Evolve 派〈ECC v2〉 — 原子單位(instincts)+ 聚類成 skill 的演化機制。對應認知科學的 production rules,可組合可演化。這個很值得看進去,因為它把學習的項目原子化了
八、記憶的儲存方式 — 從原始資料到策略知識的四層階層
不是「記憶」一種東西,是有層次的記憶系統。我把它整理成 L1 到 L4 四層,每層對應不同的認知心理學概念——
- L1:Raw Data〈原始資料〉
- 認知對應:Episodic Memory〈情節記憶〉
- 工程實作:Session transcripts、JSONL log
- 特性:雜亂、未篩選、具時效性
- 類比:你今天上班從早到晚發生的每一件事,沒整理過
- L2:Instincts〈本能〉
- 認知對應:Production Rules〈ACT-R 認知架構〉
- 工程實作:Atomic instinct 檔案〈帶 confidence 分數〉
- 特性:帶情境觸發、可組合、可追蹤
- 類比:「看到深色背景就拿白色字」這種不用想就知道的小規則
- L3:Skills〈技能〉
- 認知對應:Procedural Knowledge〈程序性知識〉
- 工程實作:.md workflows / Skills
- 特性:聚類後的標準化操作、跨情境可重用
- 類比:「寫一篇 FB 文」這種完整的工作流程
- L4:Strategic〈策略〉
- 認知對應:Metacognitive Knowledge〈元認知知識〉— 也就是第二節講的 Strategic Memory
- 工程實作:CLAUDE.md / rules / META 規則
- 特性:指導「如何學習與決策」的高階準則
- 類比:「遇到複雜問題先拆解再執行」這種你做事的哲學
演化路徑是雙向的——
- 自下而上
- L1 → L2:萃取〈從原始素材找出值得記住的觀察〉
- L2 → L3:聚類〈把多個 atomic instincts 合成完整 skill〉
- L3 → L4:抽象〈從具體操作提升到通用原則〉
- 自上而下
- L4 → L3:應用〈把高階原則展開成具體 skills〉
- L3 → L2:細化〈skills 拆解成可單獨追蹤的 instincts〉
- L2 → L1:執行記錄〈instinct 觸發後產生新 episodic 資料〉
各 runtime 在這四層的覆蓋是不同的——
- ECC v2:四層都有〈observations → instincts → evolved skills → CLAUDE.md〉
- Hermes:主要在 L1 + L3〈session DB + skills〉,L2 不顯著
- OpenClaw:主要在 L1〈daily memory + vector index〉,沒有明確 L2/L3 分離
- Claude Code 官方:L1 + L4〈transcripts + CLAUDE.md〉,L2/L3 不存在於官方機制
- HyperAgents:演化 archive 本身就是 L2-L4 混合儲存
最有趣的觀察——大多數系統跳過 L2,直接從 L1 雜訊跳到 L3 結構。這就是為什麼 ECC v2 的 instinct 設計是個突破——它補上了 L2 這層,讓記憶有了「原子單位」可以追蹤、可以組合、可以演化。
還有一個反方向的動作——Promote 機制:
- Consolidation 是向內收斂〈很多 → 一個〉
- Promote 是向外擴展〈局部 → 全域〉
舉個例子——
我在 react 專案看到「always validate input」這條 instinct,信心度 80% 我在 python 專案也看到同樣 pattern,信心度 90% 我在 go 專案也看到,信心度 95% → Promote 觸發:這條 instinct 從 project-scope 提升到 global scope,未來所有專案自動套用
這對應科學發現的過程——科學家不是直接從一個實驗得出普遍定律,而是在多個情境驗證後才敢做 generalization。
Promote 處理的核心張力——
- 完全個人化:每個專案各做各的,無法累積經驗
- 完全普世化:react rules 跑去煩 python 專案,造成干擾
- Promote:先收集情境化證據,當證據足夠才升級成普世規律
L2 instinct 還會帶 confidence 分數〈0.3 - 0.9〉,就是剛剛提到的信心度,對應人類記憶的 strength——
- 看過一次:低 confidence,不主動套用
- 看過幾次:中 confidence,提醒但不強制
- 反覆驗證:高 confidence,自動套用
- 被新觀察打臉:confidence 衰減
讓記憶從「文字」進化到「帶有可信度的判斷」。
但 LLM 對自己的錯誤記憶經常產生高信心值——認知心理學叫 calibration bias〈Galileo 的研究指出 LLM 的 overconfidence 表現甚至比人類更糟〉。所以所有 production-grade 的 metacognitive 系統都做了同一件事——分離 implementer 和 verifier:
- ECC v2 用獨立的 Haiku background agent 做評估
- Hermes 用 Curator 而非 self-judge
- HyperAgents 明確分離 implementing agent 和 reviewing agent
- Claude Code 推測中也有一個 Verification Agent
這已經是 production-grade metacognitive 系統的共同特徵,設計哲學:「The implementer is an LLM. Verify independently.」
Agent 自評不可靠——這是被學術研究、被 production system 一致驗證的結論。
九、如果今天就要做,最小可用版本長這樣
寫了這麼多,講到 HyperAgents 講到 metacognitive self-modification,可能會讓人覺得這套東西遙不可及。最小可用版的 self-improving agent,不需要一開始就做到 HyperAgents。先做到五件事就夠了——
1. 先讓經驗有地方留下來
每次任務都要留下 transcript (對話紀錄)、tool results、至少有 L1 raw data。很多人以為「沒記憶」是模型的問題,其實大部分時候是根本沒記下來——session 結束 = 經驗結束,啪,沒了。如果你在用 Claude Code,這步其實已經幫你做好了——~/.claude/projects/<project>/ 底下就有 session transcript 的 JSONL。L1 是底層,沒有 L1 後面什麼都做不出來。
2. 設一個一定會觸發的 capture 點
別靠 agent 自己「記得要記憶」——它很懶,常常合理化自己的行為。Claude Code 官方 Hooks 提供四種 cadence 可選——SessionEnd、Stop、PreCompact、UserPromptSubmit,可以挑一個用,確保經驗不會直接消失。最簡單的範例可以直接看 ECC 的 evaluate-session.js〈github.com/affaan-m/everything-claude-code〉——100 行的 Node.js,掛在 Stop hook,判斷 session 長度超過門檻就送訊號叫 Claude「現在去評估」。這就是 deterministic 觸發的價值。
3. 固定 observation 格式
不要讓記憶長得每次都不一樣。最簡單的格式就五個欄位——
- 情境〈context〉
- 方法〈what you did〉
- 結果〈what happened〉
- 失敗原因〈if failed, why〉
- 下次建議〈recommendation〉
這就是 strategic memory 的最小可用結構。如果不想自己設計 CLAUDE.md 格式,可以直接 fork aviadr1/claude-meta 的 META section template——它幫你把「教 Claude 怎麼寫規則」的 meta-rules 都寫好了。
4. 把 capture 跟 consolidate 分開
平常便宜地記——Hook 觸發、寫一筆、寫完就走。累積到一定量再做整理——一天一次、或滿 N 筆再 consolidate。不要每輪都 reflect——大部分 session 沒有新洞察,每次都整理只是燒 token 累積雜訊。
實作上有個現成範式叫 Hook + Async Worker——Hook 只負責 enqueue(< 1 秒),重活留給背景 worker process。claude-mem 跟 memory-mcp 都用這種架構,特別是要解決 Claude Code SessionEnd async kill 問題的標準範式(hook 跑太久會被砍掉)。memory-mcp 直接給你一個設定——累積到 80 條觀察才觸發 consolidation。可以直接抄這個門檻當起點。
5. 加 verifier
這條最重要。沒有 verifier 的 self-improvement,很容易把錯誤模式學成高信心規則。不需要多炫——找一個獨立的 LLM call〈用 Haiku 都行〉,問它「這條學習合理嗎?有沒有矛盾?」就夠了。ECC v2 的 Homunculus 架構直接就這樣做——主 agent 跑 Sonnet/Opus,background agent 用 Haiku 做評估。Hermes 的 Curator 也是同樣概念,用獨立的 aux client 跑,不污染主 session 的 prompt cache。關鍵是:不要讓同一個 agent 既當實作者又當評審。
做到這五步,就已經有開始會從經驗長出能力的 agent。剩下的 confidence、promote、self-modification,是這個基礎之上的進階優化。但底層沒打好就直接做 HyperAgents 等級的設計,等於跳過 L1 直接做 L4;從 hook + 固定格式開始,啪,就這樣。
十、整體脈絡與關鍵字總結
回到一開始的命題——
Agent 的自我學習,本質上是一套超有紀律的記憶管理工程。
整套工程可以拆成兩條軸——
- Capture 軸〈什麼時候提取〉 — 手動 → Hook〈deterministic〉→ LLM 自判〈probabilistic〉→ 背景定期 → Self-evolving
- Consolidate 軸〈什麼時候整合〉 — 不整合 → Threshold 觸發 → Dual-gate → 背景 Curator → Meta agent 自己整理整理機制
關鍵字——
- Capture — 把資訊從 working memory 寫到 disk
- Consolidate — 把多筆 raw observations 蒸餾成 strategic insight
- Distill — 從多筆內容中萃取精華
- Promote — 從局部知識升級成全域知識
- Decay — 信心分數隨矛盾證據下降
- Dual-gate — 兩個條件必須同時成立才觸發
- Self-reference — 系統可以分析和修改自己
工具的主要關注點,按重要性排——
- 觸發的時機是否可靠〈deterministic vs probabilistic〉
- 誰來決定什麼有價值〈系統 / agent 自判 / 外部 LLM 萃取〉
- 記憶有幾層〈有沒有 L2 atomic 單位〉
- Capture 跟 Consolidate 是否分離〈頻率不同步〉
- 是否有 Verifier 分離〈避免 self-evaluation 的高信心錯誤〉
- 是否支援 Self-modification〈meta agent 能不能改自己〉
最後一句話 framing——
Context window 是 RAM,filesystem 是 disk——Session 結束前必須把有價值的東西從 RAM flush 到 disk,否則就永遠消失,差別只在誰來決定「什麼有價值」,以及「觸發的時機」可不可靠。
整個產業在 self-improving agent 這條路上,做的事情就這麼一件——讓記憶有強度、讓知識能升級、讓行為可組合,最後讓 reflection 本身也能被 reflection。
