Agent Desktop はアクセシビリティの木を読んで、エージェントに正しく押させる

要約

エージェントがデスクトップで詰まるのは、画面を読めないからではなく狙った場所を押せないからだ。Agent Desktop はアクセシビリティの木を読み、要素を参照で指し、既定ではマウスもキーボードも占有しない。

おすすめ
ソフト名
Agent Desktop
バージョン
1.0.2
料金
無料
オープンソース
オープンソース
OS
WindowsmacOSLinux
更新日時
2026-11-03 23:00

エージェントにパソコンを操作させるとき、実際に詰まるのは画面が読めないことではなく、狙ったところを押せないことだ。スクリーンショットから座標を割り出すやり方は、解像度が変わり、ウィンドウが動き、配色が変わった時点で、保存しておいた座標が全部使えなくなる。Agent Desktop は別の道を取る。ピクセルを見るのをやめ、OS がもともとアプリに伝えている構造をそのまま読む。

同じ仕組みで三つのデスクトップ環境を扱える
同じ仕組みで三つのデスクトップ環境を扱える

読むのはアクセシビリティの木

Agent Desktop は Vercel Labs が公開しているオープンソースのデスクトップ操作ツールで、形としてはコマンドラインと C ライブラリの組み合わせ、Apache-2.0 ライセンスだ。やっていることは言葉にすれば単純で、画面を撮らない。OS が支援技術のために用意しているアクセシビリティの窓口に問い合わせ、いま開いているアプリの画面構造を取り出す。どんなボタンがあり、どの入力欄があり、どの一覧項目があり、それぞれの要素がどんな操作を受けるのか。人がキーボードやスクリーンリーダーで届くものは、ここでも届く。

この道の利点は安定していることだ。要素は構造で位置を決めるので、ウィンドウの大きさが変わっても、表示倍率が変わっても、配色が変わっても、同じ要素は同じ要素のままだ。代償は、構造がそろっているアプリしか見えないこと。画面をすべて自前で描き、アクセシビリティの情報をまったく出さないプログラムは、この道具には真っ白な画面にしか見えない。

スナップショット、操作、またスナップショット

作業のループは三つの段階で回る。まずスナップショットを要求すると、操作できる要素の一つひとつに参照の識別子が付いた構造化データが返る。次にその識別子に対して操作を出す。クリック、入力、値の設定、チェックの切り替え、スクロール。終わったらもう一度スナップショットを取り、画面が実際にどう変わったかを確かめる。この流れのどこにも座標を押す段階はないので、座標を推測するという失敗の仕方も起きない。

参照はスナップショットに結び付いている。ここの設計は慎重で、前のスナップショットの識別子は新しい状態では無効になっていることがあり、その場合は適当な場所を押すのではなく、参照が切れたこと、対象が一つに定まらないことをはっきり返す。複数のウィンドウがあるときも同じで、候補になるウィンドウを並べ、どれかを指定するまで待つ。

実演ではエージェントが画面を読みながらファイル作業を進める
実演ではエージェントが画面を読みながらファイル作業を進める

既定ではマウスもキーボードも奪わない

この細部は独立して書く価値がある。既定はヘッドレスで動く。操作はアクセシビリティの窓口から出され、ポインタは動かず、ウィンドウを最前面に引き出すこともない。つまり背後でエージェントがどこかのアプリを動かしている間も、同じパソコンで別の作業ができる。物理的な入力を再現したいときは、明示的に切り替えを入れる必要があり、そこで初めてポインタが動き、キー入力が注入される。

さらに、コマンドラインの呼び出しは毎回別のプロセスで走る。常駐せず、背後にサービスを残さず、終われば消える。作業を複数の段階に分け、外部の仕組みが順に呼び出す使い方には、この状態を持たない作りがむしろつなぎやすい。

三つの環境、三つの土台

macOS、Windows、Linux のいずれも対象で、土台の窓口はそれぞれ別だ。macOS はシステムのアクセシビリティの経路を使い、初回は権限を手で与える必要がある。Windows は端末と同じ整合性の段階であれば、普通のアプリの操作に追加の許可は要らない。Linux はグラフィックのセッションとアクセシビリティのバスに依存し、X11 と Wayland では届く範囲が少し違う。できることもそろってはいない。通知の読み取りは三つとも可能だが、システムトレイやメニューバーのアイコンのような領域は、それぞれ対応の幅が異なる。

コマンドの範囲は広い。名前は全部で六十あり、そのうち五十六はそのまま実行できる。残る四つはキーやマウスのボタンを押し続けるもので、背後の常駐プロセスが離すことを保証できるまで実行されない。スナップショット、検索、値の取得、画面撮影は観察側。クリック、入力、設定、チェック、スクロールは操作側。ほかにウィンドウ管理、クリップボード、通知、待機、まとめ実行がある。

出力はプログラムが読む前提

どのコマンドも、形のそろったデータを一つだけ返す。成功なら結果を、失敗ならエラーコード、対処の仕方、提案を一つ添える。エラーには「この失敗を安全にやり直せるか」を専用の項目で示すので、呼ぶ側はそれを見て、やり直すか、対象を変えるか、止めて報告するかを決められる。自動化を書く人にはこの取り決めが有り難い。失敗したらどうするかを、推測から項目の読み取りに変えてくれる。

同じ窓口は C ライブラリとしても提供され、各環境向けの動的ライブラリが付く。プログラムは自分のプロセスの中から直接呼べるので、操作のたびに子プロセスを起こさずに済む。エージェントに読ませるための説明文書も用意されていて、このループの回り方を自分で覚えられる。

誰に向いているか

普通の利用者向けのソフトではない。画面はなく、何でも一度で終わるボタンもない。手で押すことしかできないクライアントをまとめて処理する、社内の道具にプログラムから触れる入口を付ける、試験の環境でエージェントに本物の画面を順にたどらせる。そんなふうにデスクトップの操作を自動化の流れに組み込みたい人に向く。助手にファイルを片付けてもらうだけでいいなら、これは層として低すぎる。再現でき、検証でき、失敗したときに居場所が分かる自動化が要るなら、ここがその層になる。

プロジェクトは十月の終わりに 1.0.2 を公開し、x64 と ARM64 の両方のネイティブパッケージを用意した。Vercel Labs の実験的なオープンソースとして、窓口はまだ変わりうる。だが向きははっきりしている。エージェントはデスクトップを操作できるのかという問いを、画像認識の確率の問題から、構造化された窓口の決定性の問題へ移すことだ。

Agent Desktopダウンロード
対応OS: Windows macOS Linux