AI 要操作介面,先讓按鈕有名字
假設有一個原生桌面報表工具,同時開著九月和十月的報表視窗。兩個視窗右上角都有一顆「匯出」。你想把十月報表存成檔案,便對 AI 說:「幫我按匯出。」
人坐在螢幕前,往往能從視窗標題、選取項目和剛才的操作接上這句話。交給 agent 時,這些線索卻未必都在它拿到的資訊裡。就算它找到了兩顆按鈕,也還沒決定你指的是哪一顆。
這是一個假設的設計題,卻適合用來檢查我們對 AI 操作介面的期待。我們很容易把失誤歸因於模型看圖不夠準,繼續換模型、補截圖;有時候,產品根本沒把操作對象交代清楚。
因此,我會先檢查介面給了哪些線索,再決定是否需要換模型。否則補再多提示詞,也可能只是在描述螢幕上看起來很清楚、工具卻讀不到的關係。
畫面之外,控制項還要能被讀懂
Agent Desktop 提供了一條具體的路線:透過作業系統的無障礙 API 讀取桌面應用程式,把介面整理成結構化的觀察快照,並為可操作元素提供參照,讓呼叫它的 agent 選擇後續動作。
它本身是工具,不是內建一個會自行決策的模型。這條路線也不同於透過 DOM 操作網頁;不能因為桌面工具能讀到某個視窗,就把它當成通用的瀏覽器自動化方案。
這種做法把一項既有的工程工作推到眼前。畫面上像按鈕的東西,應用程式是否也把它表達成按鈕?它叫什麼名字,屬於哪個區域,現在是否可用?如果應用程式沒有公開相應的無障礙結構,這條路線就讀不到那些控制項。問題不在於用了哪一種繪圖方式,而在於有沒有把可理解的結構提供出來。
無障礙設計首先是為了人的使用需求。讓鍵盤、輔助科技與不同操作方式的使用者能完成工作,本來就值得做,無須等 AI 出現才有理由。結構化自動化只是讓同一層介面品質,多了一個不能忽略的使用情境。
兩顆都叫「匯出」,仍然不夠清楚
回到報表工具。替按鈕加上名稱,是改善的起點。但兩個視窗裡各有一顆「匯出」,名稱本身沒有消除歧義。
在這個例子裡,合理的設計目標是:工具能分辨自己正在讀哪個視窗,找到目前的十月報表,並判斷匯出控制項是否可用。若報表尚未載入完成,或按鈕其實作用於另一個已選取項目,這些差異也需要表達出來。
不必把所有上下文都塞進一個長得難以閱讀的按鈕名稱。視窗、群組、控制項的關係,以及目前狀態,可以一起提供線索。只是各平台與應用程式公開的資訊不盡相同,設計上想說清楚,和工具實際讀得到,是兩件需要分別檢查的事。
如果 agent 仍然只能得到兩個無法區分的目標,就該縮小觀察範圍,或請人確認。多拍一次快照不保證同名元素會突然變得不同;改用螢幕座標偷偷點下去,則只是把原本看得見的歧義藏起來。
參照記住的是一次觀察
結構化工具替控制項提供 ref,容易讓人產生一種安心感:既然有識別資訊,下次照著用就好。
但 Agent Desktop 的 ref 帶有快照識別資訊,代表的是某次觀察裡的元素。它不是產品為那份報表承諾的永久身分。
假設 agent 讀完列表之後,使用者改了排序,或者畫面開了一個新的對話框。接下來應該重新讀取相關區域,確認原本要操作的對象,再使用最新觀察的參照。舊 ref 有時仍能解析,卻不表示它指到的元素仍符合剛才那個任務意圖。
遇到 STALE_REF,需要處理的是參照已失效;遇到 AMBIGUOUS_TARGET,則是目前無法唯一確定目標。前者可能需要更新觀察,後者還可能需要補充範圍或人的判斷。把兩者都當成「再按一次」並不合適。
這也影響產品怎麼設計動態更新。介面可以重新排序、切換內容,但操作工具必須有機會確認變動後的對象。尤其像匯出這類動作,工具允許重試,也不代表應用程式承諾重試不會重複產生檔案。
生成式介面不能只保留外觀
同一個設計問題,也會出現在生成式介面裡。這裡延伸的是原則,並不是說 Agent Desktop 已經驗證了某個網頁框架的操作能力。
AI 可以依任務把一張報表變成摘要卡片,或把幾筆資料排成比較表。版面改變時,控制項的角色、名稱與狀態仍然需要留下來。如果新的「匯出」只剩一個漂亮圖示,卻失去了它與當前報表的關係,生成得再快,使用者和操作工具還是得重新猜。
元件目錄和 schema 能限制系統可以組出哪些東西,卻不能單靠格式正確,就證明渲染結果具有適當的無障礙語意。團隊仍要檢查實際元件,以及它們在不同組合下的互動。尋找實作路線時,可以從 Awesome Generative UI 整理的生成式介面的開發資源查找元件目錄、渲染器與開源專案,再把選中的元件放回自己的流程檢查。目錄收錄的是開發材料,並非無障礙驗證結果或桌面工具的整合保證。
想把這部分落到設計系統,可以延伸閱讀生成式介面的元件語意與設計系統,思考哪些原本只存在工程師腦中的使用限制,需要先寫成明確的規則。
先檢查一條小流程
對小團隊來說,不必先規劃「讓 AI 操作整個產品」。我會從前面那條匯出流程開始,用合成報表和獨立的測試工作區,把問題縮小:
同時開兩個月份的視窗,確認觀察結果足以分辨目標報表與匯出按鈕。
讓報表進入尚未就緒的狀態,確認工具能讀到控制項是否可用,而非只看見它存在。
在第一次觀察後改變排序或開啟對話框,再觀察一次,檢查能否重新找到原本要處理的對象。
刻意留下無法區分的目標,確認流程會停下來要求判斷,而不是自行猜一個。
這是一份待執行的檢查建議,不是產品實測結果。也不要直接拿私人桌面當測試資料:觀察快照、剪貼簿、截圖和除錯輸出,都可能帶出不該公開的內容。作業系統要求的權限仍要明確處理,看得見控制項並不等於取得執行授權。
檢查之後,若某個自訂控制項仍讀不到,就把缺少的結構補回元件,或保留清楚的人工操作路徑。不要讓使用者承擔一個看似完成、實際上仍靠猜測的自動流程。
下一次調整報表元件時,我會先看「匯出」是否仍與正確的報表連在一起,再看圖示和間距。即使暫時不接 agent,使用者也需要知道自己正要匯出哪一份資料。
來源與範圍
Agent Desktop 專案說明:桌面工具定位、無障礙 API、觀察與操作的範圍。
Snapshots and refs:快照參照、介面變動後的更新,以及舊參照仍可能解析的限制。
本文依已保存的官方實質正文搜尋摘錄整理;快照參照文件另於撰稿時複核。直接網頁全文擷取不可用,目前文件也未釘選特定版本。報表案例為假設,未安裝或測試 Agent Desktop,未進行無障礙稽核或成功率比較。延伸閱讀連結已取得同一公開網址的實質正文搜尋結果,不等同直接 HTTP、canonical 或搜尋收錄稽核。