agent-desktop:用无障碍树给任意编码 Agent 可靠的桌面 Computer Use

开源发现

agent-desktop:用无障碍树给任意编码 Agent 可靠的桌面 Computer Use

栏目:开源发现

摘要

Vercel Labs 开源的 agent-desktop(Rust/Apache-2.0)通过 OS 无障碍树做桌面 Computer Use:稳定 ref、默认无头不抢鼠标、多 Agent 光标;macOS/Windows/Linux;npm i -g agent-desktop。约 4648 星。

本文目录

让 AI Agent操作本机桌面,常见路子是「截屏 → 模型猜坐标 → 合成鼠标键盘」。分辨率、暗色模式、动画与遮挡一变,定位就飘,后台多 Agent还容易抢焦点。agent-desktop(GitHub:`vercel-labs/agent-desktop`)走另一条路:通过操作系统无障碍(accessibility)树读取任意应用的真实 UI结构,给可操作元素分配稳定 ref,再对 ref执行点击、输入、滚动等动作——默认不靠像素匹配。本文整理时仓库公开星标约 4648、fork约 344(以 GitHub实时数为准);主语言 Rust,许可 Apache-2.0;npm包名 `agent-desktop`,当前版本约 1.0.2;覆盖 macOS/Windows/Linux;官方文档站:https://agent-browser.dev/desktop 。

它本身不是 Agent,也不内嵌大模型:只做 CLI与 C库。观察 → 行动 → 再观察的闭环留在调用方(Claude Code、Codex、Cursor或你的脚本)里;每条命令打印一份 JSON信封后退出。

agent-desktop 官方 banner:项目视觉封面

图片来源:官方仓库 assets/banner.png

它解决什么问题

截图式 Computer Use对「看得见」很强,但对「指得准、可重试、不抢鼠标」往往吃力:同一按钮换主题后中心点就变;后台跑任务还要抢前台焦点;多窗口或多 Agent时更容易点错。agent-desktop读取 AX API(macOS)、UI Automation(Windows)、AT-SPI(Linux)暴露的控件树,把可交互节点写成带 `snapshot_id` 的限定 ref(例如 `@s8f3k2p9:e8`),动作优先走语义无障碍 API,默认无头:不必移动系统指针、也不抢焦点。UI变了会返回 `STALE_REF`/`AMBIGUOUS_TARGET`,要求重新 snapshot,而不是静默点到「碰巧同名」的另一行。

边界也很清楚:网页自动化请用同系列的 agent-browser;对本机启动的 Chromium/Electron应用,可在 launch时开 DevTools端口再交给 agent-browser。它只能看到应用真正暴露出来的无障碍树——没有树就谈不上像素猜位。

agent-desktop 官方 Tutorial 演示帧:桌面操作示意(开头)

图片来源:官方仓库 assets/Tutorial.gif 帧截取

它能做什么

  • 观察与行动:`snapshot`/`find`/`get`/`is`/`wait` 读树;`click`、`type`、`set-value`、`toggle`、`scroll`、拖拽等对 ref操作;共约 60 个命令名(其中 `key-down`/`key-up`/`mouse-down`/`mouse-up` 在守护进程就绪前会 fail closed)。
  • 稳定 ref与骨架钻取:密集应用可先 `--skeleton` 浅层地图,再 `snapshot --root @…` 只展开需要的区域;ref绑定产生它的 snapshot,裸 `@eN` 一律拒绝。
  • 后台与多 Agent:无头语义投递不偷鼠标;会话支持 `--cursor --multi-agent`,多 Agent可各自光标叠加显示,动作通过租约轮流执行。
  • Agent友好契约:统一 JSON信封(当前契约约 2.5),错误带 `code` 与 `disposition.retry`(仅 `safe` 才建议重试);内嵌 `skills get desktop`/`platform`,也可用 `npx skills add` 装入 Agent技能目录。
  • 分发与嵌入:`npm i -g agent-desktop`(Node ≥18,含各平台原生二进制);另有 GitHub Releases原生归档与 C FFI(`libagent_desktop_ffi`)供进程内调用。
agent-desktop 官方 Tutorial 演示帧:桌面操作示意(中段)

图片来源:官方仓库 assets/Tutorial.gif 帧截取

有什么好处

定位靠结构,不靠像素:主题、缩放、动画对语义点击影响更小;失败时可按错误码与 disposition决定是否安全重试。

适合长时间与并行 Agent:默认不抢焦点,适合「人在用电脑、Agent在后台点控件」;多 Agent光标与 session命名空间降低互相踩 ref的概率。

对编码 Agent开箱:内嵌技能与平台能力表随二进制版本绑定;安装后先跑 `agent-desktop status` 与 `skills get desktop` 即可对齐当前 OS的权限与支持面。

跨平台同一套命令名:macOS 13+、Windows 10 1809+/Server 2019+、Linux(如 Ubuntu 24.04+,glibc ≥2.35)共用 CLI面;平台差异写在各自 skills/文档页。

agent-desktop 官方文档站 OG 图(agent-browser.dev/desktop)

图片来源:官方文档 https://agent-browser.dev/desktop/og

vercel-labs/agent-desktop GitHub 社交预览图

图片来源:GitHub Open Graph for vercel-labs/agent-desktop

适合谁

适合已经在用 Claude Code/Codex/Cursor 等编码 Agent、想让模型可靠操作本机原生或 Electron应用(Finder、计算器、IDE、Slack等)的开发者;适合要做桌面 RPA/验收、又不想维护截图启发式定位的自动化工程师;也适合需要把桌面 Computer Use嵌进自有运行时(C/FFI)的平台团队。

若目标主要是浏览器 DOM,请优先 agent-browser;若应用完全不暴露无障碍树,本工具帮不上。安装与权限(macOS Accessibility、Linux AT-SPI会话等)以官方文档为准。权威来源:https://github.com/vercel-labs/agent-desktop ;文档:https://agent-browser.dev/desktop 。本文只做开源发现介绍,不替代官方 README、许可证与安全/隐私说明(snapshot、剪贴板与截图可能含桌面隐私内容,请勿随意上传)。