![]()
這項研究來自騰訊混元團隊(Hunyuan Team),于2026年4月28日以預印本形式發布,論文編號為arXiv:2604.25727v1,歸屬于計算機科學人工智能方向(cs.AI)。有興趣深入了解的讀者可通過該編號在arXiv平臺查閱完整論文。
你有沒有想過,當一個AI助手能在命令行終端里自己敲命令、執行任務、修復問題,這背后需要它學習多少東西?就像一個新入職的程序員,不僅要懂得如何寫代碼,還得知道在什么情況下該用哪個工具、按照什么順序執行操作,才能把一個復雜任務從頭做到尾。騰訊混元團隊正是針對這個問題發布了他們的SkillSynth框架——一套可以自動大規模生成高質量訓練數據的系統,專門用來訓練這類"終端代理"AI。
說到底,訓練AI就像教一個從未出過門的孩子認路。你得帶他走遍各種街道、穿過各種路口,讓他積累足夠豐富的"路徑經驗",他才能在陌生地方獨立找到方向。問題是,一直手把手帶他走既費時又費力,所以研究團隊想出了一個辦法:先畫一張超級詳細的"城市地圖",再從這張地圖上自動規劃出成千上萬條不重復的路線,讓AI在模擬環境里把這些路線都走一遍。這張"城市地圖",就是SkillSynth的核心——技能圖(Skill Graph)。
一、終端代理:一種在命令行里"獨立生活"的AI
要理解為什么SkillSynth值得關注,得先搞清楚"終端代理"是什么。
普通人用電腦,靠的是鼠標點擊圖形界面。而程序員或者系統管理員,很多時候是在一個純文字的"命令行終端"里工作,輸入指令、查看輸出、再根據結果決定下一步。終端代理,就是一種能在這個純文字環境里獨立執行任務的AI系統。它可以幫你自動修復代碼錯誤、管理服務器、分析數據、部署程序,甚至把一個原始視頻文件處理成帶元數據的GIF動圖包——這些操作往往需要連續執行幾十個命令,中途還要根據每一步的結果做判斷和調整。
這種能力非常實用,但訓練出一個好用的終端代理卻極其困難。核心矛盾在于:你需要大量真實的"執行軌跡"來訓練它,也就是說,要有很多"AI在完成某個任務時,一步一步都做了什么"的完整記錄。手動整理這些記錄既昂貴又耗時,所以研究界開始嘗試用合成的方式自動生成這些訓練數據。
然而現有方法存在一個共同盲點:它們主要關注"生成更多任務",卻很少關注這些任務能否讓AI經歷足夠多樣的"場景"和"操作技能"。就像備考一樣,做了一萬道題但全都是同一類型,遠不如做五千道但覆蓋所有題型來得有效。騰訊混元團隊把這個問題用數學語言精確描述出來,并設計了SkillSynth來系統性地解決它。
二、從"路徑經驗"的角度重新理解AI訓練
研究團隊提出了一套非常清晰的概念框架,用來分析AI的訓練數據到底夠不夠用、夠不夠多樣。
他們把AI完成一個任務的過程,分解成兩個交替出現的要素:**場景**(Scenario)和**技能**(Skill)。場景,指的是AI在某個決策時刻所處的環境狀態,比如"工作目錄里有一個原始視頻文件";技能,指的是AI在這個場景下執行的一系列操作,比如"提取視頻基本信息、檢測關鍵幀、生成摘要"。一次完整的任務執行,就是一條由"場景→技能→新場景→技能→更新場景→……"串聯而成的鏈條。
這個框架的價值在于,它讓訓練數據的"多樣性"變得可以量化:如果訓練集里出現的場景種類越多、技能種類越多、場景與技能的搭配組合越豐富,AI就能學到越廣泛的應對能力。反之,如果數據里總是重復相似的場景和技能,AI就算學了很多任務,也只是在同一片區域反復兜圈子。
用訓練數學來理解,研究團隊證明了:AI的學習目標(即最大化對訓練數據中每一步操作的預測準確率)本質上等價于讓AI在盡可能多的"場景—技能"組合上都有學習機會。任何一個場景從未被覆蓋,AI在遇到它時就完全抓瞎;任何一個技能從未在某個場景下出現過,AI就不知道什么時候該用它。這個理論分析直接奠定了SkillSynth設計的邏輯基礎。
三、技能圖:一張連接所有操作經驗的"城市地圖"
有了理論支撐,研究團隊開始構建那張關鍵的"城市地圖"——技能圖(Skill Graph)。
技能圖的原材料來自兩個地方:ClawHub(一個專門收錄AI代理技能的開放平臺)和公開的GitHub代碼倉庫。這些地方存放著大量由真實程序員和開發者積累下來的命令行操作經驗,比如"如何用FFmpeg處理視頻"、"如何自動化部署Docker容器"、"如何批量處理PDF文檔"等等。研究團隊把這些現成的技能收集起來,作為圖的"原料庫"。
但并非所有技能都適合用來訓練代理。團隊對技能做了嚴格篩選:只保留那些能在Linux終端上實際執行的,有結構化操作流程而非僅靠提示詞驅動的,不含惡意或安全風險內容的,以及執行結果可以客觀驗證的技能。經過篩選,最終保留了57,214個技能。
接下來是技能圖構建最關鍵的步驟:為每個技能推斷它的"前置場景"和"后置場景"。前置場景,就是這個技能適合在什么狀態下執行,比如"工作空間里有一個待處理的原始視頻文件";后置場景,就是技能執行完之后系統處于什么狀態,比如"視頻元數據已提取,關鍵幀已標注,形成了活躍的視頻處理會話"。研究團隊用大語言模型(LLM)自動讀取每個技能的完整說明文檔,推斷出這兩種場景。
推斷出來的場景數量極其龐大,而且同樣的狀態往往用不同的措辭表達了出來。為此,團隊采用了一套兩階段的語義去重方案。第一階段,先把所有場景描述轉成向量表示(一種數字化的語義編碼),然后用社區檢測算法(Louvain算法)把相似的場景粗略歸堆。第二階段,在每個粗略堆內部,用完全鏈接聚合聚類方法做精細合并——這種方法的好處是非常嚴格,只有堆內每一對場景都足夠相似,才會被合并成一個,防止把意思相近但實際不同(比如"任務完成前"和"任務完成后")的場景錯誤地合并在一起。
去重之后,還需要把不同技能的后置場景和其他技能的前置場景連接起來,這樣才能形成鏈條。團隊對每個后置場景,檢索最相似的1000個前置場景,再用LLM判斷它們是否在語義上真正兼容,從兩個方向都做了這種比對,以確保連接的質量。最終,經過合并和過濾,形成了包含82,073個場景節點、57,214個技能邊和185,529條經過LLM驗證的跨技能連接的技能圖。
這張圖的結構相當有意思。絕大多數場景(85.6%)都屬于同一個超大型連通子圖,這意味著大多數技能可以通過中間場景彼此銜接。與此同時,還有6,251個較小的獨立連通分量,代表一些專門化的、自成一體的工作流程,比如物聯網設備操作或3D仿真處理等冷門領域。從這張圖里,可以枚舉出超過1663萬條長度達到7個技能以上的路徑,意味著任務合成空間極其廣闊。
四、從地圖到路線:如何采樣出不重復的工作流路徑
有了技能圖,下一步是從中采樣出各種各樣的路徑,每條路徑代表一種真實的工作流程。
一條路徑的形式是"場景?→技能?→場景?→技能?→……→技能L→場景L",長度從1個技能到7個技能不等。研究團隊發現,如果直接在圖上隨機游走,結果會非常不均勻——那些位于圖中心、連接很多其他場景的"樞紐節點"會被反復經過,就像城市地圖里的市中心廣場,每條路線都要經過,導致生成的路徑里總是有很多重疊部分,多樣性大打折扣。
為了解決這個問題,團隊設計了一種"反頻率加權采樣"策略。每個場景和每個技能都有一個被使用次數的計數器,從零開始。在采樣時,被使用次數越少的場景和技能,被選中的概率越高。隨著采樣過程推進,已經被頻繁選用的節點會自動"讓路"給那些還沒怎么被用過的節點,整體分布逐漸趨向均勻覆蓋。
除此之外,為了確保每條路徑的邏輯連貫性,采樣算法還加入了一條"單調推進"規則:在同一條路徑內,已經經過的場景和技能不能重復出現,避免路徑在圖里兜圈子。如果走到某個節點發現沒有符合條件的下一步,就終止這條路徑的生成。最終,只有長度在合法范圍內、且技能組合從未出現過的路徑才會被保留,同時更新計數器,讓后續采樣繼續往未覆蓋的區域傾斜。
五、從路徑到任務:多智能體自動生成可執行練習題
采樣出路徑之后,還需要把這些抽象的工作流路徑變成AI可以實際練習的具體任務。這個過程由一套多智能體流水線(Multi-Agent Harness)完成。
最終生成的每個任務實例包含五個部分:一份用自然語言寫的任務說明文檔(告訴AI要完成什么)、一個初始文件系統狀態(任務開始時工作目錄里有什么文件)、一個Docker容器化的執行環境(提供隔離的運行空間)、一套驗證腳本(用來檢測AI是否真的完成了任務),以及一份參考解答。
研究團隊發現,直接讓一個LLM把所有內容一次性生成出來,質量很差——生成內容太長會導致細節錯亂,而且LLM容易糾結于實現細節,生成的任務缺乏層次感和挑戰性。于是他們把生成過程分成了兩個角色:一個"規劃者"(Planner)先根據路徑設計出任務的整體結構、子目標和預期輸出;然后一個"構建者"(Constructor)拿著這份規劃,用工具調用的方式(創建文件、修改文件、刪除文件等)一步步把任務的所有組件實際造出來。
造好之后,任務還要經過雙重驗證。執行層面的驗證是把參考解答放進Docker容器里實際跑一遍,看驗證腳本能不能通過——通過了,就證明這個任務是真正可解的,不是一道無解的題。質量層面的驗證則是用LLM作為評判者,檢查任務說明和驗證腳本之間是否對齊(測試既不能比說明要求的更寬松,也不能比說明要求的更苛刻),并且確認任務說明本身沒有偷偷泄露答案的提示。
如果有任何一項檢驗沒過,診斷反饋會被返回給構建者,進入修復循環。最多允許修復3輪,每輪最多調用20次工具。修復仍然失敗的任務會被丟棄,或者用更高的隨機性重新生成。
在一次完整的自動化運行中,SkillSynth從3,721條采樣路徑出發,最終成功生成了3,560個通過雙重驗證的可用任務實例,整體通過率達到95.7%,其中92.0%同時通過了執行驗證和質量驗證。在修復循環中,共有721個初次失敗的任務被成功救回。整套流程平均每個驗證通過的任務實例花費27.3美元,算是相當經濟的成本。
六、生成的任務有多難?主流AI模型怎么表現?
研究團隊用Hy3 Preview(騰訊自己的AI模型)對3,560個任務各嘗試3次,根據成功次數把任務分成了四個難度檔位。結果顯示,只有25%的任務被每次都順利完成(3/3),19%的任務只有2次成功,18%的任務只有1次成功,而高達38%的任務三次都失敗了。這意味著超過三分之一的合成任務,連目前最先進的騰訊內部模型也無法穩定解決,說明這套數據集具有相當的挑戰性,有足夠的空間推動AI能力持續提升。
在訓練實驗中,研究團隊用MiniMax M2.7作為"教師模型",對每個任務采樣3條軌跡,包括成功和失敗的軌跡都保留下來(失敗軌跡中也包含有價值的錯誤診斷和恢復策略信息),總共收集了10,680條訓練軌跡。然后用這批數據分別對Qwen3-8B、Qwen3-14B、Qwen3-32B三個規模的模型做監督微調,并在Terminal-Bench 1.0(80道題)和Terminal-Bench 2.0(89道題,更難)上評估。
訓練結果表明,三個規模的模型都有明顯提升,且提升幅度隨模型規模增大而增大。其中,經過SkillSynth數據訓練的Qwen3-32B,在Terminal-Bench 2.0上取得了29.6分,超過了參數量是其15倍的Qwen3 Coder 480B(23.9分)。這個結果說明,數據的針對性和多樣性有時候比模型本身的大小更重要。
七、與其他方法相比,SkillSynth的優勢在哪里?
為了驗證技能圖這個設計的價值,研究團隊做了對照實驗,比較三種不同的任務合成方式,但其他條件(多智能體生成流水線、數據量等)保持一致。
第一種對照是"單技能模式":直接隨機抽取單個技能,以此為種子生成單步任務,生成了3,721個任務。第二種對照是"隨機多技能模式":隨機把2到7個技能拼湊在一起,生成多步任務,同樣3,721個。SkillSynth是第三種,用技能圖上采樣出的有結構的路徑來生成任務。
難度分布的差異非常明顯。單技能模式生成的任務有27%能被三次全部解決(3/3),屬于偏簡單;隨機多技能模式的全解率是28%,但因為隨機拼湊的技能缺乏內在邏輯關系,生成的任務往往被多智能體流水線簡化成了"看起來復雜但實際執行步驟很少"的形式,實際上并不夠挑戰性。SkillSynth的全解率降到了25%,而完全不可解的比例(0/3)從單技能的16%上升到了38%,說明圖結構帶來的工作流連貫性讓任務真正變難了。
在實際訓練效果上,用SkillSynth數據訓練的Qwen3-32B在Terminal-Bench 1.0上比單技能方法高了8.4分,比隨機多技能方法高了3.0分;在Terminal-Bench 2.0上分別高出8.3分和3.8分。這一連串數字印證了那個核心判斷:訓練數據的多樣性,是提升終端代理能力的關鍵杠桿。
從執行軌跡的多樣性來看,SkillSynth方案采集到的軌跡中,獨特場景—技能組合的數量比單技能方案高31%,比隨機多技能方案高19%,驗證了技能圖導向的合成方式確實在軌跡覆蓋上有系統性優勢。
八、失敗時AI都犯了哪些錯誤?
研究團隊不只關注成功的軌跡,也深入分析了失敗的軌跡,試圖理解AI當前最薄弱的地方在哪里。
三位研究者各自獨立分析了20條失敗軌跡,然后把分析經驗提煉成了一套評估標準,交給另一個LLM自動標注所有失敗軌跡的錯誤類型。結果揭示了幾類典型錯誤模式。
最常見的是"局部實現"問題,占42.2%:AI生成了自己的測試腳本,跑一跑發現測試通過了,就宣布任務完成——但實際上它默默跳過了原始任務說明里的一部分要求,自己寫的測試本來就沒有覆蓋那些被跳過的部分。第二常見的是"過度依賴自寫驗證",占29.5%:AI不運行官方提供的驗證腳本,而是用自己寫的幾行簡單測試語句來確認結果,結果只驗證了最理想情況,邊界情況全部漏掉了。此外還有12.9%的"提前退出":AI寫完代碼后直接結束,完全沒有運行任何形式的驗證。另有7%是"幻覺調用":AI反復調用根本不存在的模塊或參數,觸發報錯超過3次卻不換思路。5.1%是"調試死循環":對同一個命令重復執行超過10次,只做微小改動,始終不嘗試換其他策略,最終耗盡時間預算。最后3.3%是"錯誤合理化":AI看到測試失敗,卻自我說服認為那是"預先存在的問題"或"不穩定的測試",繼續提交任務。
這些失敗模式指向一個共同問題:AI容易用自我敘述式的驗證來代替真正的基準測試,然后對自己的答案過于自信。這提示未來的研究需要在訓練中加入更多對任務說明的嚴格遵從和更靈活的探索策略方面的引導。
九、技能圖的規模和覆蓋范圍
從領域分布來看,這張技能圖覆蓋了相當廣泛的應用場景。最高頻的領域包括編程與IDE操作、通用自動化工具、文檔與PDF處理、測試與質量保障、DevOps與云基礎設施等。同時,一些冷門但真實存在的領域也得到了覆蓋,包括音頻與語音處理、游戲與3D仿真、法律與行政治理、物聯網與硬件機器人、健康與生活方式管理等,共26個主要類別。
圖的連接結構呈現出典型的重尾分布:大多數場景節點只有很少的連接(中位數為2),少數樞紐場景卻連接了多達752條技能邊,這些樞紐對應的是那些幾乎在任何工作流中都可能出現的通用狀態,比如"文件系統中有數據文件待處理"這樣的場景。這種結構正是研究團隊設計反頻率采樣策略的動機之一,目的就是防止采樣過度集中在這些樞紐上而忽視長尾節點。
歸根結底,SkillSynth做的事情可以用一句話概括:通過系統地描繪AI需要走過的"技能地圖",然后從中規劃出覆蓋盡可能多角落的路線集合,讓訓練數據的覆蓋范圍從根本上得到改善,而不只是靠堆數量湊數。研究結果清楚地顯示,在訓練終端代理這件事上,數據的多樣性比數據的體量更能決定最終效果,一個經過精心設計路線的數據集,可以讓一個相對小的模型超越參數量遠超它的更大模型。
這項研究成果不只停留在論文里,SkillSynth生成的任務實例已經被實際用于訓練騰訊Hy3 Preview模型,并為其帶來了可測量的終端代理能力提升。隨著ClawHub等技能庫持續擴充,技能圖本身也會隨之擴大,意味著這套框架未來可以持續生成覆蓋更多新興工作流的訓練數據,使AI代理的能力跟上真實世界技術演進的步伐。
有興趣深入研究細節的讀者,可以通過arXiv:2604.25727查閱完整論文。
Q&A
Q1:SkillSynth技能圖里的"場景"和"技能"具體指什么?
A:技能圖中的"場景"指AI在執行任務過程中某個決策時刻的環境狀態描述,比如"工作目錄里有一個原始視頻文件";"技能"指AI在該狀態下執行的一套完整操作流程,比如"讀取視頻元數據并提取關鍵幀"。技能圖以場景為節點、技能為有向邊連接而成,一條路徑就代表一種從初始狀態出發、經過多個技能依次轉變的完整工作流程。整個圖目前包含82,073個場景節點和57,214個技能邊。
Q2:SkillSynth生成的任務里,驗證"任務是否可解"是怎么做到的?
A:每個任務實例生成后,SkillSynth會在Docker容器里運行附帶的參考解答腳本,再用驗證腳本檢查結果是否符合要求。通過了就說明任務有真實可行的解法;沒通過的任務會收到診斷反饋,返回給構建者做修復,最多修復3輪。此外還會用LLM評判任務說明與測試腳本是否對齊,避免測試過寬或過嚴,防止產生錯誤的訓練信號。
Q3:用SkillSynth數據訓練的小模型為何能超過更大的模型?
A:規模更大的Qwen3 Coder 480B在Terminal-Bench 2.0上得了23.9分,而只有其約十五分之一參數量的Qwen3-32B經過SkillSynth數據訓練后得了29.6分,核心原因在于訓練數據的覆蓋多樣性。SkillSynth通過技能圖路徑采樣,確保訓練軌跡覆蓋了盡可能多的場景—技能組合,讓模型在各種中間狀態下都學過對應的操作方式,而非只在重復的場景里反復練習,使單位數據的訓練效率大幅提升。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.