Manus從誕生第一天起就是一款值得關(guān)注的產(chǎn)品。
只不過(guò)在很長(zhǎng)一段時(shí)間里,它的爭(zhēng)議蓋過(guò)了產(chǎn)品本身,團(tuán)隊(duì)本身也并未系統(tǒng)地分享過(guò)自己產(chǎn)品背后的技術(shù)。
這逐漸造成一個(gè)有趣的矛盾:Manus誕生到今天,它做出的交互方式創(chuàng)新,不只塑造了外界對(duì)"AI Agent"的印象,也在受到一眾競(jìng)爭(zhēng)對(duì)手乃至模型大廠的認(rèn)可或跟隨,這些關(guān)注的焦點(diǎn)并非在它炮制的"概念",而是實(shí)打?qū)崄?lái)自它的技術(shù)方案和產(chǎn)品思路,先是Anthropic 官方把它作為最有代表性的應(yīng)用案例,然后是多個(gè)AI應(yīng)用明星團(tuán)隊(duì)在產(chǎn)品路線上讓人看到它的影子,后是最近ChatGPT Agent的發(fā)布甚至被一些實(shí)打?qū)嵲谝痪€做Agent創(chuàng)業(yè)的人稱為OpenAI的Manus時(shí)刻。
而另一方面,依然有很多人在好奇這款"套殼"產(chǎn)品的技術(shù)含量,加之技術(shù)和產(chǎn)品之外的各種爭(zhēng)議不斷,使得它對(duì)于今天AI Agent的技術(shù)和產(chǎn)品發(fā)展方向的嚴(yán)肅價(jià)值被進(jìn)一步忽視。
而最近Manus團(tuán)隊(duì)終于難得自己出來(lái)系統(tǒng)的分享了這個(gè)產(chǎn)品背后的思路,并十分直接的分享了踩過(guò)的一系列坑,和因此做出的各種技術(shù)方案的設(shè)計(jì)和產(chǎn)品路線的決定。
這是一個(gè)對(duì)很多AI Agent領(lǐng)域的開(kāi)發(fā)者和創(chuàng)業(yè)者都有價(jià)值的技術(shù)分享。我們把這個(gè)用英文寫(xiě)的技術(shù)博客也交給Manus自己做了一個(gè)編譯和備注版本。
這個(gè)版本在翻譯和解釋上完成度很高。但在我跟Manus做prompt 的過(guò)程中,一個(gè)有意思的地方是,它死活寫(xiě)不對(duì)作者的名字。而這個(gè)問(wèn)題反而正是這篇博客重點(diǎn)提到的KV Cache命中率對(duì)AI agent產(chǎn)品帶來(lái)的挑戰(zhàn)的一個(gè)體現(xiàn)。
借用博客里的話,可能這個(gè)問(wèn)題反而"諷刺地"指向了上下文工程方向的價(jià)值。
以下為Manus自己生成整理的版本:
AI Agent的上下文工程:構(gòu)建Manus的經(jīng)驗(yàn)教訓(xùn)
發(fā)布日期: 2025年7月18日
作者: 季逸超 'Peak' Ji
編者按
隨著AI Agent技術(shù)的快速發(fā)展,如何高效構(gòu)建和優(yōu)化 Agent系統(tǒng)已成為業(yè)界關(guān)注的焦點(diǎn)。本文是對(duì)Manus聯(lián)合創(chuàng)始人兼首席科學(xué)家季逸超(Yichao 'Peak' Ji)撰寫(xiě)的《Context Engineering for AI Agents: Lessons from Building Manus》一文的中文編譯。并在一些關(guān)鍵信息位置做了必要背景補(bǔ)充,以括號(hào)內(nèi)信息的形式呈現(xiàn),在文末做了術(shù)語(yǔ)解釋和參考資料信息匯總。
季逸超是中國(guó)AI領(lǐng)域的知名創(chuàng)業(yè)者,曾開(kāi)發(fā)出"猛犸"系列瀏覽器和Magi知識(shí)圖譜系統(tǒng),擁有豐富的自然語(yǔ)言處理和AI產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)。在本文中,他分享了Manus團(tuán)隊(duì)在構(gòu)建AI Agent過(guò)程中關(guān)于上下文工程的寶貴經(jīng)驗(yàn),包括KV緩存優(yōu)化、動(dòng)態(tài)動(dòng)作空間管理以及利用文件系統(tǒng)作為擴(kuò)展上下文的創(chuàng)新方法。
這些經(jīng)驗(yàn)不僅揭示了當(dāng)前AI Agent開(kāi)發(fā)的技術(shù)挑戰(zhàn)和解決思路,也為未來(lái) Agent技術(shù)的發(fā)展提供了重要參考。無(wú)論您是AI研究者、開(kāi)發(fā)者還是產(chǎn)品經(jīng)理,相信都能從中獲得啟發(fā)。
文章亮點(diǎn)總結(jié)
以下是《AI Agent的上下文工程:構(gòu)建Manus的經(jīng)驗(yàn)教訓(xùn)》一文的10個(gè)最重要的亮點(diǎn):
上下文工程的重要性:Manus選擇押注上下文工程,而非從頭訓(xùn)練模型,以實(shí)現(xiàn)快速迭代和產(chǎn)品與底層模型的正交性。
KV緩存命中率是關(guān)鍵指標(biāo):對(duì)于生產(chǎn)階段的AI Agent,KV緩存命中率直接影響延遲和成本,是優(yōu)化性能的關(guān)鍵。
保持提示前綴穩(wěn)定:LLMs的自回歸特性意味著即使單個(gè)token的差異也可能使緩存失效,因此保持提示前綴穩(wěn)定至關(guān)重要。
上下文僅追加原則:避免修改之前的動(dòng)作或觀察結(jié)果,確保序列化確定性,以維持KV緩存的有效性。
明確標(biāo)記緩存斷點(diǎn):在不支持自動(dòng)增量前綴緩存的框架中,手動(dòng)插入緩存斷點(diǎn)有助于優(yōu)化緩存利用。
掩碼而非移除工具:面對(duì)不斷增長(zhǎng)的工具數(shù)量,Manus通過(guò)掩碼token logits來(lái)管理工具可用性,而非動(dòng)態(tài)添加或移除工具,以避免緩存失效和模型混淆。
避免動(dòng)態(tài)增刪工具:動(dòng)態(tài)添加或移除工具會(huì)使KV緩存失效,并可能導(dǎo)致模型混淆和幻覺(jué)動(dòng)作。
上下文感知狀態(tài)機(jī):Manus使用上下文感知狀態(tài)機(jī)來(lái)管理工具可用性,通過(guò)掩碼token logits來(lái)約束動(dòng)作選擇。
文件系統(tǒng)作為擴(kuò)展上下文:將文件系統(tǒng)視為上下文窗口的擴(kuò)展,可以克服固定大小上下文窗口的限制,處理更復(fù)雜、更長(zhǎng)的任務(wù)。
虛擬文件系統(tǒng)的優(yōu)勢(shì):Manus的虛擬文件系統(tǒng)能夠高效存儲(chǔ)檢索信息、分層組織信息、在 Agent間共享信息以及支持版本控制。
正文
在Manus項(xiàng)目的最初階段,我和我的團(tuán)隊(duì)面臨一個(gè)關(guān)鍵決策:我們應(yīng)該使用開(kāi)源基礎(chǔ)模型訓(xùn)練一個(gè)端到端的Agent模型,還是在前沿模型的上下文學(xué)習(xí)(in-context learning)能力之上構(gòu)建Agent?
回顧我在自然語(yǔ)言處理(NLP)領(lǐng)域的第一個(gè)十年(季逸超出生于1992年,高中時(shí)期便開(kāi)始獨(dú)立開(kāi)發(fā)蘋(píng)果應(yīng)用程序,并在高三時(shí)推出了備受矚目的"猛犸1"瀏覽器。大一時(shí)他推出"猛犸4"瀏覽器,并獲得了Macworld Asia 2011的特等獎(jiǎng),在業(yè)界嶄露頭角),我們沒(méi)有這種選擇的奢侈。
遙想 BERT 時(shí)代(已是 7 年前)(注:BERT 2018 年發(fā)布,代表"預(yù)訓(xùn)練+微調(diào)"范式),模型必須先微調(diào)、再評(píng)估才能遷移到新任務(wù);一次迭代常常要幾周——盡管那些模型和今日 LLM 相比小得多。對(duì)于節(jié)奏很快、特別是仍在尋找 PMF(Product-Market Fit)的應(yīng)用,這種緩慢反饋循環(huán)簡(jiǎn)直是"判死刑"。
這是我上一個(gè)創(chuàng)業(yè)公司的痛苦教訓(xùn)(季逸超的創(chuàng)業(yè)之路始于Peak Labs,他獲得了真格基金和紅杉中國(guó)的早期投資,致力于打造創(chuàng)新產(chǎn)品。其中,Magi系統(tǒng)被稱為"中文互聯(lián)網(wǎng)最大通用知識(shí)圖譜",顯示了他在知識(shí)圖譜和語(yǔ)義搜索領(lǐng)域的積累)。當(dāng)時(shí)我從零開(kāi)始訓(xùn)練開(kāi)放信息抽?。╫pen information extraction,從非結(jié)構(gòu)化文本中自動(dòng)提取結(jié)構(gòu)化信息的技術(shù))和語(yǔ)義搜索模型。然后GPT-3和Flan-T5(Google的指令微調(diào)T5模型)出現(xiàn)了,我的內(nèi)部模型一夜之間變得無(wú)關(guān)緊要。具有諷刺意味的是,正是這些模型標(biāo)志著上下文學(xué)習(xí)的開(kāi)始——以及一條全新的前進(jìn)道路。
那段來(lái)之不易的教訓(xùn)讓方向變得清晰:Manus 要押注 context engineering(上下文工程:系統(tǒng)性設(shè)計(jì)、組織、操控 LLM 讀取的上下文結(jié)構(gòu)與內(nèi)容以驅(qū)動(dòng)行為)。這樣我們能在"數(shù)小時(shí)"而不是"數(shù)周"里交付改進(jìn),并保持產(chǎn)品與底層模型"正交"。也就是,模型進(jìn)步是"上漲潮水",Manus 要做漂浮的船,而不是被釘在海床的柱子。
然而,context engineering 并不簡(jiǎn)單。它更像"實(shí)驗(yàn)科學(xué)":我們重寫(xiě)(rebuild)了四次 Agent 框架——每次都是發(fā)現(xiàn)了更好的上下文塑造的方式。
我們把這種架構(gòu)搜索、prompt 微調(diào)、經(jīng)驗(yàn)猜測(cè)的手工過(guò)程(manual process)戲稱為 "Stochastic Graduate Descent"(注,這里是一個(gè)雙關(guān)自嘲,Manus翻譯的版本里,AI Agent沒(méi)有g(shù)et到這個(gè)意思,它影射 Stochastic Gradient Descent,隨機(jī)梯度下降,而Graduate 暗指"靠研究生體力/腦力不斷試",把 Gradient梯度換成 Graduate研究生,諷刺地說(shuō)明:它不是數(shù)學(xué)自動(dòng)優(yōu)化,而是一群工程師/研究生手動(dòng)做大量、帶噪聲的小實(shí)驗(yàn),逐步逼近更好的 Agent 架構(gòu))。
是的,它不優(yōu)雅,但有效。
這篇文章分享了我們通過(guò)自己的"SGD"達(dá)到的局部最優(yōu)解。如果你正在構(gòu)建自己的AI Agent,我希望這些原則能幫助你更快地收斂。
設(shè)計(jì)圍繞KV緩存
如果我必須選擇一個(gè)指標(biāo),我認(rèn)為KV緩存命中率是生產(chǎn)階段AI Agent最重要的單一指標(biāo)(KV-cache hit rate,鍵值緩存是Transformer模型中存儲(chǔ)注意力計(jì)算結(jié)果的機(jī)制,命中率高意味著可以重用之前的計(jì)算結(jié)果)。它直接影響延遲和成本。為了理解原因,讓我們看看典型 Agent是如何運(yùn)作的:
收到用戶輸入后, Agent通過(guò)一系列工具使用來(lái)完成任務(wù)。在每次迭代中,模型根據(jù)當(dāng)前上下文從預(yù)定義的動(dòng)作空間中選擇一個(gè)動(dòng)作。然后在環(huán)境中執(zhí)行該動(dòng)作(例如,Manus的虛擬機(jī)沙盒環(huán)境,這是Manus提供的隔離執(zhí)行環(huán)境,確保代碼安全運(yùn)行)以產(chǎn)生觀察結(jié)果。動(dòng)作和觀察結(jié)果被附加到上下文中,形成下一次迭代的輸入。這個(gè)循環(huán)持續(xù)到任務(wù)完成。
正如你可以想象的,上下文隨著每一步而增長(zhǎng),而輸出——通常是結(jié)構(gòu)化的函數(shù)調(diào)用——保持相對(duì)較短。這使得 Agent中預(yù)填充(prefilling,將輸入token一次性處理的階段)和解碼(decoding,逐個(gè)生成輸出token的階段)之間的比例與聊天機(jī)器人相比高度傾斜。例如,在Manus中,平均輸入與輸出token比例約為100:1。
幸運(yùn)的是,具有相同前綴的上下文可以利用KV緩存,這大大減少了首token時(shí)間(TTFT,Time-To-First-Token)和推理成本——無(wú)論你使用的是自托管模型還是調(diào)用推理API。我們談?wù)摰牟皇切》?jié)省:例如,使用Claude Sonnet時(shí),緩存的輸入token成本為0.30美元/百萬(wàn)token,而未緩存的成本為3美元/百萬(wàn)token——相差10倍。
保持提示前綴穩(wěn)定(Keep your prompt prefix stable)。由于LLMs的自回歸(autoregressive,模型按順序生成token,每個(gè)token的生成都依賴于之前的所有token)特性,即使是單個(gè)token的差異也可能使該token之后的緩存失效。一個(gè)常見(jiàn)錯(cuò)誤是在系統(tǒng)提示的開(kāi)頭包含時(shí)間戳——特別是精確到秒的時(shí)間戳。當(dāng)然,這讓模型能告訴你當(dāng)前時(shí)間,但也會(huì)殺死你的緩存命中率。
使你的上下文僅追加(append-only)。避免修改之前的動(dòng)作或觀察結(jié)果。確保你的序列化是確定性的。許多編程語(yǔ)言和庫(kù)在序列化JSON對(duì)象時(shí)不保證穩(wěn)定的鍵排序,這可能會(huì)悄無(wú)聲息地破壞緩存。
在需要時(shí)明確標(biāo)記緩存斷點(diǎn)。一些模型提供商或推理框架不支持自動(dòng)增量前綴緩存,而是需要在上下文中手動(dòng)插入緩存斷點(diǎn)。分配這些斷點(diǎn)時(shí),要考慮潛在的緩存過(guò)期,至少確保斷點(diǎn)包含系統(tǒng)提示的結(jié)尾。
此外,如果你使用vLLM(一個(gè)高性能的LLM推理框架)等框架自托管模型,請(qǐng)確保啟用前綴/提示緩存,并使用會(huì)話ID等技術(shù)在分布式工作節(jié)點(diǎn)間一致地路由請(qǐng)求。
掩碼,而非移除(Mask, Don't Remove)
隨著你的 Agent承擔(dān)更多能力,其動(dòng)作空間自然變得更加復(fù)雜——簡(jiǎn)單來(lái)說(shuō),工具數(shù)量爆炸式增長(zhǎng)。MCP最近的流行只是火上澆油。(Model Context Protocol,Anthropic提出的模型上下文協(xié)議,用于標(biāo)準(zhǔn)化AI模型與外部工具的交互)如果你允許用戶可配置的工具,相信我:總會(huì)有人將數(shù)百個(gè)神秘工具插入你精心策劃的動(dòng)作空間。結(jié)果,模型更可能選擇錯(cuò)誤的動(dòng)作或采取低效路徑。簡(jiǎn)而言之,你高度武裝的Agent變得更愚蠢了。
自然的反應(yīng)是設(shè)計(jì)動(dòng)態(tài)動(dòng)作空間——也許使用類似RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成,通過(guò)檢索相關(guān)信息來(lái)增強(qiáng)模型生成能力的技術(shù))的方式按需加載工具。我們?cè)贛anus中也嘗試過(guò)這種方法。但我們的實(shí)驗(yàn)表明一個(gè)明確的規(guī)則:除非絕對(duì)必要,避免在迭代中動(dòng)態(tài)添加或移除工具。
主要有兩個(gè)原因:
在大多數(shù)LLMs中,工具定義在序列化后位于上下文的前部,通常在系統(tǒng)提示之前或之后。因此任何更改都會(huì)使所有后續(xù)動(dòng)作和觀察的KV緩存失效。
當(dāng)之前的動(dòng)作和觀察仍然引用當(dāng)前上下文中不再定義的工具時(shí),模型會(huì)感到困惑。沒(méi)有約束解碼(constrained decoding,限制模型輸出必須符合特定格式或規(guī)則的技術(shù)),這通常導(dǎo)致模式違規(guī)或幻覺(jué)動(dòng)作。
為了解決這個(gè)問(wèn)題同時(shí)仍然改進(jìn)動(dòng)作選擇,Manus使用上下文感知狀態(tài)機(jī)(state machine,根據(jù)當(dāng)前狀態(tài)和輸入確定下一個(gè)狀態(tài)的計(jì)算模型)來(lái)管理工具可用性。它不是移除工具,而是在解碼過(guò)程中掩碼token logits(模型輸出的原始概率分布)以防止(或強(qiáng)制)基于當(dāng)前上下文選擇某些動(dòng)作。
自動(dòng) – 模型可以選擇調(diào)用函數(shù)或不調(diào)用。通過(guò)僅預(yù)填充回復(fù)前綴實(shí)現(xiàn):assistant
必需 – 模型必須調(diào)用函數(shù),但選擇不受約束。通過(guò)預(yù)填充到工具調(diào)用token實(shí)現(xiàn):assistant
指定 – 模型必須從特定子集調(diào)用函數(shù)。通過(guò)預(yù)填充到函數(shù)名開(kāi)頭實(shí)現(xiàn):assistant{"name": "browser_
使用這種方法,我們通過(guò)直接掩碼token logits來(lái)約束動(dòng)作選擇。例如,當(dāng)用戶提供新輸入時(shí),Manus必須立即回復(fù)而不是采取動(dòng)作。我們還故意設(shè)計(jì)了具有一致前綴的動(dòng)作名稱——例如,所有瀏覽器相關(guān)工具都以browser_開(kāi)頭,命令行工具以shell_開(kāi)頭。這使我們能夠輕松強(qiáng)制 Agent在給定狀態(tài)下只從某組工具中選擇,而無(wú)需使用有狀態(tài)的logits處理器。
這些設(shè)計(jì)有助于確保Manus Agent循環(huán)保持穩(wěn)定——即使在模型驅(qū)動(dòng)的架構(gòu)下。
將文件系統(tǒng)用作上下文(Use the File System as Context)
現(xiàn)代的前沿大語(yǔ)言模型(LLM)現(xiàn)在提供 128K 甚至更多的 token 上下文窗口。但在真實(shí)的 Agent(agentic)場(chǎng)景中,這通常是不夠的,有時(shí)甚至是一種負(fù)擔(dān)。這里有三個(gè)常見(jiàn)的痛點(diǎn):
觀測(cè)(Observations)可能非常龐大,特別是當(dāng) Agent與網(wǎng)頁(yè)或 PDF 等非結(jié)構(gòu)化數(shù)據(jù)交互時(shí),很容易就會(huì)超出上下文限制。
模型性能在超過(guò)一定上下文長(zhǎng)度后會(huì)下降,即使其上下文窗口在技術(shù)上支持更長(zhǎng)的長(zhǎng)度。
長(zhǎng)輸入(Long inputs)的成本很高,即使有前綴緩存(prefix caching,一種技術(shù),通過(guò)緩存已處理過(guò)的前綴 token 來(lái)加速后續(xù)請(qǐng)求的處理),你仍然需要為傳輸和預(yù)填充(prefill)每個(gè) token 付費(fèi)。
為了解決這個(gè)問(wèn)題,許多 Agent系統(tǒng)采用了上下文截?cái)啵╰runcation)或壓縮(compression)策略。但過(guò)于激進(jìn)的壓縮不可避免地會(huì)導(dǎo)致信息丟失。這個(gè)問(wèn)題是根本性的: Agent的天性決定了它必須基于所有先前的狀態(tài)來(lái)預(yù)測(cè)下一步行動(dòng)——而你無(wú)法可靠地預(yù)測(cè)哪個(gè)觀測(cè)(observation)在十步之后可能會(huì)變得至關(guān)重要。從邏輯上講,任何不可逆的壓縮都帶有風(fēng)險(xiǎn)。
我們的壓縮策略始終被設(shè)計(jì)為可恢復(fù)的。例如,只要保留了 URL,網(wǎng)頁(yè)的內(nèi)容就可以從上下文中丟棄;只要其路徑在沙箱(sandbox,一個(gè)隔離的計(jì)算環(huán)境)中仍然可用,文檔的內(nèi)容就可以被省略。這使得 Manus 可以在不永久丟失信息的情況下縮減上下文長(zhǎng)度。
在開(kāi)發(fā)這個(gè)功能時(shí),我發(fā)現(xiàn)自己開(kāi)始想象,要讓一個(gè)狀態(tài)空間模型(SSM)(State Space Model,一種與 Transformer 不同的序列模型架構(gòu),以其高效處理長(zhǎng)序列而聞名)在 Agent場(chǎng)景中有效工作需要什么。
與 Transformer 不同,SSM 缺乏完全的注意力機(jī)制,并且難以處理長(zhǎng)距離的反向依賴關(guān)系。但如果它們能夠掌握基于文件的記憶——將長(zhǎng)期狀態(tài)外部化,而不是保存在上下文中——那么它們的速度和效率可能會(huì)開(kāi)啟一類新的 Agent。 Agent化的 SSM(Agentic SSMs)可能成為神經(jīng)圖靈機(jī)(Neural Turing Machines,一種早期的嘗試,旨在通過(guò)外部記憶來(lái)增強(qiáng)神經(jīng)網(wǎng)絡(luò)能力的模型)的真正繼承者。
通過(guò)"復(fù)述"來(lái)操控注意力(Manipulate Attention Through Recitation)
如果你使用過(guò) Manus,你可能已經(jīng)注意到一個(gè)有趣的現(xiàn)象:在處理復(fù)雜任務(wù)時(shí),它傾向于創(chuàng)建一個(gè) todo.md 文件,并隨著任務(wù)的進(jìn)展逐步更新它,勾掉已完成的項(xiàng)目。
這不僅僅是一種可愛(ài)的行為——它是一種有意操控注意力的機(jī)制。
通過(guò)不斷重寫(xiě)待辦事項(xiàng)列表,Manus 正在將其目標(biāo)"復(fù)述"到上下文的末尾。這將全局計(jì)劃推入模型的近期注意力范圍,避免了"迷失在中間"(lost-in-the-middle,指大模型在處理長(zhǎng)上下文時(shí),容易忽略中間部分信息的現(xiàn)象)的問(wèn)題,并減少了目標(biāo)偏離。實(shí)際上,它是在使用自然語(yǔ)言來(lái)引導(dǎo)自己的注意力偏向任務(wù)目標(biāo)——而無(wú)需特殊的架構(gòu)更改。
保留錯(cuò)誤的內(nèi)容(Keep the Wrong Stuff In)
Agent會(huì)犯錯(cuò)。這不是一個(gè) bug——這是現(xiàn)實(shí)。語(yǔ)言模型會(huì)產(chǎn)生幻覺(jué),環(huán)境會(huì)返回錯(cuò)誤,外部工具會(huì)行為異常,意想不到的邊緣情況(edge cases)也時(shí)常出現(xiàn)。在多步驟任務(wù)中,失敗不是例外,而是循環(huán)的一部分。
然而,一種常見(jiàn)的沖動(dòng)是隱藏這些錯(cuò)誤:清理痕跡(trace),重試操作,或者重置模型的狀態(tài),然后把它交給神奇的"溫度參數(shù)"(temperature,一個(gè)控制模型輸出隨機(jī)性的參數(shù))。這感覺(jué)更安全、更可控。但這是有代價(jià)的:抹去失敗就移除了證據(jù)。沒(méi)有證據(jù),模型就無(wú)法適應(yīng)。
事實(shí)上,我們相信錯(cuò)誤恢復(fù)是真正 Agent行為最清晰的指標(biāo)之一。然而,在大多數(shù)學(xué)術(shù)工作和公開(kāi)基準(zhǔn)測(cè)試中,它仍然沒(méi)有得到充分的體現(xiàn),這些工作和測(cè)試通常關(guān)注在理想條件下的任務(wù)成功率。
不要被"少樣本"所困(Don't Get Few-Shotted)
少樣本提示(Few-shot prompting)是改進(jìn)大語(yǔ)言模型輸出的常用技術(shù)。但在 Agent系統(tǒng)中,它可能會(huì)以微妙的方式適得其反。
語(yǔ)言模型是出色的模仿者;它們會(huì)模仿上下文中的行為模式。如果你的上下文中充滿了相似的過(guò)往"行動(dòng)-觀測(cè)"對(duì),模型將傾向于遵循這種模式,即使它已不再是最佳選擇。
在涉及重復(fù)性決策或行動(dòng)的任務(wù)中,這可能很危險(xiǎn)。例如,當(dāng)使用 Manus 幫助審查一批 20 份簡(jiǎn)歷時(shí), Agent常常會(huì)陷入一種節(jié)奏——僅僅因?yàn)樗谏舷挛闹锌吹搅诉@些行為,就重復(fù)類似的操作。這會(huì)導(dǎo)致偏離(drift)、過(guò)度泛化(overgeneralization),有時(shí)還會(huì)產(chǎn)生幻覺(jué)。
換句話說(shuō),不要讓自己陷入"少樣本"的窠臼。你的上下文越統(tǒng)一,你的 Agent就越脆弱。
結(jié)論
上下文工程(Context engineering)仍然是一門(mén)新興的科學(xué)——但對(duì)于 Agent系統(tǒng)來(lái)說(shuō),它已經(jīng)至關(guān)重要。模型可能正在變得更強(qiáng)、更快、更便宜,但再?gòu)?qiáng)的原始能力也無(wú)法取代對(duì)記憶、環(huán)境和反饋的需求。你如何塑造上下文,最終定義了你的 Agent的行為方式:它的運(yùn)行速度、恢復(fù)能力以及擴(kuò)展的程度。
在 Manus,我們通過(guò)反復(fù)的重寫(xiě)、走過(guò)的死胡同以及對(duì)數(shù)百萬(wàn)用戶的真實(shí)世界測(cè)試,學(xué)到了這些教訓(xùn)。我們?cè)诖朔窒淼囊磺卸疾皇瞧者m的真理——但這些是為我們奏效的模式。如果它們能幫助你哪怕避免一次痛苦的迭代,那么這篇文章就完成了它的使命。
Agent的未來(lái)將由一個(gè)個(gè)上下文構(gòu)建而成。請(qǐng)精心設(shè)計(jì)它們。
引用文章介紹
在原文中,作者引用了一些重要的概念和技術(shù),以下是對(duì)這些引用的簡(jiǎn)要介紹:
Manus:Manus是一個(gè)基于AI的自主 Agent平臺(tái),旨在執(zhí)行復(fù)雜的多步驟任務(wù)。它能夠模擬人類操作計(jì)算機(jī),通過(guò)一系列工具使用來(lái)完成從信息收集到數(shù)據(jù)分析,再到內(nèi)容創(chuàng)作等多種任務(wù)。Manus的核心理念是"交付成果",而非僅僅提供想法,旨在成為人機(jī)協(xié)作的下一代范式。
in-context learning:上下文學(xué)習(xí)(In-context learning)是指大型語(yǔ)言模型(LLMs)在推理時(shí),通過(guò)在輸入中提供少量示例(few-shot examples)來(lái)學(xué)習(xí)新任務(wù)的能力,而無(wú)需進(jìn)行模型參數(shù)的更新或重新訓(xùn)練。這種能力極大地提高了LLMs的靈活性和適應(yīng)性,使其能夠快速適應(yīng)新的任務(wù)和領(lǐng)域。
BERT:BERT(Bidirectional Encoder Representations from Transformers)是Google在2018年發(fā)布的一種預(yù)訓(xùn)練語(yǔ)言模型。它通過(guò)雙向訓(xùn)練Transformer編碼器來(lái)學(xué)習(xí)語(yǔ)言的上下文表示,極大地推動(dòng)了自然語(yǔ)言處理領(lǐng)域的發(fā)展,并在多項(xiàng)NLP任務(wù)中取得了突破性進(jìn)展。BERT的出現(xiàn)標(biāo)志著預(yù)訓(xùn)練模型時(shí)代的到來(lái),但其應(yīng)用仍需進(jìn)行微調(diào)。
open information extraction:開(kāi)放信息抽取(Open Information Extraction, Open IE)是一種從非結(jié)構(gòu)化文本中自動(dòng)提取結(jié)構(gòu)化信息(如實(shí)體、關(guān)系和事件)的技術(shù)。與傳統(tǒng)的需要預(yù)定義模式的信息抽取不同,Open IE旨在發(fā)現(xiàn)文本中所有可能的、自包含的事實(shí),而無(wú)需人工干預(yù)或預(yù)先構(gòu)建的本體。
GPT-3:GPT-3(Generative Pre-trained Transformer 3)是OpenAI在2020年發(fā)布的一款大型語(yǔ)言模型。它擁有1750億個(gè)參數(shù),是當(dāng)時(shí)最大的語(yǔ)言模型之一。GPT-3在生成高質(zhì)量文本、完成各種語(yǔ)言任務(wù)方面表現(xiàn)出色,其強(qiáng)大的上下文學(xué)習(xí)能力更是引發(fā)了廣泛關(guān)注,被認(rèn)為是AI發(fā)展史上的一個(gè)里程碑。
Flan-T5:Flan-T5是Google在T5模型基礎(chǔ)上進(jìn)行指令微調(diào)(instruction tuning)的系列模型。通過(guò)在大量不同任務(wù)的指令格式數(shù)據(jù)上進(jìn)行訓(xùn)練,F(xiàn)lan-T5展現(xiàn)出更強(qiáng)的零樣本(zero-shot)和少樣本(few-shot)泛化能力,能夠更好地理解和遵循用戶指令,從而在多種NLP任務(wù)中取得優(yōu)異表現(xiàn)。
KV-cache:KV緩存(Key-Value Cache)是Transformer模型中用于優(yōu)化推理速度的一種機(jī)制。在自回歸生成過(guò)程中,模型會(huì)重復(fù)計(jì)算注意力機(jī)制中的鍵(Key)和值(Value)矩陣。KV緩存通過(guò)存儲(chǔ)這些計(jì)算結(jié)果,避免了在生成每個(gè)新token時(shí)重復(fù)計(jì)算,從而顯著減少了推理時(shí)間和計(jì)算成本,尤其是在處理長(zhǎng)序列時(shí)。
autoregressive:自回歸(Autoregressive)是指模型在生成序列時(shí),當(dāng)前時(shí)間步的輸出依賴于之前所有時(shí)間步的輸出。在大型語(yǔ)言模型中,這意味著模型會(huì)逐個(gè)生成token,每個(gè)新生成的token都基于其前面已生成的所有token。這種特性使得模型能夠生成連貫且有邏輯的文本,但也意味著對(duì)序列前部的任何修改都可能影響后續(xù)的生成和緩存效率。
vLLM:vLLM是一個(gè)用于大型語(yǔ)言模型推理的高吞吐量和服務(wù)框架。它通過(guò)PagedAttention等創(chuàng)新技術(shù),顯著提高了LLM的服務(wù)吞吐量和效率,并降低了延遲。vLLM支持多種模型和推理優(yōu)化,是自托管LLM推理的流行選擇。
prefix/prompt caching:前綴/提示緩存(Prefix/Prompt Caching)是vLLM等推理框架中的一項(xiàng)優(yōu)化技術(shù),它允許模型緩存輸入提示(prompt)的KV值。當(dāng)后續(xù)請(qǐng)求具有相同的前綴時(shí),可以直接從緩存中加載這些KV值,從而避免重復(fù)計(jì)算,顯著提高推理速度和效率,尤其適用于 Agent等場(chǎng)景中重復(fù)使用相同系統(tǒng)提示的情況。
MCP:MCP(Model Context Protocol,模型上下文協(xié)議)是Anthropic提出的一種標(biāo)準(zhǔn)化AI模型與外部工具交互的協(xié)議。它旨在為AI模型提供一種統(tǒng)一的方式來(lái)理解和使用工具,從而簡(jiǎn)化 Agent系統(tǒng)的開(kāi)發(fā)和集成。MCP的流行反映了AI Agent對(duì)外部工具調(diào)用能力日益增長(zhǎng)的需求。
RAG:檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG)是一種結(jié)合了信息檢索和文本生成的技術(shù)。它允許大型語(yǔ)言模型在生成回答之前,從外部知識(shí)庫(kù)中檢索相關(guān)信息,然后利用這些信息來(lái)生成更準(zhǔn)確、更豐富、更少幻覺(jué)的回答。RAG在處理需要最新信息或特定領(lǐng)域知識(shí)的任務(wù)時(shí)尤其有效。
constrained decoding:約束解碼(Constrained Decoding)是一種在大型語(yǔ)言模型生成文本時(shí),強(qiáng)制其輸出符合特定格式、語(yǔ)法規(guī)則或預(yù)定義模式的技術(shù)。通過(guò)在解碼過(guò)程中限制模型可以選擇的token,可以確保生成的文本滿足特定的結(jié)構(gòu)化要求,例如生成有效的JSON、代碼或函數(shù)調(diào)用。
state machine:狀態(tài)機(jī)(State Machine),或有限狀態(tài)機(jī)(Finite-State Machine, FSM),是一種數(shù)學(xué)模型,用于描述系統(tǒng)在不同狀態(tài)之間轉(zhuǎn)換的行為。它根據(jù)當(dāng)前狀態(tài)和接收到的輸入,決定下一個(gè)狀態(tài)以及可能執(zhí)行的動(dòng)作。在AI Agent中,狀態(tài)機(jī)可以用于管理工具的可用性,根據(jù) Agent的當(dāng)前任務(wù)和上下文來(lái)動(dòng)態(tài)調(diào)整其行為。
Hermes format:Hermes格式通常指的是NousResearch開(kāi)發(fā)的Hermes系列模型所使用的指令遵循和函數(shù)調(diào)用格式。這些模型經(jīng)過(guò)特殊訓(xùn)練,能夠理解并執(zhí)行復(fù)雜的指令,包括結(jié)構(gòu)化的函數(shù)調(diào)用。在本文中,它被用作演示不同函數(shù)調(diào)用模式的示例。
Neural Turing Machines:神經(jīng)圖靈機(jī)(Neural Turing Machines, NTMs)是DeepMind在2014年提出的一種神經(jīng)網(wǎng)絡(luò)架構(gòu),它結(jié)合了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力和圖靈機(jī)的外部記憶能力。NTMs旨在解決傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在處理長(zhǎng)序列和需要外部記憶的任務(wù)時(shí)的局限性,為構(gòu)建更通用、更強(qiáng)大的AI系統(tǒng)提供了新的思路。
temperature:在大型語(yǔ)言模型中,temperature是一個(gè)用于控制生成文本隨機(jī)性和創(chuàng)造性的參數(shù)。較高的temperature值會(huì)使模型輸出更具多樣性和隨機(jī)性,可能產(chǎn)生更具創(chuàng)造性但有時(shí)不那么連貫的文本;較低的值則會(huì)使模型輸出更具確定性和保守性,更傾向于選擇概率最高的token。在 Agent錯(cuò)誤恢復(fù)中,有時(shí)會(huì)通過(guò)調(diào)整temperature來(lái)影響模型的行為。
Few-shot prompting:少樣本提示(Few-shot prompting)是一種提示工程技術(shù),通過(guò)在給模型的問(wèn)題中提供少量完成任務(wù)的示例,來(lái)引導(dǎo)模型生成符合期望的輸出。這種方法利用了大型語(yǔ)言模型的上下文學(xué)習(xí)能力,使其能夠在沒(méi)有額外訓(xùn)練的情況下,快速適應(yīng)新的任務(wù)。
參考文獻(xiàn)
[1] Manus Blog. Context Engineering for AI Agents: Lessons from Building Manus. https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus
[2] Wikipedia. KV cache. https://en.wikipedia.org/wiki/KV_cache
[3] 百度百科. 季逸超. https://baike.baidu.com/item/%E5%AD%A3%E9%80%B8%E8%B6%85/3787689
[4] Wikipedia. In-context learning. https://en.wikipedia.org/wiki/In-context_learning
[5] Wikipedia. BERT (language model). https://en.wikipedia.org/wiki/BERT_(language_model)
[6] Wikipedia. Open information extraction. https://en.wikipedia.org/wiki/Open_information_extraction
[7] Wikipedia. GPT-3. https://en.wikipedia.org/wiki/GPT-3
[8] arXiv. Flan-T5. https://arxiv.org/abs/2210.11416
[9] YouTube. Introducing Manus: The General AI Agent. https://www.youtube.com/watch?v=K27diMbCsuw
[10] Gamigion. China's AI Revolution: Manus, the Game-Changer. https://www.gamigion.com/chinas-ai-revolution-manus-the-game-changer/
[11] Pandayoo. China's Revolutionary AI Agent Set to Disrupt Global Industries. https://pandayoo.com/post/manus-ai-chinas-revolutionary-ai-agent-set-to-disrupt-global-industries/
[12] Fortune. China's Manus follows DeepSeek in challenging U.S. AI lead. https://fortune.com/asia/2025/03/11/china-manus-follows-deepseek-ai/
[13] MSN. Manus AI: China's second DeepSeek moment. https://www.msn.com/en-in/money/news/manus-ai-china-s-second-deepseek-moment/ar-AA1AAsSN
[14] ChinaZ. Manus創(chuàng)始人季逸超:Manus產(chǎn)品基于阿里千問(wèn)大模型開(kāi)發(fā). https://www.chinaz.com/ainews/16140.shtml
[15] Facebook. Ji Yichao, co-founder of Manus, disclosed that the ... https://www.facebook.com/nbdnews/videos/ji-yichao-co-founder-of-manus-disclosed-that-the-manus-product-employs-various-f/1229904471997770/
[16] AInvest. Manus responds to the freeze of his X account: He claims ... https://www.ainvest.com/news/manus-responds-freeze-account-claims-involved-cryptocurrency-projects-2503/
[17] Hugging Face. Nous-Hermes-2-Mixtral-8x7B-SFT. https://huggingface.co/NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT
[18] Yicai Global. The AI agent concept plate is up and down! Netizens left a message ... https://www.yicaiglobal.com/star50news/2025_03_066801167325711040518
[19] AI Magazine. Manus AI is Here. But What's Behind the Hype? https://aimagazine.com/articles/manus-ai-is-here-but-whats-behind-the-hype
[20] Wikipedia. Autoregressive model. https://en.wikipedia.org/wiki/Autoregressive_model
[21] vLLM. vLLM GitHub. https://github.com/vllm-project/vllm
[22] vLLM. Prefix/Prompt Caching. https://vllm.ai/docs/concepts/prefix_caching.html
[23] Anthropic. Model Context Protocol. https://www.anthropic.com/news/model-context-protocol
[24] Wikipedia. Retrieval-augmented generation. https://en.wikipedia.org/wiki/Retrieval-augmented_generation
[25] Hugging Face. Constrained Decoding. https://huggingface.co/blog/constrained-decoding
[26] Wikipedia. Finite-state machine. https://en.wikipedia.org/wiki/Finite-state_machine
[27] Wikipedia. Neural Turing machine. https://en.wikipedia.org/wiki/Neural_Turing_machine
[28] Hugging Face. GenerationConfig.temperature. https://huggingface.co/docs/transformers/main_classes/text_generation#transformers.GenerationConfig.temperature
[29] Prompting Guide. Few-shot prompting. https://www.promptingguide.ai/techniques/fewshot