OpenClaw進階:如何通過九層塔架構打造高效能AI Agent

作者:AI 巧巧說
日期:2026年5月11日 下午6:52
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

大上下文窗口唔等於上下文管理,九層塔先係長期運行 AI Agent 嘅關鍵

整理版摘要

呢篇文章係基於 OpenClaw 多 Agent 環境超過三個月嘅實際運行經驗,同埋近一個月對九層上下文架構嘅集中升級整理。作者指出,好多人以為上下文窗口越大就越唔需要記憶管理,但其實窗口大隻解決「裝得幾多」,唔解決「裝咩、幾時召回、點樣壓縮、點樣進化」。為咗令 Agent 喺長期運行、多會話、多任務、多 Agent 協作入面持續治理上下文,作者逐步演化出一套「九層塔」架構。

九層塔分成三組,每組三層:基礎層(L1–L3 身份、規則、記憶)、運行時層(L4–L6 檢索、召回、會話生存)、進化層(L7–L9 整理、迭代、技能化)。呢個唔係線性流水線,而係一個閉環——每一層嘅輸出都係其他層嘅輸入。作者特別強調,最容易「安靜吃虧」嘅兩點都喺 L6:context engine 唔綁定 slot 唔會報錯,只係悄悄退化;LLM 摘要器冇做 secrets redaction,API key 會經 FTS 同向量被放大注入。

整體結論係:大上下文窗口唔係上下文管理。Context Engineering 嘅核心係「治理上下文」——寫入、召回、壓縮、清噪、晉升、驗證、回滾。唔需要一次過搭曬九層,可以分階段:L1–L3 幾小時上手,L4–L6 係質變臨界點,L7–L9 令系統真正自愈。工程態度比單點修復更重要,開源組件嘅小修整要做成 idempotent 同 boot-time 自愈嘅工程資產。

  • 結論:大上下文窗口只解決容量,唔解決治理;九層塔從九個維度管理上下文生命週期。
  • 方法:九層塔分基礎層(L1-L3 身份/規則/記憶)、運行時層(L4-L6 檢索/召回/會話生存)、進化層(L7-L9 整理/迭代/技能化)。
  • 差異:三層記憶架構適合簡單場景,九層塔解決跨日、跨會話、多 Agent 協作嘅系統化治理。
  • 啟發:L6 最容易安靜失敗——context engine 唔綁 slot 唔報錯、secrets 未 redact 會經 FTS 放大,搭建時要一次到位。
  • 可行動點:唔需要一次過起九層;先 L1-L3 幾小時,再 L4-L6 達到質變,最後 L7-L9 形成閉環。
結構示例

內容結構

內容結構 text
memory/  shared/        ← 所有 Agent 可讀寫:項目、偏好、決策  daily/         ← 每日共享日誌  private/       ← 各 Agent 私有記憶  self-improving/ ← 行為改進記錄
整理重點

引言:大窗口嘅幻覺

上下文窗口由 4K 去到 128K 甚至 1M+,好多人以為窗口夠大就唔需要記憶管理。呢個係一個危險嘅幻覺。

窗口變大解決咗「能放多少」,但冇解決放咩、幾時放、過期點清、跨會話點延續、多 Agent 點共享又隔離、錯誤記憶點修正、經驗點沉澱成能力。

呢啲問題需要 Context Engineering——對上下文嘅工程化治理。本文介紹嘅「九層塔」就係喺 OpenClaw 環境入面演化出嚟嘅一套上下文管理架構。

整理重點

九層塔總覽:三組九層嘅閉環架構

九層塔分成三組:基礎層(L1-L3)、運行時層(L4-L6)、進化層(L7-L9)。每層解決一個維度,互相補足。

  • L1 身份注入層:用 SOUL.mdIDENTITY.md 定義 Agent 係邊個,每次 session 自動注入,防止人格漂移。
  • L2 規則治理層:用 AGENTS.mdTOOLS.md 界定操作邊界,規則要分層,衝突時高優先級覆蓋。
  • L3 文件記憶層:用 Markdown 持久化知識,shared / private 分區,方便人工修正。
  • L4 語義檢索層:embedding + BM25 混合搜索,有 temporal decay 同 MMR,結果要質量閾值。
  • L5 主動召回層:用戶消息前自動檢索相關記憶,壓縮成摘要注入,並標記為 untrusted context。
  • L6 會話生存層:用 Lossless Context EngineDAG/摘要/分層壓縮,確保長會話唔丟上下文。

運行時層嘅 L6 最複雜,最容易安靜失敗。作者建議搭建時一次到位,特別係要綁定 context engine 並做好 secrets redaction。

L6 嘅核心係「運行時上下文生存」,而唔係單純 flush 去文件。

整理重點

進化層:由經驗到技能

L7 後台整理層(Dreaming)每日自動運行 deep sleep、light sleep、REM,從 session corpus 提煉候選記憶,並用 post-sweep watchdog 清理噪聲。

Dreaming 唔係記住曬所有嘢,而係有選擇地晉升高價值內容,promotion rate 一般只有 4-6%。

L8 自我迭代層將錯誤記錄、信號積累、規則晉升分開,重複出現先改規則,shared-rules 跨 Agent 共享。用 agent id 而非 persona name 命名目錄,避免分裂。

  1. 1 L7 噪聲清理係必要後置步驟,否則 heartbeat、compaction 等內容會污染長期記憶。
  2. 2 L8 要有一致嘅目錄命名慣例,用絕對路徑避免 cron 飄移。
  3. 3 L9 技能要有生命週期:創建、使用、驗證,可能 deprecate。

呢三層令系統隨時間變得更好,形成真正嘅閉環。

整理重點

搭建路徑同工程態度

唔需要一次過搭九層。建議分階段:第一階段(L1-L3)幾小時上手;第二階段(L4-L6)係質變臨界點;第三階段(L7-L9)令系統自愈。

工程態度比單點修復更重要:對開源組件嘅小修整要做成 idempotent、boot-time 自愈嘅工程資產。

作者整理咗 14 個高頻陷阱,當中最容易「安靜吃虧」嘅係 #6 同 #7。搭建 L6 時建議一次到位,避免 context engine 冇綁定或 secrets 被放大注入。

  • L1-L3:寫好身份文件、建立記憶目錄、定義簡單規則。
  • L4-L6:啟用向量搜索、配置 active memory、設定 session memory 同 compaction。
  • L7-L9:啟用 Dreaming、建立 self-improving、啟動技能進化。

完整嘅九層塔先可以真正做到上下文治理,令 Agent 喺長期運行中持續進化。

OpenClaw Agent嘅長期記憶、主動召回同自我進化架構

一個真正長期運行嘅AI Agent,需要嘅唔係更大嘅上下文窗口,而係一套完整嘅上下文治理體系。

基於OpenClaw多Agent環境三個幾月嘅實際運行經驗,以及近一個幾月對九層上下文架構嘅集中升級同整理。九層塔唔係一次性設計出嚟,而係喺解決一個又一個實際問題嘅過程中逐步演化出嚟。運維治理本身都係架構成熟嘅一部分。

引言:大窗口嘅幻覺#

上下文窗口從4K到128K再到1M+,好多人以為「窗口夠大就唔需要記憶管理喇」。

呢個係一個危險嘅幻覺。

窗口變大解決嘅係「能放幾多」,但冇解決:

  • 放咩入去?
  • 幾時放?
  • 過期嘅點樣清?
  • 跨會話點樣延續?
  • 多Agent點樣共享同隔離?
  • 錯誤記憶點樣修正?
  • 經驗點樣沉澱成能力?

呢啲問題,唔係靠「更大嘅窗口」解決到。佢哋需要嘅係 Context Engineering——對上下文嘅工程化治理。

本文介紹一套喺OpenClaw多Agent環境中運行三個幾月、並喺近一個幾月集中升級整理出嘅上下文管理架構。我哋稱之為「九層塔」。

從三層到九層:點解簡單記憶唔夠#

最基礎嘅記憶架構分三層:

  • Layer 0
    :身份同規範(靜態,低頻修改)
  • Layer 1
    :知識積累同檢索(持續增長)
  • Layer 2
    :驅動行動(實時運轉)

三層架構能讓Agent「記住嘢」。但當你開始長期運行——跨日、跨星期、多會話、多Agent協作——你會發現三層唔夠:

  1. 記憶膨脹
    :文件越嚟越多,bootstrap注入被截斷
  2. 噪聲累積
    :系統日誌、heartbeat、maintenance消息混入記憶
  3. 召回失敗
    :記咗但揾唔到,或者揾到嘅唔係最相關嘅
  4. 壓縮丟失
    :長會話被compaction後,關鍵決策冇咗
  5. 重複勞動
    :同樣嘅任務做咗十次,每次由零開始

九層塔就係為咗解決呢啲問題而逐步演化出嚟嘅。


三層記憶架構
九層塔
回答問題
點樣開始讓Agent記住嘢
點樣讓Agent喺長期運行中持續治理上下文
核心抽象
身份 / 知識 / 行動
基礎 / 運行時 / 進化(每組3層)
適用場景
單輪 - 幾輪對話內嘅記憶
跨日 / 跨星期 / 多會話 / 多Agent協作
關注重點
「記得住」
「記咩、幾時召回、點樣壓縮、點樣進化」
側重
設計正確嘅入門記憶模型
將上下文相關功能納入可治理系統

九層塔唔係替代三層架構,而係喺三層之上回答咗「系統化治理」呢個新問題。兩者讀起嚟可對比,但本文唔依賴你讀過前文。

九層塔總覽#

L9

能力進化層⚠ 3

經驗 → 可複用技能

L8

自我迭代層⚠ 5🚨 2

錯誤 / 反饋 → 行為規則

L7

後台整理層⚠ 3🚨 1

短期上下文 → 長期記憶

L6

會話生存層⚠ 5🚨 2

Lossless Context Engine / compaction / flush

L5

主動召回層⚠ 3🚨 1

消息前自動注入相關上下文

L4

語義檢索層⚠ 4🚨 1

embedding / search / fallback

L3

文件記憶層⚠ 3

Markdown長期事實

L2

規則治理層⚠ 3

行為邊界 / 工具協議

L1

身份注入層⚠ 3

身份 / 用戶 / persona


⚠ 數字 為常見坑數 · 🚨 數字 為高嚴重度坑數

三組,每組三層:

  • 基礎層(L1-L3)
    :定義Agent係邊個、應該點樣做、記住咗咩
  • 運行時層(L4-L6)
    :讓記憶喺對話中真正發揮作用
  • 進化層(L7-L9)
    :讓系統隨時間變得更好

L1身份注入層:Agent係邊個#

解決嘅問題:Agent需要一個穩定嘅身份錨點,否則喺長對話或多Agent場景中會「人格漂移」。

OpenClaw中嘅實現

  • SOUL.md
     — 定義人格、語氣、行為邊界
  • IDENTITY.md
     — 基本資訊:名、角色、emoji
  • USER.md
     — 用戶畫像:偏好、溝通風格、技術棧

關鍵設計:呢啲文件喺每次session啟動時自動注入context window,唔依賴Agent主動讀取。

常見坑

  • 身份文件寫得太長,擠佔有效上下文空間
  • 多Agent場景中,由chat history推斷身份而唔係由配置文件確認
  • persona寫得太強,壓過任務目標

L2規則治理層:Agent應該點樣行動#

解決嘅問題:Agent需要明確嘅操作邊界——咩可以做、咩唔可以做、點樣做。

OpenClaw中嘅實現

  • AGENTS.md
     — 操作手冊:讀寫邊界、協作協議、安全規則
  • TOOLS.md
     — 工具使用規範:咩場景用咩工具
  • Bootstrap配置 — 啟動時嘅行為指令

關鍵設計:規則分層——身份規則 > 安全規則 > 任務協議 > 工具偏好。優先級明確,衝突時高優先級覆蓋。

常見坑

  • 規則堆太多,Agent遵循率下降
  • 規則冇分層,任務協議同人格描述撈埋一齊
  • 缺少「完成後必須彙報/落盤」嘅閉環要求

L3文件記憶層:長期事實載體#

解決嘅問題:Agent需要一個持久化嘅、可人工修正嘅知識庫。

OpenClaw中嘅實現

memory/
  shared/        ← 所有 Agent 可讀寫:項目、偏好、決策
  daily/         ← 每日共享日誌
  private/       ← 各 Agent 私有記憶
  self-improving/ ← 行為改進記錄

關鍵設計

  • Markdown格式:可讀、可diff、可版本控制、可人工修正
  • shared / private分區:多Agent協作時既共享又隔離
  • 寫入規則明確:咩資訊寫邊度,由AGENTS.md定義

常見坑

  • MEMORY.md變咗垃圾桶,咩都塞入去,導致bootstrap截斷
  • shared區被某個Agent意外覆蓋
  • 短期日誌同長期事實撈埋一齊,信噪比下降

L4語義檢索層:從記憶中揾上下文#

解決嘅問題:記憶文件越嚟越多,冇可能全部塞入prompt。需要按需召回。

OpenClaw中嘅實現

  • 向量索引(embedding)+ 混合搜索(BM25 + semantic)
  • 多源檢索:memory文件 + session transcript
  • Fallback機制:primary backend超時時降級到builtin index

關鍵設計

  • 唔止「向量相似度」,仲有 temporal decay(時間衰減)同 MMR(多樣性)
  • 索引定期更新(掃描 + embedding)
  • 搜索結果有質量閾值,唔係「揾到就注入」

工程Insight

搜索timeout由15s提到60s只係解決咗配置層問題。真正嘅瓶頸喺query expansion + LLM rerank路徑。搜索系統需要區分:索引是否更新、embedding是否覆蓋、query path是否穩定、ranking是否符合預期。

常見坑

  • 淨係睇「文件已索引」,忽略embedding覆蓋率
  • Fallback靜默工作,掩蓋primary backend嘅性能問題
  • exact query被日誌文件排喺源文件前面(rerank偏差)
  • 檢索CLI嘅stdout唔係乾淨JSON——遇到collection唔存在/參數異常時會先print Warning: 或 Usage: 文本再俾JSON。下游parser必須容錯噉跳過非JSON前綴,拋錯會令多collection路徑整體退化到慢fallback
  • per-agent索引會累積大量 orphan向量(content已刪但vector留低),需要週期性cleanup;orphan佔比 > 50%係sqlite體積膨脹嘅常見原因

L5主動召回層:消息前自動帶上下文#

解決嘅問題:用戶唔應該每次都講「幫我查嚇記憶」。系統應該自動判斷需要咩上下文。

OpenClaw中嘅實現

  • Active Memory插件:喺用戶消息進入Agent前,自動搜索相關記憶
  • 將召回結果壓縮成短摘要注入prompt
  • 結果標記為 untrusted context:明確告知Agent呢部分內容來自自動召回而唔係用戶原話,可質疑、可忽略、可反向校驗,唔作為權威事實直接採用

關鍵設計

  • 主動召回唔等於無腦注入。有質量閾值、空結果過濾、相關性判斷
  • 注入內容明確標記來源,Agent可以選擇忽略
  • 對慢query可以選擇更輕嘅搜索模式

常見坑

  • 低質量摘要污染當前對話
  • Active memory輸出被誤當作trusted fact
  • 召回subagent timeout太短,導致頻繁空結果
  • 檢索後端單點失敗傳染整條召回鏈
    :active memory調底層多collection檢索時,任一子查詢拋錯會令整條召回退化到builtin slow path(>10s / 0 hits)。L4 parser必須fail-soft(warn + 返回空數組),主動召回層先至穩定

L6會話生存層:長會話唔丟上下文#

L6係九層塔最複雜、亦都最容易「靜靜雞蝕底」嘅一層——本節多數 critical標註集中喺呢度,建議慢慢讀。

解決嘅問題:長對話會超過模型上下文窗口。只靠簡單截斷或一次性compaction,會令早期約定、任務狀態同關鍵決策從當前對話消失。

OpenClaw中嘅實現

  • Lossless Context Engine(lossless-claw):作為 plugins.slots.contextEngine 嘅運行時上下文引擎,實時攝入消息,並用 DAG /摘要/分層壓縮嚟組裝下一輪模型上下文
  • Session Memory hook:實時保存會話transcript,保留可審計嘅原始時間線
  • Compaction Memory Flush:壓縮前自動將重要資訊寫入durable memory,作為最後一道持久化防線
  • Session transcript被索引,可供L4語義檢索同後續Dreaming使用

關鍵設計

  • L6嘅中心唔係單純flush,而係「運行時上下文生存」:邊個負責攝入、壓縮、組裝當前會話
  • 檢索層回答「該找回咩長期記憶」,context engine回答「當前呢條長會話點樣持續保持連貫」——兩者互補,唔互相替代
  • memoryFlush / safeguard compaction係fallback safety rail,唔係替代context engine嘅主機制
  • 長任務應該外化plan到文件,而唔係只存在context裏便
  • 必須顯式綁定 plugins.slots.contextEngine
    :唔綁唔會報錯,只會悄悄退化到legacy截斷引擎(詳見坑#6)
  • 摘要LLM調用前必須regex redact secrets
    :否則sk-XXX / token會經FTS + vector持續放大注入(詳見坑#7)
  • 短源 (< 200 tokens) 跳過summarizer
    :避免「摘要 = timestamp + 原文」嘅反向膨脹(詳見坑#8)

工程Insight

compaction / heartbeat / system prompt被寫入transcript後,可能被後台整理層(L7)錯誤晉升為長期記憶。會話生存層同後台整理層之間需要噪聲過濾機制。
Secrets喺raw消息裏便容易識別(grep一抓一個準),但LLM摘要將佢換個上下文重新表述後,固定嘅grep規則就唔一定catch得到了。喺源頭redact比事後audit容易得多——呢個係L6必須正視嘅安全責任。

常見坑

  • 只依賴大窗口模型,唔做顯式context engine / 持久化治理
  • 將memoryFlush當成主機制,而唔係fallback safety rail
  • 長任務冇外化plan,壓縮後目標漂移
  • 系統消息混入transcript,污染下游

L7後台整理層:Dreaming消化上下文#

解決嘅問題:短期記憶同session transcript會無限增長。需要定期整理、去重、提煉。

OpenClaw中嘅實現

  • Memory Core Dreaming:每日自動運行
    • Deep sleep:修復recall store
    • Light sleep:從session corpus中提煉候選記憶
    • REM:生成摘要同關聯
  • Post-sweep watchdog:檢查Dreaming產物、清理噪聲、統計健康指標

關鍵設計

  • Dreaming唔係簡單嘅「將所有嘢都記住」,而係有選擇噉晉升
  • Promotion threshold
    :只有高價值內容先會從短期進入長期
  • 噪聲清理係Dreaming嘅必要後置步驟
  • L7仲要監控L6引擎本身
    :context engine係個安靜失敗嘅組件(唔寫入即等於沉默)。L7應該包含一個星期度健康監控cron,監控lcm.db增長、DAG leaf / condensed比例、WAL 狀態。否則一次配置迴歸可能要40日先被發現

工程Insight

Dreaming會將heartbeat、maintenance、compaction通知等系統噪聲納入候選。因此需要post-sweep watchdog:每日Dreaming完成後自動清理噪聲、統計promotion ratio、報告異常。典型數據:每日清理200+行噪聲,promotion率約4-6%。
健康監控閾值要分級——🔴先告警(ingest沉默 / lcm停擺 / WAL損壞),🟡只寫報告唔打擾(DAG淺 / WAL滯後),🟢靜默通過。否則告警疲勞會令真問題被淹沒。

常見坑

  • 後台任務成功但報告投遞失敗,無人知道結果
  • 噪聲進入corpus後被長期污染
  • Promotion threshold太寬,低價值內容晉升

L8自我迭代層:從錯誤中改進行為#

解決嘅問題:Agent會犯錯。同樣嘅錯誤唔應該犯第二次。

OpenClaw中嘅實現

memory/self-improving/
  hot/           ← 當前活躍的行為信號
  corrections/   ← 被糾正的錯誤記錄
  signals/       ← 觀察到的行為模式
  shared-rules/  ← 晉升為穩定規則的條目

關鍵設計

  • 錯誤記錄 → 信號積累 → 規則晉升:唔係一次犯錯就改規則,而係重複出現先至晉升
  • shared-rules跨Agent共享:一個Agent嘅教訓,所有Agent受益
  • 有reviewer同threshold,防止規則膨脹
  • agent identity用唯一規範
    :自我迭代目錄用agent id(agent-A / agent-B / ...),唔用persona name(Persona-A / Persona-B 呢類用戶自定義顯示名)。所有跨進程協作(cron、patrol、promotion)用同一份mapping
  • cron payload用絕對路徑
    :週期性自反思任務裏便寫 memory/self-improving/X/hot.md 呢種相對路徑會被不同cwd解析到不同workspace,造成同一agent嘅內容分裂到多處。統一用 /root/.openclaw/workspace/memory/self-improving/<id>/... 嘅絕對路徑
  • patrol用枚舉白名單
    KNOWN_AGENTS + KNOWN_FILES 列表化,掃到唔在白名單嘅就報警。呢個能在第1星期內發現命名漂移、拼寫錯誤(如 corrrections.md 多打一個r)、persona vs agent-id大小寫分裂

常見坑

  • 將一次性偏好過早晉升為全局規則
  • 冇deprecation機制,過時規則永遠存在
  • 目錄命名不一致,導致掃描漏項
  • persona name vs agent id雙軌命名唔統一,cron同patrol各走各路寫出多份目錄
  • cron payload用相對路徑,cwd一漂全軍覆沒

L9能力進化層:將經驗變成技能#

解決嘅問題:Agent反覆做同樣嘅嘢,每次由零開始。經驗應該固化為可複用能力。

OpenClaw中嘅實現

  • Skill Evolution:從歷史任務中 harvest → synthesize → review → promote
  • 產出嘅skill存入shared-skills目錄,所有Agent可調用
  • 定期審計:清理過窄、過時、重複嘅skill

關鍵設計

  • 技能唔係手動寫嘅,而係從實際任務中自動提煉
  • 有review環節:唔係所有workflow都值得變成skill
  • 技能有生命週期:創建 → 使用 → 驗證 → 可能deprecate

常見坑

  • 技能過窄,只適用於特定場景
  • 命名差,其他Agent揾唔到
  • 私有上下文被錯誤抽象成shared skill

九層之間嘅數據流#

用戶消息L1 / L2身份 + 規則(自動注入)L5主動召回(自動搜索)L4語義檢索(按需查找)Agent回答 / 執行L6會話生存(lossless-claw)L3文件記憶(durable)L7Dreaming(整理)L8自我迭代(糾錯→規則)L9技能進化(→ skill)下一輪對話繼續使用

點擊任一節點跳到對應章節 · 虛線表示跨輪閉環

呢個唔係線性流程,而係一個閉環。每一層嘅輸出都係其他層嘅輸入。

搭建路徑建議#

唔需要一次性搭建九層。建議分階段:

第一階段:基礎可用(L1-L3)

  • 寫好SOUL.md、IDENTITY.md、USER.md
  • 建立memory/目錄結構
  • 定義AGENTS.md中嘅讀寫規則

第二階段:檢索同召回(L4-L6)

  • 啟用memory search + embedding
  • 配置Active Memory插件
  • 啟用session memory同compaction flush

第三階段:自動進化(L7-L9)

  • 啟用Dreaming + post-sweep watchdog
  • 建立self-improving目錄同晉升機制
  • 啟用Skill Evolution
每個階段都可以獨立運行。但完整嘅九層塔先至形成真正嘅閉環。

源碼層嘅小修整:將開源組件做成「工程資產」#

老實講,將九層塔落到生產時,光配置係唔夠嘅。前文L4(parser fail-soft)同L6(摘要前redact secrets / 短源跳過LLM)提到嘅幾處問題,都需要喺開源組件源碼上做小幅適配。

呢一節唔再重複「改咩」,重點講「點樣令呢種修改活下去」——臨時hotfix會隨着npm升級或上游git pull失效;只有做成可觀測、可重啟自癒嘅工程資產,先至真正成為架構嘅一部分。最佳實踐係:

要素
做法
sentinel
喺patched區域留 // PATCH:<name> 註釋,apply腳本據此判斷冪等
apply script
單一idempotent shell / node腳本,能反覆跑
boot集成
gateway啟動時 ExecStartPre 自動跑apply腳本——上游覆蓋目標後下次重啟自動重打
backup文件
apply前timestamp備份,rollback路徑明確
descriptor入版控
.patch
 文件(unified diff + 解釋)入git,編譯產物gitignore
fail-closed
sentinel anchor揾唔到(上游改咗函數體)就fail,主流程容錯繼續,日誌留trace

令對開源組件嘅小修整可被持續維護,而唔係「換部機就丟」。

運維真心話:14個最容易踩嘅坑#

九層塔架構清單容易睇,但落地時會反覆踩一啲坑。以下係從實際運行整理出嘅高頻陷阱,按層歸類:

篩選全部14L1–L31L44L52L64L72L82運維1🚨 高嚴重度2

#
出現層
一句話提醒
1
bootstrap注入文件超閾值被截斷
L1 / L2 
/ L3
MEMORY.md嚴格限制為「規則 + 索引」,自動promotion內容拆出去
2
embedding覆蓋率唔等於索引完成率
L4
「files indexed」係文件級,「embedded chunks」係向量級,兩者可以差幾個數量級
3
檢索CLI stdout非JSON噪聲
L4
qmd類CLI喺collection異常時往stdout寫warning,下游parser必須fail-soft
4
多collection路徑單點失敗傳染
L4 / L5
一個collection嘅子查詢拋錯唔應讓整條active-memory退化到builtin
5
active-memory注入低質量摘要
L5
加minRelevanceScore + 模板化fallback過濾 + untrusted context標記
6
context engine slot冇綁定 = 安靜失敗
L6
plugins.slots.contextEngine
 缺失時系統唔報錯,只係lcm.db永不增長——必須有L7健康監控
7
LLM摘要把secrets經 FTS 放大
L6
摘要器原樣保留sk-XXX / token,入summaries後lcm_grep命中、vector embedding收錄、下次組裝再注入prompt——必須喺調LLM前redact
8
短源做summary反而變長
L6
源 < 200 tokens直接return原文,避免「摘要 = timestamp + 原文」嘅反向膨脹
9
session內部消息(cron / subagent)污染corpus
L6 / L7
ignoreSessionPatterns
 喺源頭排除,比喺Dreaming後清理高效
10
post-sweep watchdog投遞失敗 → 無人知
L7
watchdog自身都要監控;delivery失敗要降級到local log + 告警
11
persona名 vs agent id雙軌寫入造成目錄分裂
L8
全局只用agent id(agent-A / agent-B / ...);persona name唔入文件系統
12
cron payload用相對路徑在不同cwd下落唔同workspace
L8
自反思cron一律用絕對路徑
13
per-agent索引累積orphan向量
L4
週期性cleanup,否則sqlite體積膨脹(實測可達80%+都係orphan)
14
sudoers文件名帶 . 被默認忽略
運維
/etc/sudoers.d/X.tmp
 唔生效;要用 X 唔帶後綴

冇匹配嘅坑。換一個篩選條件試試。

其中 #6 和 #7 係呢套架構最容易「靜靜雞蝕底」嘅兩點:context engine唔綁slot,整個L6等於冇裝;摘要器冇做secrets redaction,secrets會經FTS持續放大。呢兩條強烈建議喺搭建L6時就一次到位。

結語#

九層塔唔係為咗複雜而複雜——長期運行嘅Agent面臨嘅問題天然分佈喺九個不同維度(身份/規則/記憶/檢索/召回/會話生存/整理/自我迭代/技能化),缺一層就會喺某個時刻「漏出來」。

好嘅Agent唔係「記得更多」,而係知道咩該記、幾時召回、何時壓縮、點樣清噪、點樣從經驗中進化。

呢個就係Context Engineering嘅本質:唔係管理上下文嘅大細,而係將上下文嘅整個生命週期做成 可觀測、可修復、可進化 嘅工程閉環。

v2 · 2026-05-10 · Markdown 源 02-report.md · Repo ai-freer/context-tower-article

OpenClaw Agent 的長期記憶、主動召回與自我進化架構

一個真正長期運行的 AI Agent,需要的不是更大的上下文窗口,而是一套完整的上下文治理體系。

基於 OpenClaw 多 Agent 環境三個多月的實際運行經驗,以及近一個多月對九層上下文架構的集中升級與整理。九層塔不是一次性設計出來的,而是在解決一個又一個實際問題的過程中逐步演化而成。運維治理本身也是架構成熟的一部分。

引言:大窗口的幻覺#

上下文窗口從 4K 到 128K 再到 1M+,很多人以為"窗口夠大就不需要記憶管理了"。

這是一個危險的幻覺。

窗口變大解決的是"能放多少",但沒有解決:

  • 放什麼進去?
  • 什麼時候放?
  • 過期的怎麼清?
  • 跨會話怎麼延續?
  • 多 Agent 怎麼共享又隔離?
  • 錯誤記憶怎麼修正?
  • 經驗怎麼沉澱成能力?

這些問題,不是靠"更大的窗口"能解決的。它們需要的是 Context Engineering——對上下文的工程化治理。

本文介紹一套在 OpenClaw 多 Agent 環境中運行三個多月、並在近一個多月集中升級整理出的上下文管理架構。我們稱之為"九層塔"。

從三層到九層:為什麼簡單記憶不夠#

最基礎的記憶架構分三層:

  • Layer 0
    :身份與規範(靜態,低頻修改)
  • Layer 1
    :知識積累與檢索(持續增長)
  • Layer 2
    :驅動行動(實時運轉)

三層架構能讓 Agent "記住東西"。但當你開始長期運行——跨天、跨周、多會話、多 Agent 協作——你會發現三層不夠:

  1. 記憶膨脹
    :文件越來越多,bootstrap 注入被截斷
  2. 噪聲累積
    :系統日誌、heartbeat、maintenance 消息混入記憶
  3. 召回失敗
    :記了但找不到,或找到的不是最相關的
  4. 壓縮丟失
    :長會話被 compaction 後,關鍵決策丟了
  5. 重複勞動
    :同樣的任務做了十次,每次從零開始

九層塔就是為了解決這些問題而逐步演化出來的。


三層記憶架構
九層塔
回答問題
如何開始讓 Agent 記住東西
如何讓 Agent 在長期運行中持續治理上下文
核心抽象
身份 / 知識 / 行動
基礎 / 運行時 / 進化(每組 3 層)
適用場景
單輪 - 幾輪對話內的記憶
跨天 / 跨周 / 多會話 / 多 Agent 協作
關注重點
"記得住"
"記什麼、何時召回、如何壓縮、怎樣進化"
側重
設計正確的入門記憶模型
把上下文相關功能納入可治理系統

九層塔不是替代三層架構,而是在三層之上回答了"系統化治理"這個新問題。兩者讀起來可對比,但本文不依賴你讀過前文。

九層塔總覽#

L9

能力進化層⚠ 3

經驗 → 可複用技能

L8

自我迭代層⚠ 5🚨 2

錯誤 / 反饋 → 行為規則

L7

後台整理層⚠ 3🚨 1

短期上下文 → 長期記憶

L6

會話生存層⚠ 5🚨 2

Lossless Context Engine / compaction / flush

L5

主動召回層⚠ 3🚨 1

消息前自動注入相關上下文

L4

語義檢索層⚠ 4🚨 1

embedding / search / fallback

L3

文件記憶層⚠ 3

Markdown 長期事實

L2

規則治理層⚠ 3

行為邊界 / 工具協議

L1

身份注入層⚠ 3

身份 / 用戶 / persona


⚠ 數字 為常見坑數 · 🚨 數字 為高嚴重度坑數

三組,每組三層:

  • 基礎層(L1-L3)
    :定義 Agent 是誰、該怎麼做、記住了什麼
  • 運行時層(L4-L6)
    :讓記憶在對話中真正發揮作用
  • 進化層(L7-L9)
    :讓系統隨時間變得更好

L1身份注入層:Agent 是誰#

解決的問題:Agent 需要一個穩定的身份錨點,否則在長對話或多 Agent 場景中會"人格漂移"。

OpenClaw 中的實現

  • SOUL.md
     — 定義人格、語氣、行為邊界
  • IDENTITY.md
     — 基本信息:名字、角色、emoji
  • USER.md
     — 用戶畫像:偏好、溝通風格、技術棧

關鍵設計:這些文件在每次 session 啓動時自動注入 context window,不依賴 Agent 主動讀取。

常見坑

  • 身份文件寫得太長,擠佔有效上下文空間
  • 多 Agent 場景中,從 chat history 推斷身份而非從配置文件確認
  • persona 寫得太強,壓過任務目標

L2規則治理層:Agent 該怎麼行動#

解決的問題:Agent 需要明確的操作邊界——什麼能做、什麼不能做、怎麼做。

OpenClaw 中的實現

  • AGENTS.md
     — 操作手冊:讀寫邊界、協作協議、安全規則
  • TOOLS.md
     — 工具使用規範:什麼場景用什麼工具
  • Bootstrap 配置 — 啓動時的行為指令

關鍵設計:規則分層——身份規則 > 安全規則 > 任務協議 > 工具偏好。優先級明確,衝突時高優先級覆蓋。

常見坑

  • 規則堆太多,Agent 遵循率下降
  • 規則沒有分層,任務協議和人格描述混在一起
  • 缺少"完成後必須彙報 / 落盤"的閉環要求

L3文件記憶層:長期事實載體#

解決的問題:Agent 需要一個持久化的、可人工修正的知識庫。

OpenClaw 中的實現

memory/
  shared/        ← 所有 Agent 可讀寫:項目、偏好、決策
  daily/         ← 每日共享日誌
  private/       ← 各 Agent 私有記憶
  self-improving/ ← 行為改進記錄

關鍵設計

  • Markdown 格式:可讀、可 diff、可版本控制、可人工修正
  • shared / private 分區:多 Agent 協作時既共享又隔離
  • 寫入規則明確:什麼信息寫哪裏,由 AGENTS.md 定義

常見坑

  • MEMORY.md 變成垃圾桶,什麼都往裏塞,導致 bootstrap 截斷
  • shared 區被某個 Agent 意外覆蓋
  • 短期日誌和長期事實混在一起,信噪比下降

L4語義檢索層:從記憶中找上下文#

解決的問題:記憶文件越來越多,不可能全部塞進 prompt。需要按需召回。

OpenClaw 中的實現

  • 向量索引(embedding)+ 混合搜索(BM25 + semantic)
  • 多源檢索:memory 文件 + session transcript
  • Fallback 機制:primary backend 超時時降級到 builtin index

關鍵設計

  • 不只是"向量相似度",還有 temporal decay(時間衰減)和 MMR(多樣性)
  • 索引定期更新(掃描 + embedding)
  • 搜索結果有質量閾值,不是"找到就注入"

工程 Insight

搜索 timeout 從 15s 提到 60s 只解決了配置層問題。真正的瓶頸在 query expansion + LLM rerank 路徑。搜索系統需要區分:索引是否更新、embedding 是否覆蓋、query path 是否穩定、ranking 是否符合預期。

常見坑

  • 只看"文件已索引",忽略 embedding 覆蓋率
  • Fallback 靜默工作,掩蓋 primary backend 的性能問題
  • exact query 被日誌文件排在源文件前面(rerank 偏差)
  • 檢索 CLI 的 stdout 不是乾淨 JSON——遇到 collection 不存在 / 參數異常時會先打印 Warning: 或 Usage: 文本再給 JSON。下游 parser 必須容錯地跳過非 JSON 前綴,拋錯會讓多 collection 路徑整體退化到慢 fallback
  • per-agent 索引會累積大量 orphan 向量(content 已刪但 vector 留着),需要週期性 cleanup;orphan 佔比 > 50% 是 sqlite 體積膨脹的常見原因

L5主動召回層:消息前自動帶上下文#

解決的問題:用戶不應該每次都說"幫我查一下記憶"。系統應該自動判斷需要什麼上下文。

OpenClaw 中的實現

  • Active Memory 插件:在用戶消息進入 Agent 前,自動搜索相關記憶
  • 將召回結果壓縮為短摘要注入 prompt
  • 結果標記為 untrusted context:明確告知 Agent 這部分內容來自自動召回而非用戶原話,可質疑、可忽略、可反向校驗,不作為權威事實直接採用

關鍵設計

  • 主動召回 ≠ 無腦注入。有質量閾值、空結果過濾、相關性判斷
  • 注入內容明確標記來源,Agent 可以選擇忽略
  • 對慢 query 可以選擇更輕的搜索模式

常見坑

  • 低質量摘要污染當前對話
  • Active memory 輸出被誤當作 trusted fact
  • 召回 subagent timeout 太短,導致頻繁空結果
  • 檢索後端單點失敗傳染整條召回鏈
    :active memory 調底層多 collection 檢索時,任一子查詢拋錯會讓整條召回退化到 builtin slow path(>10s / 0 hits)。L4 parser 必須 fail-soft(warn + 返回空數組),主動召回層才能穩定

L6會話生存層:長會話不丟上下文#

L6 是九層塔最複雜、也最容易"安靜吃虧"的一層——本節多數 critical 標註集中在這裏,建議慢讀。

解決的問題:長對話會超過模型上下文窗口。只靠簡單截斷或一次性 compaction,會讓早期約定、任務狀態和關鍵決策從當前對話裏消失。

OpenClaw 中的實現

  • Lossless Context Engine(lossless-claw):作為 plugins.slots.contextEngine 的運行時上下文引擎,實時攝入消息,並用 DAG / 摘要 / 分層壓縮來組裝下一輪模型上下文
  • Session Memory hook:實時保存會話 transcript,保留可審計的原始時間線
  • Compaction Memory Flush:壓縮前自動將重要信息寫入 durable memory,作為最後一道持久化防線
  • Session transcript 被索引,可供 L4 語義檢索和後續 Dreaming 使用

關鍵設計

  • L6 的中心不是單純 flush,而是"運行時上下文生存":誰負責攝入、壓縮、組裝當前會話
  • 檢索層回答"該找回什麼長期記憶",context engine 回答"當前這條長會話怎樣繼續保持連貫"——兩者互補,不互相替代
  • memoryFlush / safeguard compaction 是 fallback safety rail,不是替代 context engine 的主機制
  • 長任務應該外化 plan 到文件,而不是隻存在 context 裏
  • 必須顯式綁定 plugins.slots.contextEngine
    :不綁不會報錯,只會悄悄退化到 legacy 截斷引擎(詳見 坑 #6)
  • 摘要 LLM 調用前必須 regex redact secrets
    :否則 sk-XXX / token 會經 FTS + vector 持續放大注入(詳見 坑 #7)
  • 短源 (< 200 tokens) 跳過 summarizer
    :避免"摘要 = timestamp + 原文"的反向膨脹(詳見 坑 #8)

工程 Insight

compaction / heartbeat / system prompt 被寫入 transcript 後,可能被後台整理層(L7)錯誤晉升為長期記憶。會話生存層和後台整理層之間需要噪聲過濾機制。
Secrets 在 raw 消息裏容易識別(grep 一抓一個準),但 LLM 摘要把它換個上下文重新表述後,固定的 grep 規則就不一定 catch 得到了。在源頭 redact 比事後 audit 容易得多——這是 L6 必須正視的安全責任。

常見坑

  • 只依賴大窗口模型,不做顯式 context engine / 持久化治理
  • 把 memoryFlush 當成主機制,而不是 fallback safety rail
  • 長任務沒有外化 plan,壓縮後目標漂移
  • 系統消息混入 transcript,污染下游

L7後台整理層:Dreaming 消化上下文#

解決的問題:短期記憶和 session transcript 會無限增長。需要定期整理、去重、提煉。

OpenClaw 中的實現

  • Memory Core Dreaming:每日自動運行
    • Deep sleep:修復 recall store
    • Light sleep:從 session corpus 中提煉候選記憶
    • REM:生成摘要和關聯
  • Post-sweep watchdog:檢查 Dreaming 產物、清理噪聲、統計健康指標

關鍵設計

  • Dreaming 不是簡單的"把所有東西都記住",而是有選擇地晉升
  • Promotion threshold
    :只有高價值內容才會從短期進入長期
  • 噪聲清理是 Dreaming 的必要後置步驟
  • L7 還要監控 L6 引擎本身
    :context engine 是個安靜失敗的組件(不寫入即等於沉默)。L7 應當包含一個周度健康監控 cron,監控 lcm.db 增長、DAG leaf / condensed 比例、WAL 狀態。否則一次配置迴歸可能要 40 天才被發現

工程 Insight

Dreaming 會把 heartbeat、maintenance、compaction 通知等系統噪聲納入候選。因此需要 post-sweep watchdog:每天 Dreaming 完成後自動清理噪聲、統計 promotion ratio、報告異常。典型數據:每天清理 200+ 行噪聲,promotion 率約 4-6%。
健康監控閾值要分級——🔴 才告警(ingest 沉默 / lcm 停擺 / WAL 損壞),🟡 只寫報告不打擾(DAG 淺 / WAL 滯後),🟢 靜默通過。否則告警疲勞會讓真問題被淹沒。

常見坑

  • 後台任務成功但報告投遞失敗,無人知道結果
  • 噪聲進入 corpus 後被長期污染
  • Promotion threshold 太寬,低價值內容晉升

L8自我迭代層:從錯誤中改進行為#

解決的問題:Agent 會犯錯。同樣的錯誤不應該犯第二次。

OpenClaw 中的實現

memory/self-improving/
  hot/           ← 當前活躍的行為信號
  corrections/   ← 被糾正的錯誤記錄
  signals/       ← 觀察到的行為模式
  shared-rules/  ← 晉升為穩定規則的條目

關鍵設計

  • 錯誤記錄 → 信號積累 → 規則晉升:不是一次犯錯就改規則,而是重複出現才晉升
  • shared-rules 跨 Agent 共享:一個 Agent 的教訓,所有 Agent 受益
  • 有 reviewer 和 threshold,防止規則膨脹
  • agent identity 用唯一規範
    :自我迭代目錄用 agent id(agent-A / agent-B / ...),不用 persona name(Persona-A / Persona-B 這類用戶自定義顯示名)。所有跨進程協作(cron、patrol、promotion)用同一份 mapping
  • cron payload 用絕對路徑
    :週期性自反思任務裏寫 memory/self-improving/X/hot.md 這種相對路徑會被不同 cwd 解析到不同 workspace,造成同一 agent 的內容分裂到多處。統一用 /root/.openclaw/workspace/memory/self-improving/<id>/... 的絕對路徑
  • patrol 用枚舉白名單
    KNOWN_AGENTS + KNOWN_FILES 列表化,掃到不在白名單的就報警。這能在第 1 周內發現命名漂移、拼寫錯誤(如 corrrections.md 多打一個 r)、persona vs agent-id 大小寫分裂

常見坑

  • 把一次性偏好過早晉升為全局規則
  • 沒有 deprecation 機制,過時規則永遠存在
  • 目錄命名不一致,導致掃描漏項
  • persona name vs agent id 雙軌命名不統一,cron 跟 patrol 各走各的寫出多份目錄
  • cron payload 用相對路徑,cwd 一漂全軍覆沒

L9能力進化層:把經驗變成技能#

解決的問題:Agent 反覆做同樣的事情,每次從零開始。經驗應該固化為可複用能力。

OpenClaw 中的實現

  • Skill Evolution:從歷史任務中 harvest → synthesize → review → promote
  • 產出的 skill 存入 shared-skills 目錄,所有 Agent 可調用
  • 定期審計:清理過窄、過時、重複的 skill

關鍵設計

  • 技能不是手動寫的,而是從實際任務中自動提煉
  • 有 review 環節:不是所有 workflow 都值得變成 skill
  • 技能有生命週期:創建 → 使用 → 驗證 → 可能 deprecate

常見坑

  • 技能過窄,只適用於特定場景
  • 命名差,其他 Agent 找不到
  • 私有上下文被錯誤抽象成 shared skill

九層之間的數據流#

用戶消息L1 / L2身份 + 規則(自動注入)L5主動召回(自動搜索)L4語義檢索(按需查找)Agent 回答 / 執行L6會話生存(lossless-claw)L3文件記憶(durable)L7Dreaming(整理)L8自我迭代(糾錯→規則)L9技能進化(→ skill)下一輪對話繼續使用

點擊任一節點跳到對應章節 · 虛線表示跨輪閉環

這不是線性流程,而是一個閉環。每一層的輸出都是其他層的輸入。

搭建路徑建議#

不需要一次性搭建九層。建議分階段:

第一階段:基礎可用(L1-L3)

  • 寫好 SOUL.md、IDENTITY.md、USER.md
  • 建立 memory/ 目錄結構
  • 定義 AGENTS.md 中的讀寫規則

第二階段:檢索與召回(L4-L6)

  • 啓用 memory search + embedding
  • 配置 Active Memory 插件
  • 啓用 session memory 和 compaction flush

第三階段:自動進化(L7-L9)

  • 啓用 Dreaming + post-sweep watchdog
  • 建立 self-improving 目錄和晉升機制
  • 啓用 Skill Evolution
每個階段都可以獨立運行。但完整的九層塔才能形成真正的閉環。

源碼層的小修整:把開源組件做成"工程資產"#

誠實地說,把九層塔落到生產時,光配置是不夠的。前文 L4(parser fail-soft)和 L6(摘要前 redact secrets / 短源跳過 LLM)提到的幾處問題,都需要在開源組件源碼上做小幅適配。

這一節不再重複"改什麼",重點談"怎樣讓這種修改活下去"——臨時 hotfix 會隨着 npm 升級或上游 git pull 失效;只有做成可觀測、可重啓自愈的工程資產,才能真正成為架構的一部分。最佳實踐是:

要素
做法
sentinel
在 patched 區域留 // PATCH:<name> 註釋,apply 腳本據此判斷冪等
apply script
單一 idempotent shell / node 腳本,能反覆跑
boot 集成
gateway 啓動時 ExecStartPre 自動跑 apply 腳本——上游覆蓋目標後下次重啓自動重打
backup 文件
apply 前 timestamp 備份,rollback 路徑明確
descriptor 入版控
.patch
 文件(unified diff + 解釋)入 git,編譯產物 gitignore
fail-closed
sentinel anchor 找不到(上游改了函數體)就 fail,主流程容錯繼續,日誌留 trace

讓對開源組件的小修整可被持續維護,而不是"換台機器就丟"。

運維真心話:14 個最容易踩的坑#

九層塔架構清單容易看,但落地時會反覆踩一些坑。以下是從實際運行裏整理出的高頻陷阱,按層歸類:

篩選全部14L1–L31L44L52L64L72L82運維1🚨 高嚴重度2

#
出現層
一句話提醒
1
bootstrap 注入文件超閾值被截斷
L1 / L2 
/ L3
MEMORY.md 嚴格限制為"規則 + 索引",自動 promotion 內容拆出去
2
embedding 覆蓋率 ≠ 索引完成率
L4
"files indexed" 是文件級,"embedded chunks" 是向量級,兩者可以差幾個數量級
3
檢索 CLI stdout 非 JSON 噪聲
L4
qmd 類 CLI 在 collection 異常時往 stdout 寫 warning,下游 parser 必須 fail-soft
4
多 collection 路徑單點失敗傳染
L4 / L5
一個 collection 的子查詢拋錯不應讓整條 active-memory 退化到 builtin
5
active-memory 注入低質量摘要
L5
加 minRelevanceScore + 模板化 fallback 過濾 + untrusted context 標記
6
context engine slot 沒綁定 = 安靜失敗
L6
plugins.slots.contextEngine
 缺失時系統不報錯,只是 lcm.db 永不增長——必須有 L7 健康監控
7
LLM 摘要把 secrets 經 FTS 放大
L6
摘要器原樣保留 sk-XXX / token,進 summaries 後 lcm_grep 命中、vector embedding 收錄、下次組裝再注入 prompt——必須在調 LLM 前 redact
8
短源做 summary 反而變長
L6
源 < 200 tokens 直接 return 原文,避免"摘要 = timestamp + 原文"的反向膨脹
9
session 內部消息(cron / subagent)污染 corpus
L6 / L7
ignoreSessionPatterns
 在源頭排除,比在 Dreaming 後清理高效
10
post-sweep watchdog 投遞失敗 → 無人知
L7
watchdog 自身也要監控;delivery 失敗要降級到 local log + 告警
11
persona 名 vs agent id 雙軌寫入造成目錄分裂
L8
全局只用 agent id(agent-A / agent-B / ...);persona name 不進文件系統
12
cron payload 用相對路徑在不同 cwd 下落到不同 workspace
L8
自反思 cron 一律用絕對路徑
13
per-agent 索引累積 orphan 向量
L4
週期性 cleanup,否則 sqlite 體積膨脹(實測可達 80%+ 都是 orphan)
14
sudoers 文件名帶 . 被默認忽略
運維
/etc/sudoers.d/X.tmp
 不生效;要用 X 不帶後綴

沒有匹配的坑。換一個篩選條件試試。

其中 #6 和 #7 是這套架構最容易"安靜吃虧"的兩點:context engine 不綁 slot,整個 L6 等於沒裝;摘要器沒做 secrets redaction,secrets 會經 FTS 持續放大。這兩條強烈建議在搭建 L6 時就一次到位。

結語#

九層塔不是為了複雜而複雜——長期運行的 Agent 面臨的問題天然分佈在九個不同維度(身份 / 規則 / 記憶 / 檢索 / 召回 / 會話生存 / 整理 / 自我迭代 / 技能化),缺一層就會在某個時刻"漏出來"。

好的 Agent 不是"記得更多",而是知道什麼該記、什麼時候召回、何時壓縮、如何清噪、怎樣從經驗中進化。

這就是 Context Engineering 的本質:不是管理上下文的大小,而是把上下文的整個生命週期做成 可觀測、可修復、可進化 的工程閉環。