项目2026-11-03 · 智涌AI

agent-desktop 是什么:让 Agent 操作桌面 App 的 CLI

agent-desktop 头图:终端展示 npm 安装、snapshot 拿到 ref、按 ref 点击并再次快照,标注 v1.1.0、约 1.07 万 GitHub 星和 56 个可用命令

Vercel Labs 的 agent-desktop 让 AI Agent 读取并操作桌面 App:它读系统无障碍树,给每个可操作元素一个引用,Agent 按引用点击、输入,再拍一次快照核对结果,全程不靠像素识别。2026-11-03 12:13(北京时间)发布 v1.1.0,Apache-2.0,GitHub 约 1.07 万星,macOS、Windows、Linux 都能装。

它是什么

agent-desktop 是给 Agent 用的「电脑操作」CLI,另附一个 C 库。它和站内写过的 agent-browser 出自同一团队,思路也一样:先拿结构化快照,再按引用动手。区别在于对象从网页换成了 Finder、Slack、系统设置这类原生桌面应用。

仓库github.com/vercel-labs/agent-desktop
作者Vercel Labs
许可证Apache-2.0
热度GitHub 10,666 星(GitHub API,2026-11-03 14:09 北京时间);npm 2026-10-26 至 11-01 周下载 12,834;skills.sh 安装约 2.9K(同日抓取)
语言 / 运行要求Rust;npm 安装要求 Node.js ≥ 18。macOS 要开「辅助功能」权限;Linux 以 Ubuntu 24.04+ / GNOME 46 为主要目标,需在图形会话里装好 at-spi2-core
最新版本v1.1.0(GitHub 发布于 2026-11-03 12:13,北京时间;npm 同版本)

解决什么问题

让 Agent 操作桌面软件,常见做法是截图后让模型猜坐标再点。按钮挪了位置、分辨率变了、窗口被挡住,就会点错,而且点错了也不容易发现。agent-desktop 改读操作系统本来就有的无障碍树:每个按钮、输入框、列表项都有角色、名字和可执行动作,快照以 JSON 形式返回,每个元素带一个 ref_id。

引用写成 @s8f3k2p9:e8,前半段是快照编号。只写 @e8 会被 INVALID_ARGS 拒绝;界面变了以后再用旧引用,会返回 STALE_REF 或 AMBIGUOUS_TARGET。Agent 拿到的是一个明确的错误,可以重新拍快照,不会在点错位置后还以为成功了。

每条命令只输出一个 JSON 信封:成功时给 ok 和 data,失败时给 error,里面有 code、disposition,通常还有一条 suggestion。官方约定只在 error.disposition.retry 为 safe 时重试,Agent 照这个字段写重试逻辑就行。

怎么用

npm install -g agent-desktop
agent-desktop version
agent-desktop permissions --guide     # macOS:引导打开辅助功能权限
agent-desktop list-apps

官方示例里的观察—动作—再观察:

agent-desktop snapshot --app Finder -i      # 只列可交互元素,每个带 ref
agent-desktop click @s8f3k2p9:e8            # 按那次快照的 ref 操作
agent-desktop snapshot --app Finder -i      # 再拍一次确认结果

像 Slack 这种元素多的应用,先画骨架再钻进某一块,免得一次塞满上下文:

agent-desktop snapshot --skeleton --app Slack -i --compact
agent-desktop snapshot --root @s8f3k2p9:e3 -i --compact

有多个窗口时会报 AMBIGUOUS_TARGET,候选窗口 id 在 error.details 里,用 --window-id 指定其中一个。在 PowerShell 里,引用要加引号('@s8f3k2p9:e8'),否则 @ 会被当成展开运算符。

接入编程 Agent 有两种方式,二选一:

npx skills add https://github.com/vercel-labs/agent-desktop --skill agent-desktop

或者在 AGENTS.md 里写一句:使用前先跑 agent-desktop skills get desktop 和 agent-desktop skills get platform 并照做。说明文档打包在二进制里、跟版本走,升级后不会读到过期的说明。

上手要点

平台要准备什么限制
macOS辅助功能权限;截图另需「屏幕录制」Dock、菜单栏状态项从 v1.1.0 起可达
Windows与终端同权限级别的应用无需授权以管理员运行的应用只能读,需提权 Agent 才能输入;二进制未签名,浏览器下载会触发 SmartScreen
Linux用户图形会话 + at-spi2-core;X11 键盘需 XTESTSSH/TTY 看不到桌面应用;Wayland 下拒绝指针输入、不支持原生窗口控制

还有一个安装细节:npm 包的 postinstall 会把 Node 启动器换成指向原生二进制的链接,官方给的数据是每次调用约 21 ms;脚本被拦时走 Node 启动器,约 146 ms。npm 12 默认拦安装脚本,可以用 npm install-scripts approve agent-desktop 放行,或者安装时加 --allow-scripts。

引用带快照编号,界面一变旧引用就作废。旧引用会直接报 STALE_REF,Agent 据此重拍快照,而不是在点错的位置上接着操作。

v1.1.0 新增 type --interval-ms(按固定节奏输入),macOS 可以操作 Dock、菜单栏状态项和系统面板,修了 Windows 下命令退出时崩溃,三个平台的引用重新定位规则也改了。60 个命令名里 56 个可用,另外 4 个(key-down、key-up、mouse-down、mouse-up)要等有守护进程能负责释放按键后才开放。

适合谁,不适合谁

适合:想让编程 Agent 帮忙点桌面应用、做原生 App 冒烟测试或重复操作;想用结构化 JSON 和稳定引用,不想靠截图猜坐标;需要进程内调用的,可以接每个版本附带的 libagent_desktop_ffi C 库。

不适合 / 请改道:只操作网页的,用 agent-browser 或 Chrome DevTools MCP 更直接。只有 SSH 登录、没有图形会话的 Linux 服务器跑不起来。无障碍信息写得差的应用,快照里能用的元素会很少。对隐私敏感的场景,注意快照和截图会原样带出窗口内容;仓库里可选的 JEV 助手会把屏幕描述发给你配置的模型服务,它和原生 CLI 是分开的。

最后

想让 Agent 操作桌面应用,先 npm install -g agent-desktop,拿一个自己常用的应用跑一遍 snapshot → click → snapshot,再用 npx skills add 或在 AGENTS.md 里加一行说明,把它接进你的编程 Agent。

关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。