賦予 AI 長效記憶:深入解析 AI Agent 的核心技術「上下文工程 (Context Engineering)」

目錄
1 前言
在 AI Agent 的研發領域,我們正經歷一場範式轉移。大語言模型 (LLM) 雖強,但其「無狀態 (Stateless) 」的本質與有限的 Context Window,使其在處理現實世界長線任務時舉步維艱。Context Engineering 便是為了解決這項挑戰而生的核心技術。本文為 Hung-Yi Lee 老師發布的 Context Engineering 介紹影片 的筆記。
2 TL;DR
- Context Engineering 的數學本質:將上下文更新從「無腦串接」進化為由處理函數 驅動的狀態轉換: 。
- 壓縮的雙面刃:暴力抹除 (Observation Masking) 能顯著降低成本,但會引發「軌跡延長 (重複執行) 」與「上下文崩塌」。
- 記憶體 vs. 硬碟:確立 架構,讓 LLM 只處理 Prompt (工作記憶) ,而將大量歷史儲存於 Memory (硬碟) 。
- Sub-Agent 作為濾波器:透過「摺疊 (Folding) 」機制,將複雜的執行過程轉化為鋸齒狀的 Context 長度變化。
- 自主進化路徑:從人類定義規則,進化到由 AI 自主維護操作手冊 (Playbook) 與自動編寫檢索程式碼。
3 核心概念:AI Agent 是 LLM 的「守門員」
LLM 是「活在當下」的機器。為了讓它具備處理連續任務的能力,我們必須在每一輪互動中,將過去的歷史重新「餵」給模型。
- 技術挑戰:直接串接歷史會導致 Context 隨時間呈線性爆炸。
- Agent 的真面目:在 Context Engineering 視角下,Agent 是一個攔截器。它決定模型「下一秒該看到什麼」。有效的 Context Engineering 必須確保輸入內容 「不能太長」 (避免成本激增與注意力失焦) ,也 「不能太短」 (避免遺失關鍵任務限制) 。
4 上下文壓縮:效能與精確度的權衡
當 Context 過長時,最直覺的作法是壓縮。影片中提到了以下做法:
4.1 暴力抹除 (Observation Masking)
- 方法論:對於冗長的工具輸出 (Tool Output) ,直接以
[詳見 log1.txt]取代。 - 研究發現 (Observation Masking):在 SWE-bench 軟體工程任務中,這種「Hard Clear」的表現驚人地與昂貴的 LLM 摘要 (Summarization) 持平。
- 代價分析:當記憶被抹除,模型常會出現 「軌跡延長 (Trajectory Elongation) 」 現象。例如:模型忘記已檢查過某檔案,導致重複呼叫相同 API。
4.2 上下文崩塌 (Context Collapse) 與 ACON 方法
- 問題描述:普通摘要常會濾除掉「系統限制」 (如:刪除前必須詢問人類) 。
- ACON 方法:引入 Reflector LLM。系統不微調權重,而是讓 Reflector 比較「成功軌跡」與「失敗摘要」,自動生成 Feedback (壓縮指南)。在 AppWorld 測試中,加入 Feedback 的摘要正確率大幅回升,甚至在峰值 Token 極低的情況下超越了未壓縮的模型。
4.3 SUPO:無標準答案的強化學習
- 核心困局:沒人知道「完美的摘要」長怎樣,故無法進行 SFT。
- 解決方案:模型先生產摘要,直到任務結束後,根據「任務成敗」發放獎勵。這讓「摘要大腦」與「執行大腦」達成聯合優化。
5 記憶架構的重定義:Context = Prompt + Memory
我們必須將 Context 分為兩個子集:
- Prompt ():真正進入 LLM 運算核心的資訊 (工作記憶) ,受 Context Window 限制。
- Memory ():存在外部系統 (硬碟) 的資訊,容量理論上無限。
Context Engineering 的目標:管理 與 之間的動態平衡。
6 結構化壓縮:Sub-Agent 與鋸齒狀曲線
影片中強調,呼叫 Sub-Agent 的能力並非 LLM 天生具備,而是需要後天訓練。
- AgentFold:透過強化學習訓練
spawn(繁衍) 與return(回傳) 動作。 - 隔離與合併邏輯:
- 隔離:主 Agent 在呼叫 Sub-Agent 時,只傳遞核心指令 (Context 量瞬間驟降) 。
- 合併 (摺疊):Sub-Agent 在執行過程產生的幾千行過程會被銷毀,僅回傳一兩行結果給主 Agent。
- 視覺化影響:這使得 Agent 的 Context 長度曲線呈現 「鋸齒狀 (Sawtooth) 」 —— 緩慢增長後因任務結束而大幅下降,克服了 Context 爆炸的物理屏障。
7 過濾與按需加載:主動尋求能力
為了避免 (Prompt) 被無關資訊塞滿,過濾機制至關重要:
- 兩段式讀取:使用
memory_search(找位置) 搭配memory_get(拿特定行數),避免無腦Read全檔案。 - MCP-Zero:取代傳統 RAG。讓 AI 先「描述」它現在需要的工具,系統才動態加載對應的 API 定義。這解決了工具過多 (Tool Bloat) 導致模型失焦的問題。
8 終極階段:Agentic Context Engineering (ACE)
最高階的 Context Engineering 是讓 AI 決定自己的 Context。
- Dynamic Cheatsheet:模型在任務中會自主維護一份「小抄」,紀錄哪些策略無效、哪些 Code 可重複使用。
- ACE:採用 Generator (草稿) 、Reflector (審核) 、Curator (發布) 三角色系統,確保 AI 修正自身 System Prompt 時不會發生致命誤刪。
- Recursive Language Models:模型在運作時只攜帶 Meta-data,遇到問題時會 「寫一段 Python 程式碼」 去檢索存在硬碟裡的歷史 Token。
9 未來方向
- AI 的「囤積症」抗拒:研究證明 LLM 天生討厭刪除記憶。因此,強大的 Agent 框架 (如 OpenClaw) 必須具備系統級強制攔截 (Memory Flush) 的機制,不能全權交由模型決定。
- 從筆記到本能:Context Engineering 的未來不僅是壓縮,而是「經驗的沉澱」。成功的 Agent 應該在多次任務後,將 Context 轉化為一套高效的 Playbook。
- 待解決問題:當記憶被轉存為指標 (Pointer) 後,如何在不大幅增加延遲的前提下,確保模型能精準「喚回」所需的細節,仍是優化效能的關鍵戰場。