7 月 19 日消息,前段時(shí)間,報(bào)道了 AI 智能體平臺(tái) Manus 被曝裁員、清空國內(nèi)多平臺(tái)賬號(hào)等消息。北京時(shí)間今天早些時(shí)候,Manus 聯(lián)合創(chuàng)始人季逸超通過官方博客發(fā)布了上千字的技術(shù)解析長文,復(fù)盤公司從今年年初爆火至今歷經(jīng)“起起落落”的開發(fā)思路與教訓(xùn)。
今年 3 月,由國內(nèi) Monica 團(tuán)隊(duì)研發(fā)推出的 Manus 在海外社交平臺(tái)推出,Manus 號(hào)稱是全球首款通用智能體(Agent),可獨(dú)立解決復(fù)雜任務(wù)。在通用 AI 助手基準(zhǔn)測試 GAIA 的全部難度級(jí)別中的評(píng)分甚至遠(yuǎn)遠(yuǎn)超越 OpenAI 的 DeepResearch。Manus 放出的演示視頻中展現(xiàn)出的驚艷表現(xiàn),瞬間引爆用戶熱情,但是 Manus 僅限邀請(qǐng)?bào)w驗(yàn),渴望第一時(shí)間體驗(yàn) Manus 的用戶在海內(nèi)外各大社區(qū)平臺(tái)紛紛留言“求邀請(qǐng)碼”,這也讓 Manus 一炮而紅,刷屏社交平臺(tái)。
附博客文章大意如下:
在 Manus 項(xiàng)目的最初階段,我和我的團(tuán)隊(duì)面臨著一個(gè)關(guān)鍵的決定:我們應(yīng)該使用開源基礎(chǔ)來訓(xùn)練一個(gè)端到端的 Agentic 模型,還是在前沿模型的上下文學(xué)習(xí)能力之上構(gòu)建一個(gè) Agent?
回想我在 NLP 領(lǐng)域的第一個(gè)十年,我們沒有這種選擇的余地。在遙遠(yuǎn)的 BERT 時(shí)代(是的,已經(jīng)七年了),模型必須經(jīng)過微調(diào)和評(píng)估,才能轉(zhuǎn)移到新的任務(wù)。即使與今天的 LLMs 相比,當(dāng)時(shí)的模型非常小,但這個(gè)過程通常每次迭代都需要幾周時(shí)間。對(duì)于快速發(fā)展的應(yīng)用,尤其是在達(dá)到 PMF 之前,如此緩慢的反饋循環(huán)是不可接受的。這是我上次創(chuàng)業(yè)時(shí)的一個(gè)慘痛教訓(xùn),當(dāng)時(shí)我從頭開始訓(xùn)練模型,用于開放信息提取和語義搜索。后來出現(xiàn)了 GPT-3 和 Flan-T5,我的內(nèi)部模型一夜之間變得無關(guān)緊要。具有諷刺意味的是,這些模型標(biāo)志著上下文學(xué)習(xí)的開始,以及一條全新的前進(jìn)道路。
那次來之不易的教訓(xùn)讓我們明確了選擇:Manus 將押注于上下文工程。這使我們能夠在幾個(gè)小時(shí)內(nèi)交付改進(jìn),而不是幾周,并使我們的產(chǎn)品與底層模型正交:如果模型進(jìn)步是漲潮,我們希望 Manus 成為船,而不是卡在海底的柱子。
盡管如此,上下文工程的結(jié)果遠(yuǎn)非簡單。這是一門實(shí)驗(yàn)科學(xué) —— 我們已經(jīng)重建了四次 Agent 框架,每次都是在發(fā)現(xiàn)塑造上下文的更好方法之后。我們親切地將這種架構(gòu)搜索、提示調(diào)整和經(jīng)驗(yàn)猜測的手動(dòng)過程稱為“隨機(jī)梯度下降”。它并不優(yōu)雅,但它有效。
這篇文章分享了我們通過自己的“SGD”達(dá)到的局部最優(yōu)解。如果您正在構(gòu)建自己的 AI Agent,我希望這些原則能幫助您更快地收斂。
圍繞 KV 緩存進(jìn)行設(shè)計(jì)如果我必須選擇一個(gè)指標(biāo),我會(huì)認(rèn)為 KV 緩存命中率是生產(chǎn)階段 AI Agent 最重要的指標(biāo)。它直接影響延遲和成本。要理解為什么,讓我們看看一個(gè)典型的 Agent 是如何運(yùn)作的:
在收到用戶輸入后,Agent 會(huì)通過一系列工具的使用來完成任務(wù)。在每次迭代中,模型都會(huì)根據(jù)當(dāng)前上下文從預(yù)定義的動(dòng)作空間中選擇一個(gè)動(dòng)作。然后,該動(dòng)作在環(huán)境(例如,Manus 的虛擬機(jī)沙箱)中執(zhí)行,以產(chǎn)生一個(gè)觀察結(jié)果。動(dòng)作和觀察結(jié)果被附加到上下文中,形成下一次迭代的輸入。這個(gè)循環(huán)一直持續(xù)到任務(wù)完成。
正如你可以想象的那樣,上下文隨著每一步的進(jìn)行而增長,而輸出 —— 通常是一個(gè)結(jié)構(gòu)化的函數(shù)調(diào)用 —— 則相對(duì)較短。這使得與聊天機(jī)器人相比,Agent 中的預(yù)填充和解碼之間的比例高度傾斜。例如,在 Manus 中,平均輸入與輸出的 token 比例約為 100:1。
幸運(yùn)的是,具有相同前綴的上下文可以利用 KV 緩存,從而大大減少首個(gè)令牌生成時(shí)間 (TTFT) 和推理成本 —— 無論您使用的是自托管模型還是調(diào)用推理 API。而且我們說的不是小幅節(jié)省:例如,使用 Claude Sonnet,緩存的輸入令牌成本為 0.30 美元 / 百萬令牌,而未緩存的令牌成本為 3 美元 / 百萬令牌 —— 相差 10 倍。
從上下文工程的角度來看,提高 KV 緩存命中率涉及以下幾個(gè)關(guān)鍵實(shí)踐:
1. 保持提示前綴的穩(wěn)定。由于 LLMs 的自回歸特性,即使是單個(gè)令牌的差異也會(huì)使從該令牌開始的緩存失效。一個(gè)常見的錯(cuò)誤是在系統(tǒng)提示的開頭包含一個(gè)時(shí)間戳 —— 尤其是精確到秒的時(shí)間戳。當(dāng)然,它可以讓模型告訴你當(dāng)前時(shí)間,但它也會(huì)扼殺你的緩存命中率。
2. 使你的上下文僅追加。避免修改之前的操作或觀察。確保你的序列化是確定性的。許多編程語言和庫不保證在序列化 JSON 對(duì)象時(shí)保持穩(wěn)定的鍵順序,這可能會(huì)悄無聲息地破壞緩存。
3. 在需要時(shí)顯式標(biāo)記緩存斷點(diǎn)。某些模型提供商或推理框架不支持自動(dòng)增量前綴緩存,而是需要手動(dòng)在上下文中插入緩存斷點(diǎn)。在分配這些斷點(diǎn)時(shí),請(qǐng)考慮潛在的緩存過期,并且至少要確保斷點(diǎn)包含系統(tǒng)提示的結(jié)尾。
此外,如果您使用 vLLM 等框架自行托管模型,請(qǐng)確保已啟用前綴 / 提示緩存,并且您正在使用會(huì)話 ID 等技術(shù)來跨分布式工作器一致地路由請(qǐng)求。
屏蔽,不要移除隨著您的 Agent 承擔(dān)更多的能力,其行動(dòng)空間自然會(huì)變得更加復(fù)雜 —— 簡單來說,工具的數(shù)量會(huì)爆炸式增長。最近 MCP 的流行只會(huì)火上澆油。如果您允許用戶配置工具,請(qǐng)相信我:不可避免地會(huì)有人將數(shù)百個(gè)神秘工具插入到您精心策劃的行動(dòng)空間中。因此,模型更有可能選擇錯(cuò)誤的行動(dòng)或采取效率低下的路徑。簡而言之,您全副武裝的 Agent 變得更笨了。
一個(gè)很自然的反應(yīng)是設(shè)計(jì)一個(gè)動(dòng)態(tài)動(dòng)作空間 —— 也許可以使用類似 RAG 的方法按需加載工具。我們?cè)?Manus 中也嘗試過。但我們的實(shí)驗(yàn)表明了一個(gè)明確的規(guī)則:除非絕對(duì)必要,否則避免在迭代過程中動(dòng)態(tài)添加或刪除工具。這主要有兩個(gè)原因:
1. 在大多數(shù) LLMs 中,工具定義在序列化后位于上下文的前面,通常在系統(tǒng)提示之前或之后。因此,任何更改都將使所有后續(xù)操作和觀察的 KV 緩存失效。
2. 當(dāng)之前的操作和觀察仍然引用當(dāng)前上下文中不再定義的工具時(shí),模型會(huì)感到困惑。如果沒有約束解碼,這通常會(huì)導(dǎo)致模式?jīng)_突或幻覺動(dòng)作。
為了解決這個(gè)問題,同時(shí)仍然改進(jìn)動(dòng)作選擇,Manus 使用上下文感知的狀態(tài)機(jī)來管理工具的可用性。它不是刪除工具,而是在解碼期間屏蔽 token logits,以防止(或強(qiáng)制)基于當(dāng)前上下文選擇某些動(dòng)作。
在實(shí)踐中,大多數(shù)模型提供商和推理框架都支持某種形式的響應(yīng)預(yù)填充,這允許您在不修改工具定義的情況下約束動(dòng)作空間。通常有三種函數(shù)調(diào)用模式(我們將使用 NousResearch 的 Hermes 格式作為示例):
自動(dòng) – 模型可以選擇是否調(diào)用函數(shù)。通過僅預(yù)填充回復(fù)前綴來實(shí)現(xiàn):<|im_start|>assistant
必需 – 模型必須調(diào)用一個(gè)函數(shù),但選擇不受約束。通過預(yù)填充到工具調(diào)用令牌來實(shí)現(xiàn):<|im_start|>assistant<tool_call>
指定 – 模型必須從特定子集中調(diào)用一個(gè)函數(shù)。通過預(yù)填充到函數(shù)名稱的開頭來實(shí)現(xiàn):<|im_start|>assistant<tool_call>{"name": “browser_
通過這種方式,我們通過直接屏蔽令牌 logits 來約束動(dòng)作選擇。例如,當(dāng)用戶提供新的輸入時(shí),Manus 必須立即回復(fù),而不是采取行動(dòng)。我們還特意設(shè)計(jì)了具有一致前綴的動(dòng)作名稱 —— 例如,所有與瀏覽器相關(guān)的工具都以 browser_ 開頭,而命令行工具以 shell_ 開頭。這使我們能夠輕松地強(qiáng)制 Agent 僅從給定狀態(tài)下的特定工具組中進(jìn)行選擇,而無需使用有狀態(tài)的 logits 處理器。
這些設(shè)計(jì)有助于確保 Manus Agent 循環(huán)保持穩(wěn)定 —— 即使在模型驅(qū)動(dòng)的架構(gòu)下也是如此。
將文件系統(tǒng)用作上下文現(xiàn)代前沿 LLMs 現(xiàn)在提供 128K 令牌或更多的上下文窗口。但在實(shí)際的 Agent 場景中,這通常是不夠的,有時(shí)甚至是一種負(fù)擔(dān)。有三個(gè)常見的痛點(diǎn):
1.觀察結(jié)果可能非常龐大,尤其是在智能體與非結(jié)構(gòu)化數(shù)據(jù)(如網(wǎng)頁或 PDF)交互時(shí)。很容易超出上下文限制。
2.即使窗口在技術(shù)上支持,模型性能也往往會(huì)隨著上下文長度的增加而下降。
3.即使使用前綴緩存,長輸入也很昂貴。您仍然需要付費(fèi)傳輸和預(yù)填充每個(gè)令牌。
為了解決這個(gè)問題,許多智能體系統(tǒng)都實(shí)現(xiàn)了上下文截?cái)嗷驂嚎s策略。但過度激進(jìn)的壓縮不可避免地會(huì)導(dǎo)致信息丟失。問題是根本性的:智能體本質(zhì)上必須根據(jù)所有先前的狀態(tài)來預(yù)測下一個(gè)動(dòng)作 —— 而且您無法可靠地預(yù)測哪個(gè)觀察結(jié)果可能在十步之后變得至關(guān)重要。從邏輯角度來看,任何不可逆的壓縮都帶有風(fēng)險(xiǎn)。
這就是為什么我們將文件系統(tǒng)視為 Manus 中的終極上下文:大小不受限制,本質(zhì)上是持久的,并且可以直接由 Agent 操作。模型學(xué)習(xí)按需寫入和讀取文件 —— 不僅將文件系統(tǒng)用作存儲(chǔ),還用作結(jié)構(gòu)化的外部化內(nèi)存。
我們的壓縮策略始終被設(shè)計(jì)為可恢復(fù)的。例如,只要保留 URL,網(wǎng)頁的內(nèi)容就可以從上下文中刪除;如果文檔的路徑在沙箱中仍然可用,則可以省略文檔的內(nèi)容。這使得 Manus 能夠在不永久丟失信息的情況下縮短上下文長度。
在開發(fā)此功能時(shí),我發(fā)現(xiàn)自己想象著狀態(tài)空間模型(SSM)如何在 Agent 環(huán)境中有效工作。與 Transformer 不同,SSM 缺乏完全的注意力,并且難以處理長期的向后依賴關(guān)系。但是,如果他們能夠掌握基于文件的內(nèi)存 —— 將長期狀態(tài)外部化而不是將其保存在上下文中 —— 那么它們的速度和效率可能會(huì)開啟一類新的 Agent。Agent SSM 可能是神經(jīng)圖靈機(jī)的真正繼承者。
通過背誦來操縱注意力如果你使用過 Manus,你可能已經(jīng)注意到一些奇怪的現(xiàn)象:在處理復(fù)雜的任務(wù)時(shí),它傾向于創(chuàng)建一個(gè) todo.md 文件,并在任務(wù)進(jìn)行過程中逐步更新它,勾選已完成的項(xiàng)目。
這不僅僅是可愛的行為,而是一種有意的操縱注意力的機(jī)制。
Manus 中的一個(gè)典型任務(wù)平均需要大約 50 個(gè)工具調(diào)用。這是一個(gè)很長的循環(huán) —— 而且由于 Manus 依賴 LLMs 進(jìn)行決策,因此它很容易偏離主題或忘記早期的目標(biāo),尤其是在長上下文或復(fù)雜的任務(wù)中。
通過不斷重寫待辦事項(xiàng)列表,Manus 會(huì)將它的目標(biāo)復(fù)述到上下文的末尾。這會(huì)將全局計(jì)劃推送到模型的近期注意力范圍內(nèi),避免“迷失在中間”的問題,并減少目標(biāo)錯(cuò)位。實(shí)際上,它是在使用自然語言來使其自身的注意力偏向于任務(wù)目標(biāo) —— 而無需特殊的架構(gòu)更改。
保留錯(cuò)誤信息智能體會(huì)犯錯(cuò)。這不是漏洞,而是現(xiàn)實(shí)。語言模型會(huì)產(chǎn)生幻覺,環(huán)境會(huì)返回錯(cuò)誤,外部工具會(huì)運(yùn)行異常,意想不到的極端情況也總是會(huì)出現(xiàn)。在多步驟任務(wù)中,失敗不是例外,而是循環(huán)的一部分。
然而,一種常見的沖動(dòng)是隱藏這些錯(cuò)誤:清理痕跡,重試操作,或者重置模型的狀態(tài),并將其交給神奇的“溫度”。這感覺更安全,更可控。但這是有代價(jià)的:消除失敗會(huì)移除證據(jù)。沒有證據(jù),模型就無法適應(yīng)。
根據(jù)我們的經(jīng)驗(yàn),改進(jìn)智能體行為最有效的方法之一出奇地簡單:將錯(cuò)誤的轉(zhuǎn)彎留在上下文中。當(dāng)模型看到失敗的操作 —— 以及由此產(chǎn)生的觀察或堆棧跟蹤 —— 它會(huì)隱式地更新其內(nèi)部信念。這會(huì)使其先驗(yàn)概率偏離類似的操作,從而減少重復(fù)相同錯(cuò)誤的可能性。事實(shí)上,我們認(rèn)為錯(cuò)誤恢復(fù)是真正智能體行為最清晰的指標(biāo)之一。然而,它在大多數(shù)學(xué)術(shù)工作和公共基準(zhǔn)測試中仍然代表性不足,這些工作和測試通常側(cè)重于理想條件下的任務(wù)成功。
別被速殺了少樣本提示是提高 LLM 輸出的常用技術(shù)。但在 Agent 系統(tǒng)中,它可能會(huì)以微妙的方式適得其反。
語言模型是優(yōu)秀的模仿者;它們模仿上下文中行為的模式。如果你的上下文充滿了相似的過去行動(dòng)-觀察對(duì),模型就會(huì)傾向于遵循該模式,即使它不再是最優(yōu)的。
這在涉及重復(fù)決策或行動(dòng)的任務(wù)中可能很危險(xiǎn)。例如,當(dāng)使用 Manus 幫助審查一批 20 份簡歷時(shí),Agent 通常會(huì)陷入一種節(jié)奏 —— 重復(fù)類似的操作,僅僅是因?yàn)樗谏舷挛闹锌吹搅诉@些操作。這會(huì)導(dǎo)致漂移、過度概括,有時(shí)甚至?xí)霈F(xiàn)幻覺。
解決方法是增加多樣性。Manus 在行動(dòng)和觀察中引入少量結(jié)構(gòu)化的變化 —— 不同的序列化模板、不同的措辭、順序或格式上的細(xì)微噪聲。這種受控的隨機(jī)性有助于打破模式并調(diào)整模型的注意力。換句話說,不要用少量樣本把自己逼入困境。你的上下文越統(tǒng)一,你的 Agent 就越脆弱。
結(jié)論上下文工程仍然是一門新興的科學(xué) —— 但對(duì)于 Agent 系統(tǒng)來說,它已經(jīng)至關(guān)重要。模型可能變得更強(qiáng)大、更快、更便宜,但再多的原始能力也無法取代對(duì)記憶、環(huán)境和反饋的需求。你如何塑造上下文最終決定了你的 Agent 的行為方式:它運(yùn)行的速度、它恢復(fù)的程度以及它的擴(kuò)展程度。
在 Manus,我們通過反復(fù)的重寫、死胡同以及數(shù)百萬用戶的真實(shí)世界測試中吸取了這些教訓(xùn)。我們?cè)谶@里分享的都不是普遍真理 —— 但這些是對(duì)我們有效的模式。如果它們能幫助你避免哪怕一次痛苦的迭代,那么這篇文章就完成了它的使命。
能動(dòng)的未來將通過一個(gè)個(gè)場景構(gòu)建。好好設(shè)計(jì)它們。
本文鏈接:http://www.www897cc.com/showinfo-45-14721-0.html被曝裁員、清空社交賬號(hào)后,Manus 首度發(fā)布技術(shù)博客總結(jié)經(jīng)驗(yàn)教訓(xùn)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 因被 AI 生成的虛假漏洞報(bào)告轟炸,開源網(wǎng)絡(luò)工具 cURL 考慮停止提供安全賞金
下一篇: 2025 中國聯(lián)通合作伙伴大會(huì)舉行,高通侯明娟:AI 正從“看得見”邁向“用得上、用得起”