前面這篇介紹了,何謂 Context Engineering(上下文工程)
接下來要介紹其核心概念與如何應用,包括如何讓 AI 學會「記筆記」以維持專注,並介紹上下文管理的四大核心策略:撰寫、選擇、壓縮與隔離。
讓 AI 學會記筆記是管理長上下文、確保 AI 在多步驟任務中不「失憶」或「跑題」的關鍵方法。
其原理是透過 Function Calling
或工具使用的能力,為 AI Agent 提供一個專門用於記錄、更新和讀取筆記的工具。
在執行一個複雜任務時,AI Agent 可以主動調用這個工具來記錄關鍵資訊。為了讓這個過程更可靠,我們通常會在系統提示詞(System Prompt)中明確地定義筆記的使用策略
pending
改為 completed
)。運作流程解析:
當 AI 收到一個任務時,它會先進行「內部思考」或「頭腦風暴」,產出一個任務清單,然後調用筆記工具將其記錄下來。這份筆記接著會被 Agent 策略性地插入到每一次提交給 LLM 的上下文的開頭或結尾。
現代 LLM 主要基於 Transformer 架構,Transformer 架構的自注意力機制,對序列開頭和結尾的資訊具有較高的關注度,特別是在長序列時,邊緣位置的向量因位置編碼而有助於模型優先捕捉此類「任務重點」。即使中間的對話歷史和工具調用結果變得非常冗長,模型仍然能輕易地注意到位於開頭或結尾的核心任務清單,從而確保它始終記得最初的目標。
筆記的內容也不僅限於任務清單,還可以包含從外部工具(如網路搜尋)中獲取的關鍵事實、用戶的偏好設定、中間計算結果等,便於後續進行總結和決策。這項技術的本質,就是開發者透過提示詞工程,指導 AI 如何自我管理記憶,再透過將這份「記憶」放在上下文中最顯眼的位置,來間接引導 AI 的整個處理流程。
在 VSCode 或任何整合了 AI 功能的 IDE 中,上下文工程的「靜態選擇」策略可以透過一個專案級的設定檔來實現。例如,開發者可以在專案根目錄下建立一個名為 Gemini.md
或類似的檔案。
這個檔案的功能是定義整個專案的「核心背景」,其內容可能包含:
當 AI 需要執行如「新增功能」或「修復 Bug」等任務時,它會被指示總是先讀取這個檔案的內容,並將其作為最高優先級的上下文。這確保了 AI 生成的任何程式碼都能符合專案的既定規範,避免產生風格不一或違反架構的程式碼。
而使用Android也是同理。
上下文管理是指如何策略性地修改、篩選和組織提交給 LLM 的完整歷史記錄。一個優秀的管理策略是打造高效、穩定且符合成本效益的 AI 應用的基石。其主要可分為四大策略:
「撰寫」上下文可以理解為「保存 Context」,其核心是為本質上無記憶的 LLM 創建一個持久化的記憶層。這表示我們會將對話中的關鍵資訊進行篩選和總結,並將其儲存起來(例如,儲存在 session 記憶體、Redis 快取或資料庫中),在後續的對話中,再根據需要將這些記憶重新載入到上下文中。
一個典型的例子是 AI 助理的記憶功能。當用戶告知 AI 自己的姓名、偏好或特定專案的細節時,系統可以將這些資訊結構化地存儲起來。這個保存動作是 Context Engineering 的第一步,它解決了資訊持久化的問題,讓 AI 能夠提供更具個人化和連貫性的體驗。
「選擇 Context」是從所有可用的資訊(包括對話歷史、文件、工具說明等)中,智慧地挑選出與當前任務最相關的內容放入上下文。一個好的選擇策略是整個系統高效運作的保障。
選擇策略主要分為兩類:
當對話持續進行,或 AI Agent 執行多步工具調用時,上下文會迅速膨脹,很快就會超出模型的 Token 限制,同時也帶來高昂的 API 成本。「壓縮 Context」就是為了解決這個問題。
常見的壓縮方法包括:
「隔離 Context」是指在複雜的系統(特別是 Multi-Agent 系統)中,為不同的任務或 Agent 維護獨立、互不干擾的上下文。這可以防止「上下文污染」,即一個子任務的資訊洩漏並干擾到另一個不相關的子任務。
例如,一個負責規劃行程的 AI 系統可能包含多個 Sub-agents:一個負責搜尋航班,一個負責預訂飯店,另一個負責查詢當地天氣。每個 Sub-agent 都有自己獨立的工具、運行歷史和記憶體系。航班 Agent 的上下文只包含與航班相關的資訊,而不會被飯店預訂的細節所干擾。主控的 Lead Agent 則負責在這些被隔離的 Sub-agents 之間傳遞必要的最終結果,並進行協調。
推薦資源:
https://ihower.tw/blog/12817-context-engineering
https://zhuanlan.zhihu.com/p/1938967453951571269