這項由英國曼徹斯特大學、MAP團隊、香港科技大學(廣州)、香港科技大學以及北京航空航天大學聯合開展的研究,以預印本形式於2026年4月21日發布在arXiv平台,編號為arXiv:2604.19572。感興趣的讀者可通過該編號在arXiv上查閱完整原文。
一、AI程序員正在被"資訊垃圾"淹沒
回想一下你家裡的記事本。如果每次外出購物,你都把超市里貨架上所有商品的價格、包裝顏色、擺放位置全都記下來,而不只是記下你買了什麼、花了多少錢,那這本記事本很快就會被無用資訊填滿。當你下次想查某件事的時候,你需要翻過成百上千頁的廢話,才能找到那一行真正有用的字。
AI程序員——也就是所謂的"終端智能體"——正在經歷這種煎熬。這類AI的工作方式是在電腦終端里一步一步執行命令:先運行一個指令,看看返回了什麼資訊,再根據這些資訊決定下一步怎麼做。聽起來很合理,但問題在於,終端返回的內容往往雜亂無比。安裝一個軟體包時,螢幕上會刷出幾百行"正在解壓縮……正在設置……正在配置……";編譯一段代碼時,會出現大量重複的編譯日誌;克隆一個代碼倉庫時,進度條資訊反覆滾動。這些內容占據了AI的"記憶空間",卻幾乎不含任何真正有用的判斷依據。
更要命的是,AI在做每一步決策時,都需要把之前所有步驟的資訊一併"翻出來看"。這意味著隨著任務步驟增加,需要處理的資訊量會以平方級別增長——走了10步,資訊量可能已經是走5步時的4倍。這不僅讓計算成本急劇攀升,更讓AI在一大堆廢話里迷失方向,忘了自己最初要做什麼。
曼徹斯特大學的研究團隊決定正面解決這個問題。他們提出了一套叫做TACO(Terminal Agent Compression framework,終端智能體壓縮框架)的系統。這套系統的核心思想是:與其讓AI硬撐著看完所有廢話,不如教它學會自動識別哪些資訊是垃圾,哪些是寶貝,然後把垃圾扔掉、把寶貝留下。更聰明的地方在於,這套"識別技巧"會隨著AI完成的任務越來越多而不斷自我完善——就像一個新員工,剛來時需要學習怎麼整理文件,用得越久,整理技巧就越純熟。
二、從"死記硬背"到"學以致用":以往方案為何行不通
在TACO出現之前,研究者們並非沒有意識到這個資訊過載的問題。已有的應對方案大致分成幾類,但都存在明顯局限。
最簡單粗暴的方式是"截斷":超過一定長度就直接砍掉後面的內容,就好比你的記事本寫滿了就直接撕掉後半本。這個方法有時會把最關鍵的錯誤資訊截掉,讓AI根本不知道自己到底哪裡出了問題。
稍微聰明一點的方式是"手工規則":由人類專家提前寫好一套規則,告訴AI遇到什麼樣的輸出內容可以忽略。比如"遇到`apt-get install`的輸出時,只保留錯誤資訊和最後的安裝結果"。這種方法在特定場景下確實有效,但問題是終端任務的種類實在太多——今天在整理Python代碼倉庫,明天在編譯Rust程序,後天在調試資料庫配置,每種任務的輸出格式完全不同。用有限的手工規則去覆蓋無限多樣的場景,就像試圖用一把萬能鑰匙打開世界上所有的鎖,註定徒勞。
還有一種方法是讓另一個AI負責"總結":讀完所有輸出之後,讓AI幫你寫一個摘要。但研究團隊做了實驗,發現這種通用總結方式在任務表現上反而比什麼都不做還要差(如原論文圖1所示,"LLM Summarize"方法的準確率為20.3%,低於基線的23.9%)。通用總結太容易把關鍵細節抹去,或者把無關資訊也捎帶進去。
最後還有一種基於訓練的方法,代表是一個叫SWE-Pruner的系統。它通過專門訓練讓AI學會剪枝,確實更靈活,但代價是需要額外的訓練過程,而且主要針對特定類型的軟體工程任務,換個場景就可能水土不服。
TACO的思路與這些方案都不同。它既不靠人工制定規則,也不靠額外訓練,而是讓系統在完成實際任務的過程中自動積累經驗、自動總結規律、自動不斷改進。這種"邊干邊學"的機制才是它的核心競爭力。
三、TACO的工作方式:一套會自我進化的"過濾系統"
可以把TACO理解成一個附著在AI程序員身上的智能秘書。每當AI執行完一條終端命令,收到大量輸出時,這位秘書不會把所有內容都原封不動地遞給AI,而是先過一遍,把無用的廢話過濾掉,再把真正有價值的資訊呈上。而這位秘書的工作手冊——也就是"過濾規則"——並不是一成不變的,它會隨著工作經驗增加不斷更新和完善。
TACO的運作分成三個層次,就像一個三層的知識管理體系。
最底層是"全局規則池"(Global Rule Pool)。這可以理解為整個系統積累的所有知識的總倉庫。倉庫里存放著一條條"規則",每條規則描述的是:遇到什麼樣的命令(觸發條件),哪些內容要保留(關鍵資訊特徵),哪些內容可以刪除(冗餘資訊特徵),以及保留前幾行和後幾行。每條規則還配有一個"可信度評分",記錄這條規則在過去的任務中表現有多好。新生成的規則初始可信度設為滿分,如果之後被證明會誤刪關鍵資訊,可信度就會下降。
系統一開始並非空白狀態,研究團隊預先放入了6條基礎規則,涵蓋幾種最常見的場景:`git`克隆時的進度條噪聲、`pip install`的安裝過程刷屏、`apt-get`的解壓配置流水賬、編譯器輸出的超長命令行、heredoc寫文件時的回顯資訊,以及OpenSSL生成密鑰時的點號進度條。這6條規則就像新員工入職時培訓手冊里最基本的工作常識,保證系統在還沒積累任何實際經驗時也能發揮一定作用。
第二層是"任務級規則集"(Task-level Rule Set)。每當要開始一個新任務時,系統不會直接把全局規則池裡所有規則都用上——規則太多反而會帶來混亂。它會根據規則的可信度和歷史使用頻次(兩者相乘得到一個排名分數),從全局規則池裡挑出排名最靠前的30條候選規則,再讓AI根據當前任務的具體描述,從這30條里進一步篩選和調整,最終組成這個任務專用的規則集。這就好比一位經驗豐富的廚師面對一道新菜,不會把廚房裡所有調料都往鍋里放,而是根據這道菜的特點,挑選最合適的幾種調味料。
第三層是"任務內實時更新"(Intra-Task Rule Set Evolution)。任務執行過程中,規則集並不是固定不變的。當遇到某條命令的輸出,現有規則都覆蓋不到時,系統會把這段輸出的開頭和結尾告知AI,讓AI即興創作一條新規則,加入當前任務的規則集。而當AI程序員在處理壓縮後的資訊時,表現出明顯的迷惑跡象——比如請求重新獲取完整輸出、重複執行同一條命令——系統就會把這個信號解讀為"剛才那條規則壓縮得太狠了,把有用的東西也刪掉了",進而讓AI生成一條更保守的替代規則,專門用來取代那條"過度熱情"的規則。
此外,TACO有一個"永不壓縮"的底線:凡是輸出內容里含有明顯錯誤信號的(比如語法報錯、異常堆棧),一律原封不動地傳給AI,不做任何處理。錯誤資訊往往是AI判斷下一步該怎麼走的最關鍵依據,絕不能有任何損失。
任務結束後,系統會把本次任務中表現良好的規則(成功應用至少一次且最終可信度達到門檻)寫回全局規則池,供下一個任務使用。而那些被判定為"壓縮過頭"的規則,則會被從全局規則池中直接刪除,避免"劣幣驅逐良幣"。每條規則的全局排名分數計算方式很直觀:可信度乘以(歷史成功使用次數加一)。一條可信度高、使用頻繁的規則自然排名靠前;一條剛被創建、還沒經過考驗的規則則排名靠後,等待實戰檢驗。
四、如何判斷系統已經"學到位了"?收斂機制的設計
TACO是一個會持續進化的系統,但"持續進化"也帶來一個問題:什麼時候應該停下來?一直進化下去,最終會不會陷入永無止境的調整循環?
研究團隊為此設計了一套叫做"留存率"(Retention)的收斂指標。具體來說,系統會在每輪跑完所有任務後,看看全局規則池裡排名前30的規則發生了多大變化。如果這一輪結束後,還有90%以上的規則和上一輪相同,那就說明規則體系已經趨於穩定——該學的基本都學會了,繼續跑下去收益遞減,可以停止了。
研究團隊在實驗中用真實的任務準確率變化來驗證這個指標是否靠譜。他們發現,在留存率還沒超過90%閾值的早期階段,準確率的波動幅度通常超過2個百分點;而一旦留存率穩定超過閾值,準確率的波動立刻明顯收窄,穩定在1個百分點左右。這意味著這個指標確實抓住了系統真實的學習狀態——規則穩定了,性能也就穩定了。
五、實驗結果:提升有多明顯,省了多少"腦力"
研究團隊在多個專門為AI終端任務設計的測試平台上進行了系統驗證,主要包括TerminalBench(分1.0和2.0兩個版本,專門測試AI在真實命令行環境中完成複雜任務的能力)以及SWE-Bench Lite(測試AI修復真實GitHub代碼問題的能力)、CompileBench(測試編譯任務)、DevEval(代碼生成能力)和CRUST-Bench(C語言轉安全Rust語言的移植任務)。測試使用了多款主流大型語言模型,既有開源的DeepSeek-V3.2、MiniMax-M2.5、Qwen3系列,也有商業閉源模型的對比參考。
以最核心的TerminalBench測試為例,接入TACO後的改善效果相當穩定。以230億參數的MiniMax-M2.5為例,在TB1.0上從42.30%漲到45.25%,在TB2.0上從42.80%漲到44.16%。685億參數的DeepSeek-V3.2在TB1.0上從43.93%漲到46.25%,在TB2.0上從40.62%漲到42.77%。480億參數的Qwen3-Coder-480B在TB2.0上從23.90%漲到25.86%。規模較小的Qwen3-32B更是在TB2.0上從3.92%大幅跳升至7.48%,漲幅接近翻倍。絕對值提升範圍在0.36到6.02個百分點之間,覆蓋所有測試模型,沒有例外。
在成本方面,對於參數量超過2000億的大模型,TACO讓每一步的平均輸入詞元量減少了約10%,而完成任務所需的步驟數基本沒有變化。換句話說,任務照樣完成得一樣好,但每一步消耗的"算力"少了一成。這在實際工程部署中意味著可觀的經濟節省。
有一個有趣的現象值得特別關註:對於參數量較小的模型(比如Qwen3-32B),接入TACO後反而會增加總詞元消耗。原因在於,這些小模型在沒有壓縮幫助時,往往在任務進行到一半就因為"上下文資訊太亂"而提前放棄,只走了十幾步就宣告失敗;有了TACO的清晰資訊輸入,它們能夠堅持走完更多步驟,最終成功率大幅提升。步驟多了,總成本自然也上去了——但換來的是更高的成功率,這筆賬怎麼算都是值得的。
研究團隊還做了一個更嚴苛的公平性測試:給所有方法設定完全相同的詞元預算,看誰能在預算內做得更好。在所有六款測試模型上,無論預算設定為1400萬詞元還是1.2億詞元,TACO的曲線始終高於不使用TACO的基線。這說明TACO的優勢並非來自"多花錢",而是真實地提升了資訊利用效率。
在其他四個測試平台上,TACO同樣保持了一致的正向表現。SWE-Bench Lite從56.30%升至57.12%,同時總詞元消耗從3.076億降至2.705億;DevEval從38.10%升至39.74%,總詞元從3672萬降至2682萬;CRUST-Bench從47.00%升至48.05%,總詞元從1.635億降至1.350億。CompileBench的準確率保持75.00%不變,但詞元消耗從1455萬降至1141萬。這種在保持或提升準確率的同時降低詞元消耗的表現,證明TACO的價值不局限於特定任務類型。
六、深挖案例:一個AI如何在101步任務中靠一條規則省下三萬字的垃圾資訊
原論文提供了三個具體任務的詳細分析,像一組顯微鏡下的標本,讓TACO的工作機制變得肉眼可見。
第一個案例是`adaptive-rejection-sampler`任務,要求AI在R語言環境中實現並驗證一種統計採樣算法。整個任務25個步驟里,只有4步觸發了壓縮,但這4步的壓縮效果驚人。其中最誇張的一步是安裝R語言運行環境:`apt-get install -y r-base`這條命令會觸發200多個依賴包的解壓安裝,終端輸出了一萬多個字符——全是"正在解壓libXXX……""正在設置libXXX……"這樣的流水線刷屏。這些內容對AI來說沒有任何判斷價值,AI需要知道的只是:安裝成功了沒有,有沒有報錯?
TACO的規則執行後,把這一萬多字符壓縮成了73個字符:"[等待中] apt-get install -y r-base,當前狀態:正在設置x11-utils"。壓縮比達到了0.007,也就是說只保留了原始內容的0.7%。這73個字符告訴AI:"安裝還在進行,暫時沒有報錯",這正是AI此時需要知道的全部資訊。
第二個案例是`sqlite-with-gcov`任務,需要把SQLite資料庫的編譯系統配置為帶代碼覆蓋率檢測的版本。一條`make`命令產生了6519字符的輸出,裡面包含了100多個源文件被複製到臨時目錄的記錄——這些`cp`命令對AI來說完全是噪聲。TACO的規則把這部分刪掉,但完整保留了最後那條關鍵的編譯命令,裡面有`-fprofile-arcs -ftest-coverage`參數,這兩個參數正是確認覆蓋率檢測已正確啟用的證據。如果用簡單截斷的方式處理,很可能會從末尾砍掉這條最關鍵的資訊;TACO的語義過濾則能精確識別這行的重要性,確保它不會被誤刪。
第三個案例是`vulnerable-secret`任務,要求AI對一個二進制程序進行逆向工程,找出隱藏的秘密資訊。這個任務長達101個步驟,AI多次調用`objdump`命令反匯編二進制文件,每次都產生大量十六進制匯編代碼輸出。在任務的第9步,第一次出現`objdump`輸出時,當時的規則集裡沒有任何覆蓋這種情況的規則。TACO立刻觸發"實時新增規則"機制,讓AI生成了一條`objdump_disassembly_rule`:保留函數調用指令(因為它們揭示了程序調用了哪些系統函數,比如`signal`和`ptrace`,這些是反調試邏輯的關鍵線索),保留有符號標籤的跳轉目標,刪除大量重複的純十六進制字節行。
這條規則在此後的任務中被觸發了18次,共節省了29464個字符——占這個任務全部壓縮量的99.4%。整個101步任務的總輸入詞元量高達240萬,這條臨時創建的規則避免了大量低價值的匯編代碼占據AI的寶貴注意力,讓AI得以保持清晰的邏輯鏈條,最終成功找到隱藏資訊。
七、分層控制參數:批量大小與候選規則數如何影響最終效果
TACO有兩個關鍵參數需要在部署時調節,研究團隊通過實驗摸清了兩者的最優取值邏輯。
第一個參數是每次從全局規則池裡取出多少候選規則(Top-k)供任務初始化使用。取得太少,可能漏掉某些有用的歷史規則,新任務就得從頭摸索;取得太多,規則太龐雜,AI做選擇時反而容易選錯,而且選擇過程本身也要消耗詞元。實驗發現,k=30是最佳平衡點:在這個值附近準確率最高,繼續增大k之後準確率不升反降,選擇成本卻持續攀升。
第二個參數是並行處理的任務批次大小(N)。由於系統在任務之間共享規則,理論上後處理的任務能受益於前面任務積累的新規則。批次越小,意味著每完成一批任務就能更新一次規則池,新規則傳播得更快,最終效果也更好。但批次越小,並行度越低,整體運行速度越慢。研究團隊選擇N=4作為標準設置,在這個參數下完成一輪完整的自我進化大約需要4天——對於一個不需要額外訓練、純靠運行積累經驗的框架來說,這個時間代價是可以接受的。
八、拆解實驗:哪部分功能貢獻了多少價值
為了搞清楚TACO的哪些設計元素是真正有用的,研究團隊做了拆分實驗,分別去掉"任務內實時更新"和"全局規則池進化"兩個組件,看各自對最終效果的影響。
去掉全局規則池進化組件,只在任務內部做規則調整但不積累跨任務經驗的情況下,準確率從基線的40.6%降到了40.4%,幾乎沒有改善。這說明單純靠單個任務內部的臨時規則是遠遠不夠的——一個任務的經驗太片面,規則質量有限。
去掉任務內實時更新組件,只用全局規則池裡的靜態規則而不在執行中動態調整的情況下,準確率更是從40.6%跌到38.9%,反而低於基線。這個結果值得深思:固定規則不僅沒有幫助,反而起了負面作用。原因在於,當一條全局規則遇到與它所預設場景不完全匹配的輸出時,可能會誤刪關鍵資訊,而如果缺少實時調整機制,這種錯誤就無法被糾正。
只有同時擁有兩個組件的完整TACO,才能把準確率提升到42.7%,比基線高出2.1個百分點,同時詞元消耗降低12.2%。兩個組件相輔相成:全局池保證了跨任務知識的積累與傳播,實時更新保證了在當前任務里的靈活糾偏,缺一不可。
說到底,TACO解決的問題很樸素:讓AI不要被資訊垃圾淹沒,幫它把注意力集中在真正重要的事情上。這個思路並不神秘,但把它做成一個無需額外訓練、適應能力強、能持續自我改進的系統,需要在設計上做不少精妙的工程權衡。
研究團隊用實實在在的數字證明了這套系統的價值:無論是幾十億參數的小模型還是幾百億參數的大模型,無論是軟體工程、編譯任務還是逆向工程,TACO都能給出一致的正向改善。這項研究給整個AI終端智能體領域提供了一個新的思路:與其一味擴大上下文窗口、讓AI硬撐著處理越來越多的資訊,不如先把資訊質量提上來,讓每一個詞元都物有所值。
當然,TACO目前也有值得繼續探索的空間。比如,規則的質量依賴於AI本身的語言理解能力,用能力較弱的小模型來生成規則時,效果也會打折扣。再比如,一輪完整進化需要4天,在需要快速部署的場景下是否有加速方案,也是後續值得研究的方向。有興趣深入了解這套系統完整細節的讀者,可以通過arXiv編號2604.19572找到原始論文。
Q&A
Q1:TACO框架和普通的"把AI的輸出截斷一半"有什麼本質區別?
A:截斷是不管內容重不重要、一刀切掉後面的部分,很容易把關鍵錯誤資訊或最終結果砍掉。TACO則是"語義過濾"——它通過規則識別哪些行是真正的噪聲(比如"正在解壓libXXX"),哪些行必須保留(比如報錯資訊、最終編譯命令),只刪噪聲不動要害。而且這些規則是從實際任務經驗里自動學來的,會隨任務類型不同而調整,而不是一套固定邏輯。
Q2:TACO需要重新訓練AI模型才能用嗎?
A:完全不需要。TACO是一個"插件式"的外掛框架,它不修改AI模型本身的參數,而是在AI收到終端輸出之前先過濾一遍,再把過濾後的內容傳給AI。任何現有的終端智能體系統都可以直接接入TACO,就像給手機加了一個垃圾簡訊過濾App,不需要換手機,也不需要重新刷機。
Q3:TACO的壓縮規則會不會把有用的資訊也誤刪掉,導致AI出錯?
A:這是系統設計重點防範的問題。TACO有兩道保險:第一,含有明確錯誤信號的輸出(語法錯誤、異常堆棧等)永遠不會被壓縮;第二,當AI表現出迷惑行為(比如重複執行同一命令),系統會識別為"壓縮過度"的信號,自動生成更保守的替代規則,並且把原來那條"過激"的規則從全局規則池裡刪除,避免後續任務再次受害。從實驗數據來看,完整TACO比不帶任務內實時更新的靜態規則版本準確率高了約3.8個百分點,印證了這套糾錯機制的必要性。






