AI 幫你操作電腦時,除了辨識截圖,也可以進入輔助模式直接讀取按鈕、文字欄位與選單的結構,是個非常特別且專業的做法,Vercel Labs 開源的 agent-desktop 就提供這條路:把作業系統的無障礙樹整理成 AI 能讀取的資料,讓 Agent 找到元件、執行動作,再確認結果。
這種做法可以減少對畫面座標的依賴,也讓部分操作透過系統介面完成,取決於應用程式提供的無障礙資訊,以及該動作能不能透過語意介面執行,不過對於遊戲、畫布和自行繪製的控制項,仍可能需要截圖協助。
內容目錄
agent-desktop 是工具,負責判斷的仍是 AI Agent
agent-desktop 提供命令列工具與程式介面,本身沒有內建負責理解任務的 AI 模型,你可以把它交給既有的 Agent 使用,由 Agent 決定下一步,再呼叫工具讀取桌面或操作元件。
無障礙樹原本就用來協助螢幕閱讀器等輔助工具理解介面,它描述的是元件的角色、名稱、狀態與可用動作。
例如一個按鈕可以有名稱與 Click 動作,文字欄位則可能提供讀取或設定內容的能力,agent-desktop 會把這些資訊轉成結構化輸出,並替可操作元件建立參照。
安裝前先確認平台與桌面環境
依v1.2.0 官方專案列出的平台需求,macOS 需要 13 以上,支援 Intel 與 Apple Silicon。Windows 需要 Windows 10 1809 以上,支援 x64 與 ARM64。Linux 列出的環境是 Ubuntu 24.04 以上,支援 x86_64 與 aarch64,以及 X11 或 Wayland。
Linux 還需要正在運作的圖形桌面工作階段與 AT-SPI 無障礙服務。只有 SSH 終端機、沒有桌面的伺服器,不能直接當成已準備完成的桌面操作環境,可先查看Linux 平台文件,確認工具能連到目前使用者的桌面。
安裝與基本檢查指令
先準備 Node.js 18 以上與 npm。以下採用 npm 全域安裝,將版本固定為本次查核時已發布的 1.2.0,方便對照。先確認目前環境的版本:
node --version
npm --version
接著安裝並檢查命令是否可用:
npm install -g [email protected]
agent-desktop version
agent-desktop status
這裡有個容易看錯的地方。JSON 最外層的 version 是輸出格式版本,不能直接當成工具版本。執行 version 後,應查看 data.version。status 則用來確認權限與 supported_surfaces。詳細安裝方式可對照官方安裝文件。
日後要更新到 npm 上的最新版,可執行以下指令,更新後再次檢查版本與狀態:
npm install -g agent-desktop@latest
agent-desktop version
agent-desktop status
本文於 2026 年 11 月 5 日核對官方文件、GitHub v1.2.0 發布與 npm 套件版本。以下是依官方介面整理的操作流程,尚未在本文中逐一實測三種作業系統的桌面動作。
macOS 權限要給實際啟動工具的程式
macOS 可以先查詢權限,再開啟引導:
agent-desktop permissions
agent-desktop permissions --guide
依macOS 官方說明,輔助使用權限通常要授予啟動工具的宿主程式,例如 Terminal、iTerm 或使用中的 Agent 應用程式。如果系統另外列出工具本身,也要依實際提示處理。完成後重新執行 status,確認 accessibility 狀態為 granted。
螢幕錄製權限與讀取無障礙樹是不同項目。需要截圖時,才依該功能的要求處理螢幕錄製權限。不要因為安裝成功,就省略權限與可讀介面的檢查。
第一次操作:讀取、執行、再確認
先用容易辨識、操作可還原的應用程式測試。以 macOS Finder 為例,先開啟 Finder,再執行:
agent-desktop snapshot --app Finder -i
snapshot 會回傳介面樹與元件參照。-i 會聚焦可互動元件,適合先縮小閱讀範圍。如果幾個同名按鈕缺少上下文,可移除 -i 重新讀取,或依官方文件逐步展開需要的區域。
目前參照格式會帶上快照 ID,例如 @s8f3k2p9:e8。其中 s8f3k2p9 是快照 ID,e8 是該快照中的元件編號。實際操作時,必須從剛取得的輸出複製完整 ref_id,並確認它對應的名稱與動作。下面這行只是語法範例,請替換成你的實際參照後再執行:
agent-desktop click '@s8f3k2p9:e8'
不能把這段簡化成 click e8 或 click @e8,也不要把範例參照當成自己電腦上的固定按鈕。快照與參照文件說明了目前的格式與生命週期。當介面改變、參照過期或目標不明確時,應重新觀察,依新的輸出決定下一步。
動作完成後,再讀取介面確認預期結果:
agent-desktop snapshot --app Finder -i
例如你原本要開啟某個資料夾,就確認視窗或內容確實切換。若應用程式尚在載入,可以依目標狀態使用工具的 wait 功能,而不是一直重複點擊。動作回傳成功,只代表某個執行步驟成功,仍需要讀回結果。官方的快速入門以計算機示範了這個完整循環。
背景操作能做到什麼?
部分元件動作可以透過無障礙 API 直接送出,不必移動實體滑鼠。不過,每個平台與控制項支援的動作不同,需要實體鍵盤或滑鼠的操作,仍可能使用焦點與桌面輸入。遇到這些情況,應依文件選擇 headed 模式,並安排好操作時機。
如果你已經用過PyAutoGUI 操作滑鼠與鍵盤,可以把無障礙樹視為另一種定位依據。能找到有意義的元件時,先利用元件資訊。遇到缺少結構的畫面,再評估截圖與座標操作。
多個 Agent 可以共用電腦,仍要協調工作
agent-desktop 的 session 用來整理快照、參照與操作紀錄。session 並不是另一個作業系統桌面,也不會自動隔離應用程式或檔案。建立不同 session,無法防止兩個 Agent 同時修改同一份文件。
依官方 session 文件,多 Agent 游標可以同時呈現,但實際互動會透過 interaction lease 輪流執行。建立 session 後,也必須在後續命令帶上對應 session,或設定文件規定的環境變數,才會使用該範圍。
分工時,最好明確指定誰操作哪個應用程式、哪份文件,以及何時交接。如果正在設計多 Agent 工作流程,除了工具能否連接,也要處理共同狀態與寫入衝突。需要獨立桌面或限制檔案存取時,則要另外配置虛擬機或其他隔離環境。
先選對工作,再決定要不要操作桌面
有標準按鈕、文字欄位與選單的桌面程式,適合先測試無障礙樹。遊戲場景、畫布或大量自訂繪圖介面,則要先確認能讀到多少資訊。同一個應用程式,也可能只有部分功能適合這種操作方式。
如果工作本身已經有 API 或專用命令列工具,直接處理資料往往更清楚。例如產生或修改 Office 文件,可以先評估OfficeCLI 的文件操作流程。需要跨越既有桌面介面時,再讓 agent-desktop 補上這一段。
常見問題
agent-desktop 自己就是 AI 模型嗎?
不是。它提供桌面觀察與操作工具,理解任務、規劃步驟與決定何時呼叫工具,仍由外部 AI Agent 負責。
agent-desktop 完全不需要截圖嗎?
有完整無障礙資訊的介面可以先靠元件結構操作。遊戲、畫布與缺少語意資訊的控制項,仍可能需要截圖與其他操作方式。
Linux 只用 SSH 登入可以操作桌面嗎?
工具需要連到使用者的圖形工作階段與 AT-SPI 服務。只有 SSH 終端機、沒有可連接的圖形桌面,並不足以完成桌面操作。
不同 session 會各自擁有獨立桌面嗎?
不會。session 主要劃分快照、參照與紀錄範圍。多個 Agent 仍可能共用應用程式與檔案,需要額外協調,獨立桌面則要另行配置。