你有沒有想過一個問題:一個在直播間裡實時回復觀眾提問的數字人主播,它背後的AI大腦,到底是應該聰明一點,還是應該反應快一點?
這聽起來像個送命題。因為現實里這兩個要求幾乎不可能同時滿足。
聰明的模型,比如現在最強的那批大模型,理解能力強,給它一份新的商品話術、新的營銷規則,它掃一眼就能上手。但問題是它太慢了。據TaoLive團隊的實測,DeepSeek-V4-flash這種級別的模型,端到端延遲中位數超過11秒。直播間裡,觀眾發一條彈幕問價格,等回復等了11秒,這條彈幕早就被刷下去了,互動感蕩然無存。
那就換個反應快的模型吧。確實,輕量級模型延遲能壓到幾秒鐘。但輕量模型有個致命毛病:它得靠在固定場景上專門訓練才能達到能用的準確率,而一旦訓練好了,它就死死記住了這一套配置。運營團隊想加一個新話術、改一個工具名字、調一條營銷規則,模型立刻就懵了,因為它記住的是這些東西"長什麼樣子",而不是"這些東西是幹什麼用的"。
這就是淘寶直播數字人項目組遇到的真實困境。他們管這套可以獨立於模型權重去調整的運行時系統叫Harness
Harness(挽具、支架):這裡指把技能庫、工具註冊表、系統提示詞、校驗鉤子這四類可以單獨修改的模組打包在一起的運行時框架,模型權重保持不動,業務規則可以像換零件一樣單獨更新。
運營團隊每周都要在這套Harness
里加新技能、改工具接口、調提示詞模板,模型卻是幾個月才訓一次。這個時間差,就是這篇技術報告要解決的核心矛盾。
一、問題到底卡在哪裡
先說清楚這套系統長什麼樣。數字人主播的每一次回復,背後其實是一個完整的處理流程:觀眾的彈幕和直播間實時狀態先被輸入進來,經過一個基於大模型的交互智能體處理,生成文本回復,再交給語音合成和數字人生成模組,最後同步播放給全直播間的觀眾看。
這個交互智能體內部,運行著四個獨立可更新的模組。
技能(Skill):一份帶著回復規則和示例的Markdown文檔,規定了模型在某類場景下該怎麼答。比如"商品問答"技能規定要先說清楚鏈接編號再報價格。
工具註冊表(Tool Registry):模型能調用的外部功能清單,比如查價格、查庫存、查優惠券。
系統提示詞(System Prompt):動態拼裝出來的指令集合,把商品資訊、直播間狀態、全局紅線揉在一起餵給模型。
鉤子(Hook):在流程的關鍵節點做校驗和糾錯的邏輯,比如發現回復格式不對就要求重試。
這套架構好處很明顯:運營想優化效果,不用碰模型權重,只要改Harness里的某個模組就行,幾個小時就能上線一版新策略。論文裡給了個真實的疊代案例,團隊在482條人工標註的開發集上跑了四輪疊代,準確率從82.40一路提到92.55,同時保持有效性92.75分作為工程上的最優停止點。
但這套架構的代價是,它把訓練問題變複雜了。模型訓練的時候看到的是某個時間點的Harness快照,部署之後面對的卻是不斷變化的新版本。用數學語言說,策略函數是π(a | x, h),這裡的h就是Harness狀態,它在部署時會持續演化,而模型如果只認死了訓練時那一份h,它就會在Harness進化成功的那一刻,恰好變得過時。
實驗數據把這個問題擺得很直白:用固定Harness做常規監督微調,雖然把業務指標做上去了,但代價是IFEval這個通用指令遵循能力基準掉了7.7分。
IFEval:一個專門測試模型能否嚴格執行格式和內容約束指令的公開評測集,比如"回答必須少於50字"這種硬性要求,模型做不到就扣分。
這就好比你請了一個新員工,給他一份詳細的操作手冊,他嚴格按手冊幹活幹得飛快。可是手冊一改版,換了幾個專業術語的說法,這位員工立刻不會幹活了,因為他記住的是手冊上的具體措辭,而不是任務本身要達成的目的。如果不做任何應對,每次手冊改版都得重新培訓這個員工,那這套"靈活手冊加固定員工"的設計初衷就徹底落空了,運營團隊本想省掉重新訓練模型的時間,結果反而背上了更重的負擔。
二、解法:讓模型在訓練時就見過各種版本的Harness
TaoLive團隊給出的方案叫做Harness-Aware Training
Harness-Aware Training(簡稱HAT,Harness感知訓練):核心思路是不讓模型只在一份固定Harness配置上學習,而是在訓練階段就讓它見識各種變了形但任務不變的Harness,逼著它去理解指令的功能含義,而不是死記字面配置。
這個思路的關鍵前提是一個叫做Harness-State Augmentation的技術手段。
Harness-State Augmentation(簡稱HSA,Harness狀態增強):一套對Harness做保留任務本質、改變表面形式的變換方法,專門針對技能標識符、技能內容、工具定義、系統提示詞、鉤子這五個維度做擾動。
具體怎麼擾動?舉個例子。技能標識符層面,團隊會把技能改名、重寫技能描述、混入一些看起來煞有介事但其實不存在的干擾技能,讓模型沒法靠"技能名字長得像不像"這種取巧辦法去匹配。技能內容層面,把規則打亂順序、隨機遮掉一部分、換個說法重新表述。工具定義層面,給工具改名字、重寫功能描述。系統提示詞層面,把指令模組的順序打亂,把字數限制、輪次上限這類數字約束在合理範圍內做微調。鉤子層面,設計出不同的重試提示話術和觸發邏輯變體。
這個設計的道理其實很樸素。如果一個技能只在訓練里出現過一次名字叫"item_qa",模型很可能學會的是看到"item_qa"這幾個字符就觸發某種固定反應,而不是理解這個技能背後"回答商品相關問題"這個功能意圖。給它換個名字叫"goods_qa",把裡面的規則打亂重排,再摻進去幾個長得很像但壓根不存在的干擾項,模型如果還能選對,那就說明它是真的讀懂了功能,而不是在做字符串匹配的把戲。
這就像教小孩認字,如果你只教他認識"蘋果"這兩個印刷體漢字,換成手寫體、換成"蘋果






