AI 程式開發與代理

【代理人設計 #2】情境工程:像管理預算一樣使用情境視窗

情境視窗不是越大越好,而是相關性越高越好。本文整理四種把有限視窗當成預算使用的策略:選擇性載入、摘要、隔離與外部化,以及 CLAUDE.md 等常駐載入檔案的設計準則。

閱讀 4 分鐘
【代理人設計 #2】情境工程:像管理預算一樣使用情境視窗 封面圖

只看「200K token 情境視窗」這項規格,似乎可以把大多數程式碼庫完整放進去。但實際全部放入後,回應品質反而會大幅下降。

多項研究已確認,模型在較長的情境中可能遺漏中間內容。能夠放入,和能夠善用,是兩回事。

因此有了情境工程這個概念。簡單說,就是把有限的情境視窗視為預算,在每個時刻只保留最有用的資訊。

本文將整理情境為何是一種預算、節省預算的四種策略,以及 CLAUDE.md 等常駐載入檔案的設計準則。

先從重點摘要開始。

  1. 情境不是越大越好,而是相關性越高越好。
  2. 策略大致分為四種:選擇性載入、摘要(壓縮)、隔離、外部化(記憶體)。
  3. 常駐載入檔案(如 CLAUDE.md)只放「永遠成立的事情」,並維持精簡。
  4. 工具與指示文件也是情境消費者。註冊後卻不使用的工具,就是成本。

為什麼是預算?情境的成本結構

情境視窗會同時產生三種成本。

第一是效能成本。無關內容越多,模型的注意力就越分散。尤其長情境的中間部分較難被取回,這種「lost in the middle」現象已廣為人知。

第二是金錢成本。輸入 token 每次請求都會計費。對話越長,相同內容就會被重複收費。

第三是機會成本。雜物佔據的空間越多,真正需要的程式碼與文件就越沒有容納空間。

情境工程帶來的觀點轉換是:不要問「能放多少」,而要問「這個 token 現在有資格放在這裡嗎?」


策略 1、2:選擇性載入與摘要

選擇性載入(retrieval)是在需要時只取得需要內容的策略。與其讀完 2,000 行檔案,不如只讀相關函式;與其載入整份文件,不如透過搜尋取得相關段落。

Skill 的漸進式載入(平時只顯示一行說明,執行時才載入本文)也是相同原理。

摘要(compaction)會壓縮累積的歷史紀錄。把數十次工具呼叫記錄濃縮成「已修改這些檔案,測試已通過」的一段文字。

這就是程式碼代理人在對話變長時自動執行的壓縮。

請記住,摘要會造成資訊損失。細節可能在折疊過程中消失,因此重要決策最好在摘要前先寫入檔案。

只將目前需要的資訊載入情境視窗,其餘內容移至檔案的流程圖
只將目前需要的內容載入視窗,其餘移至檔案

策略 3、4:隔離與外部化

隔離(isolation)是將會干擾情境的工作拆到個別工作階段。讓子代理人進行大規模探索時,檔案傾印會消耗該情境的空間,主工作階段只會收到幾行結論。

這是保護主工作階段預算最可靠的方法。

外部化(memory)使用情境外的儲存空間。工作階段結束後情境會消失,但寫入檔案的內容仍會保留。

將工作狀態記錄為 Markdown,讓下一個工作階段接手,是常見模式。把專案知識累積在 CLAUDE.md 與記憶體檔案中,也屬於這種模式。

策略 一句話摘要 代表案例
選擇性載入 只在需要時取得 部分讀取、Skill 漸進式載入
摘要 折疊歷史紀錄 自動壓縮
隔離 交給其他工作階段 子代理人
外部化 寫入檔案 記憶體檔案、狀態文件

常駐載入檔案的設計準則

CLAUDE.md 等檔案是每個工作階段預算中預先扣除的固定成本。因此,標準必須清楚。

應放入「永遠正確且不可違反的事情」,例如程式碼規範、禁止事項與建置指令。

應移除「偶爾才需要的事情」。特定工作的詳細流程交給 Skill,過去工作的紀錄則移至記憶體檔案。

桌上只放著筆電與一本筆記本,旁邊有貼上標籤抽屜的整潔工作空間
桌上只放與目前工作相關的東西,情境也是如此

工具註冊也適用相同邏輯。連接的 MCP(Model Context Protocol)伺服器越多,工具定義就越會以固定成本累積。

十個未使用的伺服器本身就是造成效能下降的因素,值得定期整理。


總結

情境工程歸根究柢就是管理相關性。不是因為視窗變大就全部填滿,而是在每個時刻只把與目前工作相關的內容放到模型的桌面上。

結合「Harness Engineering」篇介紹的執行迴圈與本文的預算管理,就能完成代理人設計的整體藍圖。下一篇將介紹實際組裝這些概念的管線案例。

延伸閱讀