agent-desktop 是什麼?AI 透過無障礙樹操作電腦,並行工作有哪些限制?

agent-desktop 用作業系統無障礙樹讓 AI 操作桌面。看懂快照參照、並行鍵鼠、三平台權限與資料流向,區分原作者展示及實際限制。

Share
agent-desktop 官方示範封面,同時開著 macOS 備忘錄、提醒事項與計算機。
Chris Tate 發布的 agent-desktop 示範封面,同一桌面上可見備忘錄、提醒事項與計算機;這是作者展示,非本刊重測。 圖片來源:官方原文。

agent-desktop 處理的是一個常見摩擦:你請程式代理整理清單,它卻要你把桌面交出來,等它點完才能繼續工作。原因不只是模型想得慢,也可能是人與代理都在搶同一支滑鼠、同一個前景視窗。

10 月 31 日,Chris Tate 在 X 介紹 Vercel Labs 的 agent-desktop,展示代理各自處理桌面工作的情境。版本紀錄則顯示,三平台整合的 1.0 版在 10 月 27 日發布,10 月 30 日更新至 1.0.2,不能把原貼日期當成所有能力首次出現的日期。

它是命令列工具與原生函式庫,支援 macOS、Windows、Linux。核心讀取作業系統的無障礙樹,也就是應用程式提供的按鈕、輸入框與選單結構,讓代理對具名元素下指令,而不是先猜畫面座標。

官方把預設行為設為不搶焦點、不移動實體指標的操作模式,需要實體鍵鼠時才另行允許。這說明並行工作的方向,但不能推成任何軟體、任何動作都不會互相干擾。

對剛接觸電腦代理的人,門檻仍是系統是否提供對應能力、你願意授予哪些權限,以及代理按完之後能否確認結果。原作者展示也不是本刊對所有平台的重測。

因此,讀懂它要先從一次操作怎麼成立開始:先看見正確視窗,再取得當下元素的參照,操作後重新觀察。能把這個循環接好,並行才有可核對的基礎。

agent-desktop 先讀無障礙樹,再對元素操作

代理要按對按鈕,先得知道它在讀哪個應用程式、哪扇視窗。螢幕上看起來相似的兩個按鈕,可能屬於不同視窗,也可能一個可用、另一個尚未啟用。

無障礙樹可以想成應用程式交給作業系統的介面目錄。它描述元素的角色、名稱與狀態,原本也用來協助輔助工具理解介面。代理取得的是這份結構,不必把所有操作都轉成圖片辨識。

這個工具用命令列介面,也就是從終端機輸入指令的方式,提供這些能力。回傳資料採 JSON 結構,程式能直接讀取欄位,判斷成功、失敗、目標視窗與可操作元素。

這不表示它完全不支援圖片。工具另有截圖命令,但截圖和核心的結構化操作是兩種入口。能用元素名稱與參照定位時,沒有必要每次都猜某個按鈕在第幾個像素。

遇到資訊很多的應用程式,官方建議先讀淺層概覽,再深入特定區域。這像先看資料夾目錄、再開其中一層,避免代理在一次操作前讀入整個應用程式的所有內容。

同一套工具也提供 C 函式庫,讓其他程式直接呼叫原生能力,避免每次都另外啟動命令列程式。因此,選擇函式庫改變的是工程整合入口,代理仍要自己判斷下一步。無論走哪個入口,仍要讀回相同目標的狀態。

不過,結構化輸入仍取決於軟體提供了什麼。如果介面資訊不足,或目標動作不在平台支援範圍內,就不能單憑「支援桌面」期待它理解所有畫面。結構縮小了猜測範圍,卻仍需要處理視窗與元素改變。

agent-desktop 官方示範封面,同時開著 macOS 備忘錄、提醒事項與計算機。
Chris Tate 發布的 agent-desktop 示範封面,同一桌面上可見備忘錄、提醒事項與計算機;這是作者展示,非本刊重測。 圖片來源:官方原文。
Chris Tate 的 agent-desktop 官方示範,展示桌面應用程式的並行操作;非本刊重測。 來源:官方原始貼文。

一個參照只對應當下快照,畫面變了就重新看

它的元素參照帶有快照識別碼,不是可以永久重用的按鈕編號。快照可以理解為此刻讀到的一份介面狀態,參照則指向這份狀態中的特定元素。

官方範例的流程是先執行 snapshot 讀取視窗,再對快照裡的參照操作,最後再次取得快照驗證。像是按下某個清單項目,不只要知道指令送出,也要看新的介面是否真的出現預期內容。

假設代理正整理待辦清單,取得某一列的參照後,人把那一列刪掉。它不能因為新的一列剛好移到同樣位置,就把刪除動作繼續套上去。那已經是另一個目標。

工具對過期參照會回報 STALE_REF,目標不明確則可能回報 AMBIGUOUS_TARGET。這時應重新觀察,再決定下一步,而不是把同一條指令連續送到成功為止。

裸寫一個沒有快照範圍的元素編號也不被接受。這個限制讓呼叫者必須說清楚,自己要操作的是哪次觀察裡的哪個元素,減少把舊判斷當成當前狀態的機會。

因為多個視窗可能同時符合條件,所以還需要進一步指定視窗識別碼。視窗名稱相同不等於工作內容相同。代理要先消除歧義,才有理由繼續操作。

參照也有工作階段範圍。即使兩份回傳看起來都有相似的元素編號,代理仍要沿用產生它的工作階段設定,不能把別項工作的參照直接搬過來。範圍與快照一起存在,才能分清哪個代理正在對哪次觀察負責。

工具的錯誤回傳還會附上恢復提示。呼叫者應先看重試是否被標為安全,再選擇重新觀察或停止。某個動作沒有得到預期回應時,重送可能造成重複新增,不能只把成功回應當成唯一值得讀的資訊。

這套設計讓「再看一次」成為工作流程的一部分。操作後再觀察,才能把指令已送出與任務已完成分開,也比較容易判斷錯誤發生在定位、動作還是應用程式回應。

並行游標背後,是盡量不碰你的實體鍵鼠

多個代理能否共用桌面,關鍵在操作會不會改變另一個人的輸入位置。如果每個代理都必須把視窗拉到前景、移動滑鼠,再輸入文字,人與代理就很容易互相打斷。

預設會透過無障礙介面執行參照動作,官方稱為 headless 模式。這裡的意思是避免前景啟用與合成實體輸入,不能理解成完全不需要桌面或圖形工作階段。

當代理透過元素參照設定欄位,它不一定需要把實體滑鼠搬過去。原貼展示的並行工作,因此有一個合理基礎:盡可能讓不同工作以各自的元素與範圍進行。

但若某個動作需要實體鍵盤或滑鼠,則要使用允許這類行為的 headed 模式。工作重新涉及前景焦點之後,就要考慮當下誰在使用那扇視窗、誰的輸入可能被打斷。

即使兩個動作都不搶滑鼠,也可能修改同一份資料。假設一個代理新增待辦,另一個代理同時重新排列同一張清單,介面參照與資料狀態仍可能互相影響。

因此,並行能力比較適合拿來減少互不相干工作的輸入衝突,而不是證明所有工作可以毫無協調地一起做。需要實體輸入或共用資料的例外愈多,工作分工就愈要明確。

同樣支援三系統,權限與可用動作仍不同

安裝成功還不代表代理已能讀取和操作你要的視窗。桌面工具會受作業系統權限與圖形環境影響,不能只確認套件版本就開始評估效果。

macOS 的基本操作需要「輔助使用」權限。截圖另外需要螢幕錄製權限,部分通知中心操作也涉及自動化權限。官方提供權限狀態與設定引導,方便確認目前缺哪一項。

Windows 的限制與程式執行權限層級有關。一般終端機啟動的代理,不能直接當成有權控制以系統管理員身分執行的程式。要對這類程式輸入,代理本身也必須在對應層級。

Linux 則需要使用者的圖形工作階段與無障礙服務。官方主要目標是 Ubuntu 24.04 以上搭配 GNOME 46,並列出 glibc 2.35 的下限與所需套件。

如果只是連上沒有桌面工作階段資訊的 SSH 或純文字終端機,就看不到那些應用程式。不同視窗系統也有差異,Wayland 的實體指標輸入與原生視窗控制不能直接套用 X11 的預期。

安裝入口目前包括 npm 套件與 GitHub 原生執行檔。官方 Homebrew、Scoop 套件仍在送審,不應把正在申請的預設目錄入口寫成已經可用。

在 macOS 上,命令會重用私有的指令處理程序,保留原生無障礙物件。官方用這個設計避免已移除的清單列,悄悄被解析成另一列同識別碼的項目。這再次說明,表面文字相同不等於元素仍是原來那一個。

要評估的不是平台名稱而已,而是實際桌面環境與目標動作的交集。若能力不符,就先調整工作方式,避免把環境問題誤判成模型不會操作。

工具在本機,桌面資料仍可能進入代理紀錄

原生工具不要求遠端模型服務,但呼叫它的代理如何處理資料是另一層問題。你使用的程式代理可能把工具回傳內容送往自己的模型供應商,這與工具本身在哪裡執行不同。

快照裡可能有視窗標題、欄位內容、通知與剪貼簿資料。截圖則直接保留畫面。這些內容足以讓代理理解工作,也可能包含與當前任務無關的私人資訊。

官方另有可選的 JEV 輔助工具,會把工作目標與畫面描述傳給設定的模型供應商。它與原生命令列分開,不能因為原生工具不要求雲端,就推論所有可選組合都只在本機處理。

工作紀錄也需要分清楚。把結構欄位中的敏感字刪掉,不代表同一份證據裡的截圖已經安全。原始畫面或除錯資料仍可能保留內容。

比較實際的做法,是先限制任務只讀必要的應用程式與區域,並確認代理紀錄要放在哪裡。若只是整理測試清單,就沒有必要順手讀取其他視窗、通知或整個剪貼簿。

工具原始碼採 Apache 2.0 授權,可依授權條件使用。開源工具本身的取得方式,則和呼叫它的代理方案、模型費用、硬體成本分開計算,不能混成一個全部免費的承諾。

第一次試用,從可觀察的小任務開始

適合入門的第一個任務,應該能在操作前後清楚看出差異。例如在自己建立的測試備忘錄中新增一項待辦,就比直接整理整個工作帳號容易核對。

這是假設的試用方式,不是本刊已完成的實測。你可以先讓代理辨識那扇視窗,確認它讀到的是測試內容,再要求只新增一項文字,最後回讀新增後的狀態。

若文字出現在錯誤欄位,要回頭看元素定位。若指令沒有權限,就先處理系統設定。這兩種問題都不應靠增加代理數量解決。

單項流程能穩定辨識與驗證後,再試另一個獨立視窗的工作,觀察是否干擾你正在輸入的內容。若需要切換實體輸入模式,就重新界定哪些動作可以一起做。

選擇工具時也可以把網頁與桌面分開。若任務本來就有成熟的瀏覽器操作介面,未必需要改走整台電腦的控制入口。桌面工具較有意義的地方,是工作確實跨到原生應用程式,且這些程式提供可讀取與操作的結構。

試用紀錄最好留下操作前後的必要狀態,而不是只保存代理最後一句完成。之後若介面更新,你才有辦法對照是元素名稱改了、視窗範圍變了,還是同一個目標在新版本中不再支援原來的動作。這比重複同一句提示詞更容易找出差異。

這樣的順序,可以把原作者並行展示轉成你自己能驗證的使用條件。對低風險目標完成觀察、操作與驗證,再擴大並行範圍才有意義。

延伸閱讀:Cursor Computer Use:AI 能開 iOS 模擬器驗收,哪些檢查還要自己做?

延伸閱讀:HyperFrames Studio 新增 Computer Use:讓 AI 操作真實 App,再做產品影片

常見問題

agent-desktop 本身就是一個 AI 模型嗎?

它是讓代理讀取與操作桌面的工具,不是新的通用推理模型。要決定工作目標、理解工具結果與安排下一步,仍需由使用它的代理負責。

不用移動滑鼠,代表我可以讓任何工作一起跑嗎?

不代表。預設參照操作盡量避免搶實體鍵鼠,但共用資料、需要前景焦點的動作,以及平台不支援的介面仍需協調。原作者展示不能取代你對實際應用程式的驗證。

本機工具一定不會把資料傳出去嗎?

原生工具不要求遠端模型,但呼叫它的代理及可選輔助服務,仍可能把回傳內容交給模型供應商。判斷資料流向時,要連同代理設定和紀錄方式一起看。

如果你想追蹤 AI 代理如何接進實際開發與日常工作,歡迎免費訂閱 AI 郵報。

資料來源