Anthropic:怎么才能控制模型的行為,做好Agents?
嘿,大家好!這里是一個專注于前沿AI和智能體的頻道~
Anthropic 最近又發(fā)了一篇關(guān)于 AI Agents 的博客,過去幾個月已經(jīng)連續(xù)好幾篇了。
我覺得他們關(guān)于Agents的內(nèi)容整體都挺好的,寫的也很有實踐意義。
今天的分享,圍繞一個核心問題:如何配置上下文,才能讓模型持續(xù)輸出期望的行為。
TLDR:
上下文是有限資源,存在 Context Rot現(xiàn)象。 好的上下文工程 = 找到最小的高信號 token 集,最大化期望結(jié)果。
長時間任務(wù)三板斧:壓縮、結(jié)構(gòu)化筆記、子智能體。
新的趨勢是 Just-in-time策略:不預(yù)處理所有數(shù)據(jù),而是維護(hù)輕量級標(biāo)識符(文件路徑、鏈接),運(yùn)行時動態(tài)加載。
混合策略是實踐共識,Claude Code 采用混合模型:CLAUDE.md 直接放入上下文(預(yù)處理),glob/grep 讓 Agent 即時探索。
什么是上下文工程?
先說清楚概念。上下文指的是調(diào)用大模型時包含的所有 token。
而上下文工程就是在 LLM 固有約束下,優(yōu)化這些 token,以實現(xiàn)預(yù)期結(jié)果的工程問題。
簡單來說:提示工程關(guān)注的是“怎么寫好提示詞”,上下文工程關(guān)注的是“怎么管理整個上下文狀態(tài)”——包括系統(tǒng)指令、工具、外部數(shù)據(jù)、消息歷史、MCP等所有信息。
圖片
早期,大多數(shù)用例是一次性的分類或文本生成任務(wù),寫好提示詞就夠了。
但現(xiàn)在我們要構(gòu)建的是能在多輪推理、長時間運(yùn)行的 Agent,這些 Agent 每次循環(huán)都會生成更多可能相關(guān)的數(shù)據(jù),這些信息必須被持續(xù)精煉。
為什么上下文很珍貴!
Anthropic的核心insight是:上下文是有限資源,邊際收益遞減。
盡管模型能處理越來越大的上下文窗口,但研究發(fā)現(xiàn)了一個現(xiàn)象叫 Context Rot——隨著上下文 token 數(shù)量增加,模型準(zhǔn)確召回信息的能力會下降。
這不是某個模型的問題,而是所有模型的共性。
原因在于 Transformer 架構(gòu)本身:每個 token 都要關(guān)注(attend)其他所有 token,這產(chǎn)生了 n2 的兩兩關(guān)系。上下文越長,模型捕獲這些關(guān)系的能力就越被稀釋。
這意味著:好的上下文工程就是找到最小的、高信號的 token 集合,最大化期望結(jié)果的可能性。
上下文的構(gòu)成
Anthropic 給出了覆蓋上下文的各個組成部分:
System Prompts
要極其清晰,使用簡單直接的語言,并且要在正確的高度呈現(xiàn)想法。
那什么叫正確的高度?Anthropic 指出了兩個極端的失敗模式:
- 一個是把復(fù)雜的、脆弱的 if-else 邏輯硬編碼進(jìn)提示詞
- 另一個是提供模糊的、高層次的指導(dǎo),無法給 LLM 具體信號
最優(yōu)的高度在中間:足夠具體以有效引導(dǎo)行為,又足夠靈活讓模型獲得強(qiáng)啟發(fā)式指導(dǎo)。
圖片
建議用 XML 標(biāo)簽或 Markdown 標(biāo)題組織提示詞(如 <background_information>, ## Tool guidance 等),但格式也逐漸變得不那么重要,因為模型越來越強(qiáng)了。
核心原則是:追求完整可以概述預(yù)期行為的最小集合。但是,最小不等于短——仍然需要給 Agent 足夠的前置信息。
Tools
工具讓 Agent 能與環(huán)境交互、拉取新上下文。
最常見的失敗模式是:工具集臃腫,覆蓋太多功能,或?qū)е率褂媚膫€工具的決策點(diǎn)模糊不清。
如果人都無法明確說出某個情況該用哪個工具,AI Agent 更做不到。
Examples
Few-shot prompting 是公認(rèn)的有效方法。
但 Anthropic 提到,不建議把一堆邊緣案例塞進(jìn)提示詞,試圖闡述 LLM 應(yīng)該遵循的每條規(guī)則。
相反,應(yīng)該想辦法構(gòu)建一組多樣的、典型的示例,有效展示 Agent 的預(yù)期行為。
對 LLM 來說,示例就是一圖勝千言。
從預(yù)處理到即時策略
傳統(tǒng)做法是用基于向量的檢索在推理前就把相關(guān)上下文準(zhǔn)備好。
但現(xiàn)在越來越多人在用 Just-in-time 上下文策略。
核心思路:不預(yù)處理所有相關(guān)數(shù)據(jù),而是維護(hù)輕量級標(biāo)識符(文件路徑、存儲查詢、網(wǎng)頁鏈接等),用工具在運(yùn)行時動態(tài)加載數(shù)據(jù)到上下文。
Anthropic 自己的 Claude Code 就是這么做的。模型可以寫目標(biāo)查詢、存儲結(jié)果,利用 Bash 命令如 head 和 tail 分析大量數(shù)據(jù),而不用把完整數(shù)據(jù)對象加載到上下文。
這種方式模仿人類認(rèn)知:我們不會記住整個信息語料庫,而是引入外部組織和索引系統(tǒng)(文件系統(tǒng)、收件箱、書簽)按需檢索相關(guān)信息。
這種方法還實現(xiàn)了 Progressive Disclosure ——讓 Agent 通過探索逐步發(fā)現(xiàn)相關(guān)上下文。
每次交互產(chǎn)生的上下文為下一個決策提供信息:文件大小暗示復(fù)雜度;命名規(guī)范暗示用途;時間戳可以代表相關(guān)性。
當(dāng)然,這有權(quán)衡:運(yùn)行時探索比檢索預(yù)計算數(shù)據(jù)慢。
而且需要有非常精妙的工程,確保 LLM 有正確的工具和啟發(fā)式方法來有效找到信息。
最有效的 Agent 可能采用混合策略:部分?jǐn)?shù)據(jù)預(yù)先檢索以提高速度,部分由 Agent 自主探索。
Claude Code 就是混合模型:CLAUDE.md 文件會直接放入上下文,而 glob 和 grep 等原語讓它能即時導(dǎo)航環(huán)境、檢索文件。
長時間任務(wù)的上下文工程
對于需要幾十分鐘到幾小時連續(xù)工作的長時間任務(wù),Agent 需要專門技術(shù)來應(yīng)對上下文窗口限制。
Anthropic 提供了三個策略:
Compaction
把接近上下文窗口限制的對話進(jìn)行總結(jié),用摘要重新啟動新的上下文窗口。這通常是上下文工程的第一個杠桿。
在 Claude Code 中,會把消息歷史傳給模型總結(jié)壓縮關(guān)鍵細(xì)節(jié)。模型保留架構(gòu)決策、未解決的 bug、實現(xiàn)細(xì)節(jié),同時丟棄冗余的工具輸出或消息。然后 Agent 用壓縮后的上下文加最近訪問的 5 個文件繼續(xù)工作。
壓縮的藝術(shù)在于選擇保留什么、丟棄什么。過度激進(jìn)的壓縮可能丟失微妙但關(guān)鍵的上下文。
Structured Note-taking
也叫智能體記憶。Agent 定期把筆記寫到上下文窗口外的持久化內(nèi)存中,之后再拉回上下文窗口。
Claude Code 創(chuàng)建待辦清單,或你的自定義 Agent 維護(hù) NOTES.md 文件,這種簡單模式讓 Agent 跨復(fù)雜任務(wù)追蹤進(jìn)度,維護(hù)原本會在幾十次工具調(diào)用中丟失的關(guān)鍵上下文和依賴。
Sub-agent Architectures
與其讓一個 Agent 維護(hù)整個項目的狀態(tài),不如讓專門的子智能體處理有清晰上下文窗口的聚焦任務(wù)。
主 Agent 用高層計劃協(xié)調(diào),子智能體執(zhí)行深度技術(shù)工作或使用工具查找相關(guān)信息。
每個子智能體可能廣泛探索,使用大量 token,但只返回結(jié)果的精簡總結(jié)(通常 1,000-2,000 token)。
這實現(xiàn)了清晰的關(guān)注點(diǎn)分離——詳細(xì)搜索上下文隔離在子智能體內(nèi),主 Agent 專注于綜合和分析結(jié)果。
實踐建議
在上下文的不同組成部分(系統(tǒng)提示、工具、示例、消息歷史等)都要深思熟慮,保持信息豐富但緊湊。
選擇哪種方法取決于任務(wù)特征:
- 上下文壓縮適合需要大量來回的任務(wù),保持對話流
- 記筆記適合有清晰里程碑的迭代開發(fā)
- 多智能體架構(gòu)適合并行探索有回報的復(fù)雜研究和分析
如何在擴(kuò)展交互中,保持連貫性,是構(gòu)建 Agent 的核心。
最后
Anthropic 在 Sonnet 4.5 發(fā)布時,還在 Claude Developer Platform 上發(fā)布了公開測試版的記憶工具,地址在:http://anthropic.com/news/context-management
通過基于文件的系統(tǒng)讓存儲和查詢上下文窗口外的信息變得更容易。同時也有記憶和上下文管理 cookbook,地址在:https://github.com/anthropics/claude-cookbooks/blob/main/tool_use/memory_cookbook.ipynb。





























