![]()
機(jī)器之心發(fā)布
Agent 從來不是不會(huì)用瀏覽器,只是浪費(fèi)太多時(shí)間在探索 ——BrowserBC 把人類軌跡蒸餾成可復(fù)用 Skill 來完成 Behaviour Cloning,用戶點(diǎn)一遍,Agent 照著就能跑通。
項(xiàng)目發(fā)布后 6 小時(shí),BrowserBC 已經(jīng)引發(fā)了海外開源社區(qū)超過 2500 條相關(guān)討論,登上了 Twitter 的 Today News。AI 社區(qū)最具影響力的前沿論文和開源項(xiàng)目分享者 AK 也關(guān)注并分享了該項(xiàng)目。
![]()
導(dǎo)讀
今天的 Web Agent,已經(jīng)不缺「會(huì)操作」這件事。
Claude、Codex 這類 Agent 能看頁(yè)面、能識(shí)別按鈕和輸入框,能點(diǎn)擊、輸入、跳轉(zhuǎn)、提交。真正卡住它們的,是另一個(gè)問題:每接一個(gè)新任務(wù)、每換一個(gè)新網(wǎng)站,幾乎都要讓最強(qiáng)、也最貴的那個(gè)模型,從零開始再把整個(gè)流程摸索一遍。
而這種「從零摸索」,常常摸著摸著就出岔子:陷進(jìn)死循環(huán),在幾個(gè)頁(yè)面之間反復(fù)橫跳;慢慢偏離最初的任務(wù)意圖,越走越遠(yuǎn);在搜索結(jié)果里來回切換卻始終沒讀全;或者明明已經(jīng)很接近答案,卻提前收手、草草交差。
在摸索一遍之后呢?就算這次僥幸做成了,這點(diǎn)經(jīng)驗(yàn)也往往隨著這一輪對(duì)話一起蒸發(fā)。下一次同類任務(wù),再換一個(gè) Agent,還要從頭試錯(cuò)、再踩一遍同樣的坑。
于是,一個(gè)很樸素的問題浮出水面:能不能做一次、復(fù)用很多次?
更具體一點(diǎn) —— 能不能讓人把任務(wù)認(rèn)真做一遍,把這一遍操作里的「門道」打包下來,然后交給一個(gè)更便宜、更小的模型,讓它照著做,就能完成同一類任務(wù)?
Einsia AI 旗下 Navers Lab 發(fā)布的開源項(xiàng)目 BrowserBC 給出的答案,是一條三步范式:錄制 → 轉(zhuǎn)寫成 Skill → 交付執(zhí)行。
- 錄制:在瀏覽器里做任務(wù)的時(shí)候,把全過程完整記錄下來 —— 任務(wù)指令、每一步的頁(yè)面觀察(既有渲染出來的截圖,也有結(jié)構(gòu)化的DOM / 可訪問性樹快照)、用戶的每一個(gè)動(dòng)作(點(diǎn)擊、輸入、跳轉(zhuǎn)、提交,并帶著對(duì)應(yīng)的元素定位)、頁(yè)面給出的反饋(頁(yè)面跳轉(zhuǎn)、校驗(yàn)與報(bào)錯(cuò)信息、完成信號(hào)),以及任務(wù)最終落到哪個(gè)狀態(tài)。
- 轉(zhuǎn)寫:關(guān)鍵在于,它不是把這段操作存成一段「回放腳本」,而是由模型把它轉(zhuǎn)寫成一份自然語言的 Skill—— 一份說明書式的「技能卡」,寫清楚這類任務(wù)該怎么做、怎么判斷做對(duì)了。
- 執(zhí)行:再把這份 Skill 交給任意一個(gè)模型去讀。它據(jù)此在真實(shí)頁(yè)面上自己落地操作,而不是機(jī)械復(fù)刻某一次的點(diǎn)擊坐標(biāo)。
說得通俗一點(diǎn),BrowserBC 有點(diǎn)像agentic 時(shí)代的「按鍵精靈」
傳統(tǒng)的按鍵精靈,會(huì)把人的鼠標(biāo)點(diǎn)擊和鍵盤敲擊錄下來再回放 —— 但它錄的是寫死的坐標(biāo)和按鍵,頁(yè)面一變、布局一動(dòng),整段腳本立刻就廢了。
BrowserBC 錄的不是坐標(biāo),而是把這一遍操作轉(zhuǎn)寫成一份講清「該做什么、怎么算做完」的技能:它能被另一個(gè)模型讀懂,能在變了樣的頁(yè)面上舉一反三,也能被不斷合并、復(fù)用 —— 它是那種會(huì)「理解」、能遷移、還能直接交給別人用的按鍵精靈。
這也揭示出 BrowserBC 的核心 ——技能從哪里來,和技能由誰來執(zhí)行,可以徹底分開
人在瀏覽器里把任務(wù)做一遍,這一遍操作被轉(zhuǎn)寫成技能;之后照著技能把同類任務(wù)做下去的,是另一個(gè)、哪怕更小、更便宜的模型。技能一旦被轉(zhuǎn)寫成自然語言,就能在模型之間自由地傳遞、復(fù)用、組合。
這正是通往「通用網(wǎng)頁(yè)瀏覽」的關(guān)鍵步驟:把人類每天的瀏覽器行為蒸餾給 Agent 去做。
![]()
BrowserBC 把人類的瀏覽器操作軌跡蒸餾成可復(fù)用的自然語言技能,為 Agent 提供訪問陌生網(wǎng)站時(shí)的 "決策先驗(yàn)"。
- Github:https://github.com/Einsia/Browser-BC
- Blog:https://lab.einsia.ai/browserbc/
- Paper:https://lab.einsia.ai/browserbc/paper
人類一次錄制
Agent 就能模擬
![]()
視頻鏈接:https://mp.weixin.qq.com/s/dMAPeqDszlY0eDopwPAu0w
研究團(tuán)隊(duì)錄制了一個(gè) case:
任務(wù)很常見:旅行前想要在目的地找一處安心、方便、實(shí)惠的民宿,需要在預(yù)訂網(wǎng)站輸入時(shí)間、地點(diǎn)、預(yù)約人數(shù),按照網(wǎng)站評(píng)分、評(píng)分?jǐn)?shù)量篩選,并且排序找出里面最優(yōu)的選項(xiàng)。這類任務(wù)看起來不難,但是小模型經(jīng)常栽在它上面 —— 不是不理解任務(wù),而是要么不知道怎么用篩選功能,要么產(chǎn)生幻覺輸出虛構(gòu)信息假裝完成。
第一步,錄制。研究團(tuán)隊(duì)先讓一個(gè)人把它完整做一遍:進(jìn)入網(wǎng)站 → 輸入時(shí)間地點(diǎn)人數(shù) → 應(yīng)用合適的篩選器 → 閱讀所有搜索結(jié)果 → 找到最佳選項(xiàng)。整個(gè)過程被原樣記錄下來。
第二步,轉(zhuǎn)寫成 Skill。系統(tǒng)把這段操作轉(zhuǎn)寫成一張技能卡,而不是一段坐標(biāo)回放。卡片上寫的是這一類任務(wù)的通用門道:
- 意圖:在預(yù)訂網(wǎng)站找到最佳的住宿選項(xiàng);
- 關(guān)鍵步驟:先寫基本信息,搜索之后逐項(xiàng)應(yīng)用篩選器 —— 這正是小模型最容易不理解或者做不到的地方;
- 完成判據(jù):最后輸出可以人工核查的版本;
- 要避免的坑:官方篩選器可能和用戶實(shí)際需要的標(biāo)準(zhǔn)不一樣,如有需要?jiǎng)t需要自己編寫腳本篩選。
第三步,交付給一個(gè)小模型執(zhí)行。這張卡片被交給一個(gè)明顯更小的模型,讓它去完成另外一次旅程的信息檢索,做同類型的任務(wù)。沒有這張卡片時(shí),他要么跌跌撞撞卡死或者很久才勉強(qiáng)完成任務(wù),要么直接輸出幻覺;拿到卡片后,它立刻知道要輸入什么信息,要核查什么界面,哪些要依賴網(wǎng)站官方哪些要自己判別 —— 于是穩(wěn)定地把任務(wù)做完了。
就這樣,BrowserBC 把「操作瀏覽器」這件每天都在發(fā)生的事,變成了可以被 Agent 復(fù)用的技能。人把路趟通一次、由系統(tǒng)轉(zhuǎn)寫成說明書 Agent 型負(fù)責(zé)照著說明書把同一類路走順。
而且,這條路天然是可復(fù)用、可擴(kuò)展的。人類訪問網(wǎng)站的分布服從冪律分布:常見的站點(diǎn)構(gòu)成了人類訪問的大部分,對(duì)于這些站點(diǎn),用的人越多,Skill 庫(kù)就會(huì)收斂得越完備;更關(guān)鍵的是,針對(duì)稀疏的長(zhǎng)尾分布,BrowserBC 使得人們再也不需要等那些落后的舊網(wǎng)站自己來提供 MCP(或官方 Agent 接口)了
現(xiàn)實(shí)是,大量老網(wǎng)站永遠(yuǎn)不會(huì)專門為 Agent 開放一套干凈的機(jī)器接口;而 BrowserBC 直接復(fù)用人類在「給人看的那套界面」上積累下來的操作經(jīng)驗(yàn) —— 只要人能用瀏覽器把它用起來,Agent 就能借由蒸餾出的技能把它用起來。換句話說,一個(gè)網(wǎng)站能不能被 Agent 高效訪問,不再取決于網(wǎng)站方愿不愿意配合、肯不肯升級(jí),而取決于有沒有人已經(jīng)在這個(gè)網(wǎng)站上走通過路。這恰恰是「通用」二字的底氣所在。
方法:怎么把一次操作轉(zhuǎn)寫成能用的 Skill
又怎么把越來越多的 Skill 管起來
![]()
BrowserBC 將嘈雜的瀏覽軌跡清洗、蒸餾為可復(fù)用的自然語言技能,并進(jìn)一步組織成可擴(kuò)展的技能圖,最后檢索相關(guān)技能指導(dǎo) Agent 完成新任務(wù)。
BrowserBC 的方法部分,其實(shí)就回答兩個(gè)問題:一段操作該怎么總結(jié)、總結(jié)時(shí)要注意什么;以及總結(jié)出來的成千上萬個(gè) Skill,該怎么管理。
第一個(gè)問題:怎么轉(zhuǎn)寫,以及要特別注意什么?
原始的瀏覽器軌跡往往非常嘈雜 —— 里面有誤點(diǎn)擊、無意義的等待、重復(fù)嘗試、臨時(shí)的頁(yè)面狀態(tài),還可能夾著隱私信息。因此在轉(zhuǎn)寫之前,BrowserBC 會(huì)先做清洗,并按語義把軌跡切成一段段連貫的子過程,而不是按固定長(zhǎng)度硬切。
每一段會(huì)先被抽成一份「證據(jù)(evidence)」:保留任務(wù)指令、這段操作前后的頁(yè)面狀態(tài)、用戶采取的關(guān)鍵步驟、頁(yè)面給出的反饋、以及成功或失敗的信號(hào)。
然后,把證據(jù)轉(zhuǎn)寫成結(jié)構(gòu)化的自然語言 Skill 卡,用固定字段說清楚 "該做什么、怎么判斷進(jìn)展、怎么算完成、失敗了怎么辦",以及它從哪來、在什么場(chǎng)景下適用。 這樣一張卡,既能直接喂給語言模型當(dāng)作上下文,又方便人去審閱和修改。
這里有一個(gè)最該注意的原則:只保留「可遷移的過程性知識(shí)」,剝離「會(huì)變、會(huì)泄露的細(xì)節(jié)」。
- 要?jiǎng)兊舻模壕_坐標(biāo)、DOM 選擇器、臨時(shí) ID、登錄態(tài)、隱私文本,以及任何指向具體答案、針對(duì)評(píng)測(cè) checker 的內(nèi)容;
- 要留下的:在語義層面「該做什么、怎么判斷進(jìn)展、怎么算完成」。
舉個(gè)例子,一張「填表單」技能卡寫的是「按語義標(biāo)簽找到對(duì)應(yīng)字段、把任務(wù)給定的值原樣填進(jìn)去、提交后確認(rèn)頁(yè)面出現(xiàn)成功狀態(tài)」,而不是「點(diǎn) (x, y)、再點(diǎn)那個(gè) id 是某串字符的按鈕」。
原因很直接:網(wǎng)頁(yè)天天在變,布局、DOM、版本、登錄態(tài)都會(huì)變,克隆坐標(biāo)和選擇器極其脆弱;而克隆「做什么 + 怎么判斷完成」才真正遷移得動(dòng)。
還有兩點(diǎn)值得一提:
其一,一條成功軌跡就足以蒸出一個(gè)可用技能(它本身就刻畫了一種可行解的結(jié)構(gòu));而把同一任務(wù)的多次嘗試(含失敗)放在一起,技能會(huì)更穩(wěn) —— 成功的運(yùn)行強(qiáng)化執(zhí)行步驟,失敗的運(yùn)行則暴露缺失的前置條件、催生出顯式的恢復(fù)策略。
其二,轉(zhuǎn)寫時(shí)要做一遍泄露檢查:技能卡只該記可復(fù)用的過程,不該把具體答案夾帶進(jìn)去。
第二個(gè)問題:Skill 怎么管理?
如果每條軌跡都生成一個(gè)互相獨(dú)立的技能,庫(kù)很快就會(huì)失控:重復(fù)、冗余、甚至互相沖突。
BrowserBC 的做法是把庫(kù)組織成一張技能圖(skill graph)。每當(dāng)產(chǎn)生一個(gè)候選技能,系統(tǒng)就判斷該把它新增(add)為一個(gè)新節(jié)點(diǎn)、合并(merge)進(jìn)已有技能、還是登記為某個(gè)更通用技能的特化(specialize)
- 當(dāng)兩個(gè)技能在意圖、前置條件、步驟、效果、終止證據(jù)上彼此相容時(shí),就合并;
- 當(dāng)它們適用條件不同、需要的信息不同、或約束互相沖突時(shí),就保持分開。
圖里的節(jié)點(diǎn)是技能,邊是技能之間的關(guān)系 —— 時(shí)間依賴、特化、同一子目標(biāo)下的替代方案、以及同一狀態(tài)下的互斥。于是一個(gè)通用過程(比如「填表單」)可以連到它的各種特化(支付、改資料)和對(duì)應(yīng)的失敗恢復(fù)技能,而不必把它們壓成一條扁平的條目。
這張圖帶來三件事,也正是 BrowserBC 所說的 scalable 的真正含義:把重復(fù)的演示合并成可復(fù)用的節(jié)點(diǎn),而不是無限堆樣本;讓檢索和更新只動(dòng)相關(guān)的局部區(qū)域;支持增量精煉 —— 來一條新軌跡,只更新受影響的技能及其鄰居。需要強(qiáng)調(diào)的是,這張圖的價(jià)值在于 "組織":學(xué)習(xí)與復(fù)用的基本單元始終是那張自然語言技能卡,而圖把這些卡片有序地存放、檢索和更新起來,正是技能庫(kù)能持續(xù)擴(kuò)張卻不失控的關(guān)鍵。
到了執(zhí)行端,檢索也刻意做得很輕:按語義相似度(有額外信息時(shí)再疊加與當(dāng)前頁(yè)面上下文的兼容性)挑出一小撮相關(guān)技能,塞進(jìn) Agent 的上下文,剩下的落地交給 Agent 自己讀取當(dāng)前頁(yè)面來完成。技能既不是可執(zhí)行腳本,也不是要照搬的演示,它只是把 Agent 往蒸餾出來的行為模式上引,而每一個(gè)具體動(dòng)作仍然是對(duì)著當(dāng)前頁(yè)面現(xiàn)挑的。
實(shí)驗(yàn)與討論
技能帶來跨基準(zhǔn)、跨站點(diǎn)的一致提升
BrowserBC 首先在 WebArena-Hard 上接受檢驗(yàn):258 個(gè)經(jīng)人類核驗(yàn)的任務(wù),覆蓋 GitLab、電商及其后臺(tái)、論壇、跨站點(diǎn)組合等六類自托管站點(diǎn)。實(shí)驗(yàn)嚴(yán)格控制變量 ——Agent、動(dòng)作接口、步數(shù)與時(shí)間預(yù)算全部固定,唯一變量是要不要注入 BrowserBC 檢索到的 Skill。結(jié)果是:base agent 成功率為 60.5%(156/258),注入技能后提升到 81.4%(210/258),提升了 20.9 個(gè)百分點(diǎn),挽回了基線原本失敗的 54 個(gè)任務(wù)。
更強(qiáng)的檢驗(yàn)來自 ClawBench:152 個(gè)任務(wù)跑在真實(shí)線上網(wǎng)站上,頁(yè)面布局與操作流程會(huì)在不同運(yùn)行間變化,且以寫操作為主。這個(gè)設(shè)定抽掉了「靠記憶取巧」的可能 —— 任何編碼精確坐標(biāo)、DOM 選擇器或緩存頁(yè)面狀態(tài)的技能,在這里只會(huì)越用越糟。結(jié)果是:skill-free 基線只解出 50/152(32.9%),注入技能后解出 104/152(68.4%),提升 35.5 個(gè)百分點(diǎn),幾乎把解出的任務(wù)數(shù)翻了一倍,且在全部八個(gè)類別上普遍成立。
![]()
BrowserBC 在 WebArena-Hard 與 ClawBench 上的性能表現(xiàn)。
事實(shí)上,技能不僅提升成功率,還縮短了完成任務(wù)所需的交互。在 WebArena-Hard 任務(wù)上,Agent 的平均工具調(diào)用次數(shù)從 31.2 降到 22.7(?27.3%)。這與「技能作為流程性先驗(yàn)」的定位一致:它削減了試探性導(dǎo)航與反復(fù)的頁(yè)面查看,而把底層 grounding 留給執(zhí)行時(shí)的實(shí)時(shí)頁(yè)面狀態(tài)。
![]()
BrowserBC 既能提升交互效率,又能讓蒸餾出的技能在不同模型間遷移。
討論一:Skill 是一份「帶置信度的先驗(yàn)」,不是一條命令。
有一個(gè)細(xì)節(jié)很說明問題:在 WebArena-Hard 上,如果強(qiáng)制 Agent 逐字照搬檢索到的技能 —— 哪怕當(dāng)前頁(yè)面證據(jù)與它矛盾 —— 成功率只有77.5%;而讓它選擇性使用、在與頁(yè)面沖突時(shí)以頁(yè)面為準(zhǔn),才到 81.4%。更進(jìn)一步,約 3.9%(10/258)的任務(wù)里,盲目照搬技能反而把本來能做對(duì)的做壞了。這恰恰印證了那條核心判斷:自然語言技能的價(jià)值在于「提示策略」,落地永遠(yuǎn)要交給執(zhí)行模型去讀當(dāng)前頁(yè)面
討論二:技能是「蒸餾一次、便宜復(fù)用」的模型無關(guān)對(duì)象。
BrowserBC 的一個(gè)設(shè)計(jì)主張是:技能可以由一個(gè)強(qiáng)模型蒸餾一次,再交給另一個(gè)更便宜的 Agent 在執(zhí)行時(shí)復(fù)用。我們?cè)?WebArena-Hard 任務(wù)上,把「蒸餾技能的模型」與「執(zhí)行技能的模型」交叉組合,得到兩點(diǎn)結(jié)論。其一,技能質(zhì)量主要在蒸餾階段決定:Sonnet-4.6 蒸餾出的技能能同時(shí)大幅提升兩個(gè)執(zhí)行器(+24 與 +20 個(gè)百分點(diǎn)),而 Qwen-3.7 蒸餾的技能只帶來微弱增益。其二,高質(zhì)量技能能跨執(zhí)行器遷移:裝備了 Sonnet-4.6 技能的小 Agent 達(dá)到 77%,逼近大 Agent 的 80%,直接坐實(shí)了「蒸餾一次、便宜復(fù)用」的設(shè)想。
討論三:剩下的難,難在「執(zhí)行」而非「缺知識(shí)」。
對(duì)仍然失敗的案例做人工審計(jì)后發(fā)現(xiàn),瓶頸大多落在執(zhí)行精度,而不是缺少知識(shí):長(zhǎng)表單漏掉某個(gè)字段、目標(biāo)對(duì)象有歧義、長(zhǎng)程任務(wù)把預(yù)算耗在中間頁(yè)、或者模型自己推理過長(zhǎng)「跑飛」。這些情況里技能本身是對(duì)的、也用上了,限制因素是「按流程執(zhí)行的保真度」—— 也就是底層模型的能力。這也劃出了「小模型執(zhí)行」的可行邊界:技能能補(bǔ)「該怎么做」,補(bǔ)不了「手穩(wěn)不穩(wěn)」。
討論四:遷移到瀏覽器之外 ——OSWorld 案例研究。
論文還在 30 個(gè) OSWorld 風(fēng)格的 Ubuntu 桌面任務(wù)上做了一次診斷性的遷移研究 —— 需要說明的是,這并非把它當(dāng)作一項(xiàng)完整的 OSWorld 刷榜,而是考察「方法的哪一部分能遷移」。30 個(gè)任務(wù)里,17 個(gè)在配上匹配技能后得到改善,說明過程性先驗(yàn)確實(shí)能跨過瀏覽器的邊界發(fā)揮作用。真正可遷移的并不是瀏覽器專屬的動(dòng)作序列,而是那份過程性先驗(yàn) —— 前置條件、語義狀態(tài)如何轉(zhuǎn)移、進(jìn)度里程碑、終止證據(jù)、失敗如何恢復(fù)。在瀏覽器里它落在頁(yè)面、鏈接、表單上;在桌面上則落在窗口、文件、對(duì)話框、持久設(shè)置上。剩下的案例則劃出了方法的邊界:少數(shù)任務(wù)本來就足夠簡(jiǎn)單、不需要技能;一部分卡在 GUI 控制本身(窗口焦點(diǎn)、模態(tài)彈窗、文件選擇器狀態(tài))而非缺知識(shí);還有個(gè)別案例因?yàn)闄z索到錯(cuò)配的技能被「自信地帶偏」。也就是說,當(dāng)缺的是「流程結(jié)構(gòu)」時(shí),技能最有用;當(dāng)缺的是底層 GUI grounding、或檢索喂錯(cuò)了先驗(yàn)時(shí),技能幫不上忙,甚至?xí)韥y。
BrowserBC 的意義不止是一個(gè)方法
![]()
BrowserBC 不是一個(gè)炫技的方法。它真正重要的地方在于,它指明了人類瀏覽器軌跡的價(jià)值:這是人類群體在瀏覽器迷宮中走出來的高效操作路徑。BrowserBC 做的事情,就是把這些隱含經(jīng)驗(yàn)的軌跡蒸餾成 Agent 可用的 skill。
核心啟發(fā)在于:
- 第一,提升 Agent 的 Browser Using 能力,其實(shí)關(guān)鍵在于給它補(bǔ)齊完備的網(wǎng)頁(yè)邏輯知識(shí)。
- 第二,人類與虛擬世界的交互過程,本身就是一種尚未被充分利用的數(shù)據(jù)資源。
- 第三,如果這些軌跡可以被持續(xù)蒸餾和管理復(fù)用,那么 Agent 就可以從 “可以” 操作網(wǎng)頁(yè)”,逐漸走向 “高效” 操作網(wǎng)頁(yè)。
所以,BrowserBC 的核心不是教 Agent 點(diǎn)擊網(wǎng)頁(yè) —— 它是在信息不完備的環(huán)境里,用人類軌跡為 Agent 補(bǔ)上決策所需的先驗(yàn)。
在這個(gè)意義上,真正決定 Web Agent 上限的,從來不是 “是否能夠復(fù)現(xiàn)某個(gè)瀏覽器操作流程”,也不是 “是否快速拼裝出一個(gè)看似可運(yùn)行的系統(tǒng)” 或是 “Demo 出一個(gè)熱門概念”,而是是否真正構(gòu)建了可以持續(xù)積累、可復(fù)用、可遷移的經(jīng)驗(yàn)結(jié)構(gòu)
這可能是 讓 Web Agent 從能用走向好用的臨門一腳。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.