化?證據(jù)驅(qū)動框架演化實戰(zhàn))
1. 項目緣起與核心問題拆解GUI 智能體這兩年是個熱得發(fā)燙的方向。簡單說就是讓一個 AI 去操作圖形界面——點按鈕、填表單、拖滾動條、讀彈窗像人一樣把軟件用起來。但真正上手做過的人都知道這東西的難點從來不在“能不能點”而在“點得對不對、穩(wěn)不穩(wěn)、能不能復(fù)用”。我最早接觸這類項目是在一個自動化測試的場景里。當(dāng)時的需求很樸素讓智能體自動完成一套跨平臺系統(tǒng)的回歸測試。結(jié)果第一版跑下來成功率慘不忍睹。同一個“提交訂單”的操作今天能過明天換個分辨率就掛換個主題皮膚按鈕識別直接失效。排查下來發(fā)現(xiàn)問題不在模型本身而在于智能體每次都在“從零推理”——它沒有積累沒有記憶沒有從失敗中提煉出可復(fù)用的經(jīng)驗。GUI-HARVEST 這個標(biāo)題里的關(guān)鍵詞很值得玩味證據(jù)驅(qū)動、框架演化、自我改進(jìn)。這三個詞其實指向同一個核心命題——如何讓 GUI 智能體不再是一次性的推理機(jī)器而是一個能沉淀經(jīng)驗、迭代策略、越用越順手的系統(tǒng)。所謂“證據(jù)”指的是智能體在真實交互中產(chǎn)生的軌跡、截圖、操作日志、成功與失敗的標(biāo)注所謂“框架演化”指的是把這些證據(jù)轉(zhuǎn)化成可復(fù)用的操作模板、定位策略、異常處理規(guī)則所謂“自我改進(jìn)”就是讓這套機(jī)制閉環(huán)運轉(zhuǎn)不需要人工反復(fù)調(diào)參。這篇文章我想聊的不是某個具體產(chǎn)品的使用手冊而是這類“證據(jù)驅(qū)動自我改進(jìn)”思路的完整拆解。適合誰看如果你正在做 GUI 自動化、RPA、智能體落地或者單純對“AI 怎么從操作中學(xué)習(xí)”這件事感興趣那接下來的內(nèi)容應(yīng)該能給你一些可直接抄作業(yè)的思路。我會從整體設(shè)計、核心機(jī)制、實操落地、踩坑排查四個層面展開盡量把每個“為什么這么設(shè)計”講透。2. 整體設(shè)計思路與方案選型2.1 為什么不能只靠“大模型硬推理”很多人做 GUI 智能體的第一反應(yīng)是接一個多模態(tài)大模型把截圖丟進(jìn)去讓它輸出點擊坐標(biāo)完事。這個方案在 demo 階段很驚艷但一上生產(chǎn)就露餡。原因有三層。第一層是成本。每次操作都要調(diào)一次多模態(tài)推理一個包含二十步的流程就是二十次調(diào)用token 消耗和延遲都扛不住。第二層是穩(wěn)定性。大模型對坐標(biāo)的輸出是概率性的同一個界面兩次推理可能給出差幾個像素的結(jié)果遇到動態(tài)布局、分辨率變化、加載延遲直接崩。第三層是不可積累。這次學(xué)會了點這個按鈕下次換個界面它還是不會因為它沒有把“這個按鈕長什么樣、在什么位置、什么情況下出現(xiàn)”這件事存下來。GUI-HARVEST 的思路本質(zhì)上是給大模型配一個“外掛記憶和策略庫”。大模型負(fù)責(zé)它擅長的——理解語義、判斷意圖、處理沒見過的新情況而重復(fù)性的、確定性的操作交給從證據(jù)中演化出來的框架去執(zhí)行。這就像老員工帶新員工新員工大模型負(fù)責(zé)靈活應(yīng)變老員工演化框架負(fù)責(zé)把標(biāo)準(zhǔn)流程固化下來。2.2 “證據(jù)”到底指什么怎么采集證據(jù)這個詞聽起來抽象落到實操里其實很具體。我在項目里把證據(jù)分成四類每類的采集方式和用途都不一樣。證據(jù)類型采集方式主要用途操作軌跡記錄每次點擊/輸入的坐標(biāo)、時間、前后截圖提煉操作序列模板界面快照操作前后的完整截圖 控件樹建立元素定位特征庫結(jié)果標(biāo)注每步操作的成功/失敗標(biāo)記訓(xùn)練失敗預(yù)測與回滾策略環(huán)境上下文分辨率、主題、語言、窗口狀態(tài)做條件分支與適配采集這件事有個坑不能只存成功路徑。我一開始只記錄成功操作結(jié)果框架演化出來的模板特別脆一遇到異常就不知道怎么辦。后來改成成功失敗都存并且給失敗打上原因標(biāo)簽元素未找到、超時、彈窗遮擋、權(quán)限不足等框架才開始學(xué)會“遇到 A 情況走 B 分支”。提示證據(jù)采集一定要帶時間戳和唯一會話 ID否則后期做因果分析時根本對不上號。我吃過這個虧幾百條軌跡混在一起排查一個偶發(fā)失敗花了兩天。2.3 框架演化的三層結(jié)構(gòu)“框架演化”是整個系統(tǒng)的靈魂。我把它設(shè)計成三層從下到上分別是原子操作層、流程模板層、策略決策層。原子操作層是最細(xì)粒度的動作比如“點擊某個特征的元素”“在輸入框填入文本”“等待某個條件出現(xiàn)”。這一層的演化目標(biāo)是提高單步成功率。做法是把每次成功操作的界面特征控件類型、文本、相對位置、顏色、鄰近元素提取成特征向量存進(jìn)一個索引庫。下次遇到相似界面先用特征匹配快速定位匹配不上再交給大模型。流程模板層是把原子操作串成可復(fù)用的序列。比如“登錄”這個流程可能包含“定位用戶名框→輸入→定位密碼框→輸入→點擊登錄→等待首頁加載”。這一層的演化目標(biāo)是提高整條流程的魯棒性。做法是記錄每條流程的成功率對低成功率的步驟自動插入重試、等待、備選定位策略。策略決策層是最高層負(fù)責(zé)“什么時候用模板、什么時候調(diào)大模型、什么時候回滾”。這一層的演化依賴前面兩層積累的統(tǒng)計數(shù)據(jù)。比如某個流程模板連續(xù)成功 50 次那決策層就傾向于直接走模板如果連續(xù)失敗 3 次就觸發(fā)大模型介入并標(biāo)記該模板需要重新演化。這三層的演化不是獨立的而是有反饋回路。原子層的成功率變化會影響流程模板的置信度流程模板的置信度又會影響策略決策的傾向。這個回路就是“自我改進(jìn)”的引擎。2.4 方案選型的幾個關(guān)鍵取舍在選型上我做過幾輪對比這里把結(jié)論直接給出來省得你重復(fù)踩坑。定位方案純坐標(biāo)定位最脆純圖像匹配次之控件樹 圖像特征混合最穩(wěn)。我最終選的是混合方案——優(yōu)先讀控件樹拿結(jié)構(gòu)化信息控件樹拿不到比如自繪界面、游戲畫面再退到圖像特征匹配。這個取舍的理由是控件樹信息準(zhǔn)確但覆蓋不全圖像匹配覆蓋全但容易受干擾兩者互補(bǔ)。演化觸發(fā)時機(jī)有兩種選擇一是每次操作后都更新二是攢一批再批量更新。我選的是批量更新因為單次操作的成功失敗有偶然性立即更新容易被噪聲帶偏。批量更新的窗口我設(shè)的是 20 次同類操作或 24 小時取先到者。大模型介入策略不是所有失敗都值得調(diào)大模型。我設(shè)了三道門檻——模板匹配失敗、重試兩次仍失敗、且該步驟歷史成功率低于閾值才觸發(fā)大模型。這樣能把大模型調(diào)用量壓到總操作數(shù)的 5% 以下成本和延遲都可控。3. 核心機(jī)制深度解析與實操要點3.1 證據(jù)驅(qū)動的元素定位是怎么工作的元素定位是 GUI 智能體的命門。我把定位拆成“候選生成”和“候選排序”兩步。候選生成階段系統(tǒng)會從三個來源收集可能的元素控件樹里的所有可交互節(jié)點、圖像特征匹配到的區(qū)域、以及歷史證據(jù)里記錄過的相似元素。這三個來源各有所長合并后通常能得到 5 到 15 個候選。候選排序階段用一個打分函數(shù)給每個候選打分。打分維度包括文本相似度、控件類型匹配度、相對位置一致性、歷史成功次數(shù)、當(dāng)前界面上下文匹配度。每個維度有權(quán)重權(quán)重不是拍腦袋定的而是從證據(jù)里學(xué)出來的——哪個維度在歷史數(shù)據(jù)里對“正確元素”的區(qū)分度最高權(quán)重就越大。這里有個實操細(xì)節(jié)相對位置比絕對坐標(biāo)重要得多。我早期用絕對坐標(biāo)換個分辨率全廢。后來改成記錄元素相對于窗口、相對于鄰近錨點元素的位置魯棒性提升非常明顯。比如“登錄按鈕在用戶名輸入框下方約 40 像素、水平居中對齊”這種描述比“坐標(biāo) (512, 380)”穩(wěn)得多。# 元素特征提取的簡化示意 def extract_element_features(element, screenshot, context): return { text: element.text, type: element.control_type, rel_pos_to_window: element.rect.relative_to(context.window_rect), rel_pos_to_anchor: find_nearest_anchor(element, context), visual_hash: perceptual_hash(screenshot.crop(element.rect)), neighbor_texts: [e.text for e in element.neighbors], context_state: context.current_page_state, }注意視覺哈希perceptual hash對主題切換、輕微縮放有容忍度但對深色/淺色模式切換可能失效。我的做法是給同一元素存多個哈希按主題分組匹配時先判斷當(dāng)前主題再選對應(yīng)哈希。3.2 流程模板的演化算法流程模板的演化我用的是一種“帶權(quán)重的序列挖掘 變異”的思路。說人話就是從大量成功軌跡里找出高頻出現(xiàn)的操作序列把它們固化成模板然后對模板做小幅度變異比如插入等待、替換定位策略保留效果好的變異。具體步驟是這樣的。先把所有成功軌跡按“流程語義”聚類比如都包含“輸入用戶名、輸入密碼、點擊登錄”的歸為一類。然后在每一類里做序列對齊找出共同的操作骨架。骨架上的每一步統(tǒng)計它的定位策略分布、平均耗時、失敗率。這些統(tǒng)計量就是模板的“基因”。變異環(huán)節(jié)我設(shè)計了三種操作插入在易失敗步驟前插入等待或預(yù)檢查、替換把脆弱的定位策略換成更穩(wěn)的、分支為同一步驟準(zhǔn)備多個備選方案按順序嘗試。每次變異后用歷史證據(jù)回放驗證成功率提升的變異保留下降的丟棄。這個算法有個好處不需要人工設(shè)計模板模板是從真實操作里“長”出來的。我實測下來跑夠 200 條軌跡后常見流程的模板覆蓋率能達(dá)到 80% 以上剩下 20% 是長尾或新流程交給大模型處理。演化操作觸發(fā)條件預(yù)期效果插入等待某步驟超時失敗率 15%降低超時類失敗替換定位某步驟定位失敗率 10%提升元素命中率增加分支某步驟存在多種成功路徑提升場景適應(yīng)性合并模板兩個模板相似度 85%減少冗余加速匹配3.3 自我改進(jìn)的反饋閉環(huán)怎么搭自我改進(jìn)聽起來玄乎拆開看就是一個“執(zhí)行→評估→歸因→更新”的循環(huán)。難點在歸因——失敗了到底是定位錯了、時機(jī)不對、還是環(huán)境變了歸因不準(zhǔn)更新就是瞎更新。我的歸因策略是“分層排查”。第一步看是不是元素沒找到如果是歸因到定位問題第二步看元素找到了但操作沒生效歸因到交互問題比如點擊被遮擋、輸入沒聚焦第三步看操作生效了但結(jié)果不對歸因到流程邏輯問題。每一層都有對應(yīng)的證據(jù)特征來輔助判斷。更新環(huán)節(jié)我堅持一個原則小步快跑可回滾。每次更新只改動一小部分參數(shù)或策略并且保留舊版本。如果新版本在后續(xù) N 次操作里表現(xiàn)下降自動回滾。這個機(jī)制救過我好幾次——有次演化出了一個看似更優(yōu)的定位策略結(jié)果在某個特定分辨率下集體失效靠自動回滾才沒釀成大禍。提示反饋閉環(huán)一定要設(shè)“冷靜期”。我一開始讓系統(tǒng)實時更新結(jié)果因為幾次偶然失敗把好好的模板改壞了。后來加了冷靜期同類失敗累計到一定次數(shù)才觸發(fā)更新穩(wěn)定性好了很多。3.4 大模型與演化框架的協(xié)作邊界這是很多人關(guān)心的問題既然有演化框架了大模型還要不要我的答案是必須要但邊界要劃清楚。大模型負(fù)責(zé)三件事處理全新界面沒有歷史證據(jù)可參考、理解復(fù)雜語義比如“找到那個看起來像確認(rèn)但其實是取消的按鈕”這種需要常識的判斷、生成候選策略當(dāng)現(xiàn)有模板全部失敗時讓大模型提出新的操作思路。演化框架負(fù)責(zé)三件事執(zhí)行確定性操作有模板可循的、維護(hù)證據(jù)庫采集、索引、檢索、做策略決策什么時候調(diào)大模型。兩者的接口就是證據(jù)庫。大模型產(chǎn)生的操作如果成功會被采集為新證據(jù)進(jìn)而演化成新模板演化框架遇到搞不定的情況就把當(dāng)前上下文打包給大模型。這個邊界劃清楚后系統(tǒng)既有大模型的靈活性又有框架的穩(wěn)定性和積累性。4. 完整實操流程與關(guān)鍵環(huán)節(jié)實現(xiàn)4.1 環(huán)境搭建與依賴準(zhǔn)備先說環(huán)境。這套系統(tǒng)對運行環(huán)境有一定要求主要是截圖和控件樹讀取的權(quán)限。我是在一個桌面自動化環(huán)境里跑的核心依賴包括截圖庫負(fù)責(zé)抓取界面、控件樹訪問庫讀取結(jié)構(gòu)化信息、圖像處理庫做特征提取和匹配、以及一個輕量的本地存儲我用的是嵌入式數(shù)據(jù)庫存證據(jù)和模板。搭建順序建議這樣先確保能穩(wěn)定截圖再確保能讀到控件樹最后再接圖像處理和存儲。我見過有人一上來就搞全套結(jié)果截圖都不穩(wěn)定后面全白搭。# 依賴安裝示意以 Python 生態(tài)為例 pip install pillow opencv-python numpy pip install pyautogui # 用于模擬輸入 pip install sqlite-utils # 輕量證據(jù)存儲注意截圖頻率不要太高否則 CPU 占用飆升。我的做法是只在操作前后各截一張中間過程靠控件樹事件監(jiān)聽不持續(xù)截屏。4.2 證據(jù)采集模塊的實現(xiàn)證據(jù)采集模塊是整個系統(tǒng)的地基。我把它設(shè)計成“事件驅(qū)動 定時快照”的混合模式。事件驅(qū)動負(fù)責(zé)捕捉操作瞬間的狀態(tài)定時快照負(fù)責(zé)記錄界面的持續(xù)變化。每條證據(jù)記錄包含這些字段會話 ID、時間戳、操作類型、操作目標(biāo)元素特征、操作前截圖哈希、操作后截圖哈希、控件樹快照、執(zhí)行結(jié)果、失敗原因如果有、環(huán)境上下文。這些字段看著多但缺一個后期分析就會卡殼。采集時有個性能優(yōu)化點截圖不要存原圖存壓縮后的和特征哈希。原圖太占空間幾百條軌跡就上 G 了。我存的是縮略圖加感知哈希需要回看時再按需重新截取。這樣存儲占用降了一個數(shù)量級。# 證據(jù)記錄結(jié)構(gòu)示意 evidence { session_id: sess_20240101_001, timestamp: 1704067200.123, action: {type: click, target_features: {...}}, before_hash: a3f2..., after_hash: b7c1..., control_tree_digest: d4e5..., result: success, failure_reason: None, context: {resolution: 1920x1080, theme: light, lang: zh}, }4.3 模板演化引擎的落地演化引擎我拆成三個可獨立運行的模塊挖掘模塊、變異模塊、驗證模塊。這樣拆的好處是可以分別調(diào)優(yōu)也方便排查問題。挖掘模塊定期我設(shè)的是每天凌晨掃描新增證據(jù)做序列聚類和骨架提取。這里的關(guān)鍵參數(shù)是“最小支持度”——一個操作序列要出現(xiàn)多少次才被認(rèn)為是值得固化的模板。我設(shè)的是 5 次低于這個數(shù)的當(dāng)作偶發(fā)行為不固化。這個值可以調(diào)場景越穩(wěn)定可以設(shè)越低。變異模塊在模板置信度下降到閾值以下時觸發(fā)。它會對模板的每一步嘗試前面提到的三種變異操作生成若干候選變體。驗證模塊則用歷史證據(jù)回放這些變體選出成功率最高的。# 模板變異驗證的簡化邏輯 def validate_variant(variant, historical_evidence): success, total 0, 0 for record in historical_evidence: if matches_context(record, variant.context): total 1 if replay(variant, record) record.result: success 1 return success / total if total 0 else 0實測下來這套引擎跑一周左右就能把常見流程的模板打磨得比較穩(wěn)。我記錄的數(shù)據(jù)是初始模板平均成功率 72%經(jīng)過三輪演化后提升到 94%。提升主要來自定位策略的替換和等待時機(jī)的插入。4.4 策略決策層的實現(xiàn)細(xì)節(jié)策略決策層是“大腦”它決定每一步走哪條路。我實現(xiàn)成一個基于規(guī)則的打分系統(tǒng)規(guī)則來自證據(jù)統(tǒng)計不是人工硬編碼。決策時系統(tǒng)會評估當(dāng)前情況有沒有匹配的模板模板置信度多少當(dāng)前環(huán)境是否在模板的適用范圍內(nèi)大模型調(diào)用預(yù)算還剩多少綜合這些因素算出一個“走模板”的分?jǐn)?shù)和一個“調(diào)大模型”的分?jǐn)?shù)選高的那個。這里有個經(jīng)驗給大模型調(diào)用設(shè)預(yù)算上限。我一開始沒設(shè)結(jié)果遇到一個死循環(huán)界面大模型被反復(fù)調(diào)用成本爆炸。后來設(shè)了每會話上限和每日上限超了就降級到保守策略重試 報錯安全多了。決策場景走模板調(diào)大模型保守重試模板匹配且置信度高是否否模板匹配但置信度中是備選否無模板匹配否是否大模型預(yù)算耗盡否否是連續(xù)失敗超閾值否是是4.5 一次完整流程的實操記錄拿一個“填寫并提交表單”的流程舉例走一遍完整鏈路。第一步智能體接到任務(wù)“填寫表單并提交”。策略層先查模板庫發(fā)現(xiàn)有一個“表單填寫”模板置信度 0.91當(dāng)前環(huán)境匹配決定走模板。第二步模板第一步是“定位第一個輸入框”。定位模塊生成候選打分排序選中一個。執(zhí)行輸入操作采集證據(jù)結(jié)果成功。第三步重復(fù)定位和輸入直到所有字段填完。中間有一個字段的定位失敗了一次觸發(fā)了模板里的備選定位策略第二次成功。這次失敗被記錄用于后續(xù)演化。第四步點擊提交按鈕。這一步模板置信度只有 0.68因為歷史上這個按鈕偶爾會被彈窗遮擋。策略層決定走模板但準(zhǔn)備備選。果然第一次點擊沒生效被一個提示條遮擋系統(tǒng)自動等待提示條消失后重試成功。第五步驗證提交結(jié)果。模板里有“等待成功提示出現(xiàn)”的步驟執(zhí)行成功。整個流程結(jié)束證據(jù)入庫。這次流程里產(chǎn)生了兩條有價值的證據(jù)一個是字段定位的備選策略生效記錄一個是提交按鈕的遮擋處理記錄。它們會在下次演化時被考慮進(jìn)去。5. 常見問題與排查技巧實錄5.1 定位失敗類問題速查定位失敗是最常見的問題占我遇到問題的六成以上。下面這張表是我整理的速查表按現(xiàn)象、可能原因、排查方法、解決思路組織。現(xiàn)象可能原因排查方法解決思路元素完全找不到控件樹未刷新對比操作前后控件樹增加刷新等待找到多個候選特征區(qū)分度低看候選打分分布增加鄰近元素特征定位到錯誤元素權(quán)重配置不當(dāng)回放歷史證據(jù)調(diào)整打分權(quán)重時好時壞界面加載時序問題看失敗時間分布插入動態(tài)等待換環(huán)境就失效特征過擬合跨環(huán)境回放增加環(huán)境無關(guān)特征排查定位問題我有個習(xí)慣先把失敗時的截圖和控件樹存下來離線慢慢看。在線排查容易被后續(xù)操作干擾離線看能看得更清楚。我專門建了個失敗案例庫定期復(fù)盤很多演化靈感都來自這里。5.2 演化把模板改壞了怎么辦這是自我改進(jìn)系統(tǒng)最危險的情況——演化方向錯了越改越差。我遇到過兩次一次是定位策略被改得過于激進(jìn)一次是等待時間被改得過短。根本原因是驗證不充分。早期我的驗證只用最近 50 條證據(jù)樣本太少容易被噪聲誤導(dǎo)。后來改成用全量歷史證據(jù)做分層驗證——按環(huán)境、按時間段分層每層都要達(dá)標(biāo)才算通過。這樣雖然慢一點但穩(wěn)得多。另一個補(bǔ)救措施是版本快照。每次演化前存一份模板快照新版本上線后監(jiān)控成功率連續(xù)下降就自動回滾。這個機(jī)制我現(xiàn)在是默認(rèn)開啟的寧可保守也不要激進(jìn)。提示演化頻率不要太高。我試過每小時演化一次結(jié)果模板一直在小幅震蕩反而不穩(wěn)定。改成每天一次后模板收斂得好多了。5.3 大模型調(diào)用失控的排查大模型調(diào)用失控通常表現(xiàn)為成本飆升或延遲暴漲。排查思路是看調(diào)用日志找出調(diào)用最頻繁的場景。我遇到過的失控場景有兩個。一個是“死循環(huán)界面”——某個彈窗反復(fù)出現(xiàn)每次出現(xiàn)都觸發(fā)大模型形成循環(huán)。解決辦法是加“相同界面重復(fù)出現(xiàn)”檢測連續(xù)出現(xiàn)三次就強(qiáng)制走保守策略。另一個是“模糊任務(wù)”——任務(wù)描述太籠統(tǒng)大模型每次理解都不一樣導(dǎo)致反復(fù)嘗試。解決辦法是把任務(wù)描述結(jié)構(gòu)化減少歧義??刂普{(diào)用量還有個技巧緩存大模型的決策。相同界面加相同任務(wù)如果之前大模型給過方案且成功直接復(fù)用不再調(diào)用。這個緩存命中率我實測能到 30% 左右省了不少成本。5.4 跨環(huán)境適配的坑跨環(huán)境適配是 GUI 智能體的老大難。分辨率、主題、語言、系統(tǒng)版本任何一個變了都可能出問題。我的應(yīng)對策略是“環(huán)境畫像 條件模板”。系統(tǒng)會先探測當(dāng)前環(huán)境生成一個環(huán)境畫像分辨率區(qū)間、主題、語言等然后只加載適用于該畫像的模板和特征。這樣不同環(huán)境用不同策略互不干擾。還有個技巧是用相對特征替代絕對特征。前面提過相對位置其實顏色、字體大小這些也盡量用相對值。比如“按鈕顏色比背景深”比“按鈕是藍(lán)色”更穩(wěn)因為深色主題下藍(lán)色按鈕可能變成淺藍(lán)但“比背景深”這個關(guān)系不變。環(huán)境維度絕對特征脆相對特征穩(wěn)位置絕對坐標(biāo)相對窗口/錨點顏色RGB 值與背景的對比關(guān)系大小像素尺寸與鄰近元素的比例文本完整字符串關(guān)鍵詞/模式5.5 性能優(yōu)化的幾個實操心得系統(tǒng)跑起來后性能是繞不開的。我總結(jié)了幾條心得。截圖是性能大頭。能少截就少截能用控件樹事件替代的就替代。我后來改成只在關(guān)鍵節(jié)點截圖CPU 占用降了四成。特征匹配要建索引。早期我線性遍歷所有歷史特征慢得離譜。后來建了倒排索引按控件類型和文本關(guān)鍵詞先粗篩再精排速度快了一個數(shù)量級。證據(jù)庫要定期清理。老證據(jù)價值遞減我設(shè)了保留策略——最近三個月的全留更早的只留成功案例和典型失敗案例。這樣庫不會無限膨脹。演化計算放后臺。演化是計算密集型任務(wù)別放在主流程里。我把它放到獨立進(jìn)程主流程只管執(zhí)行和采集互不阻塞。6. 我對這套思路的一些個人體會做 GUI 智能體這幾年我最大的體會是別指望一步到位要接受“漸進(jìn)式變好”。GUI-HARVEST 這套證據(jù)驅(qū)動演化的思路本質(zhì)上就是把“變好”這件事工程化、自動化。它不會讓智能體第一天就完美但它能讓智能體每天比昨天好一點而且這個變好過程不需要人盯著。另一個體會是證據(jù)的質(zhì)量比數(shù)量重要。我早期貪多什么操作都記結(jié)果噪聲太大演化出來的模板亂七八糟。后來改成只記“有信息量”的操作——成功的、失敗的、異常的那些平淡無奇的重復(fù)操作少記。質(zhì)量上來后演化效率明顯提升。最后分享一個小技巧給證據(jù)打標(biāo)簽時讓操作者或另一個模型順手寫一句“為什么”。比如“這次失敗是因為彈窗遮擋”這句話比一堆特征向量對演化的幫助還大。我現(xiàn)在采集證據(jù)時都會帶一個簡短的歸因備注后期分析省事很多。這套東西還在迭代后面我打算試試把演化出來的模板做跨任務(wù)遷移——比如“登錄”流程里學(xué)到的等待策略能不能用到“支付”流程里。這個方向如果跑通智能體的冷啟動會快很多。