AI 操作桌面软件,从猜按钮到读按钮
Vercel Labs 开源 agent-desktop,AI 直接读桌面应用的无障碍树,拿到带 ref 的 JSON,点完再看结果,循环执行。跨 macOS、Windows、Linux,后台运行不抢焦点,自带 MCP,Apache 2.0。
Vercel Labs 开源了 agent-desktop。Vercel 是做前端部署那家,Labs 是它的实验项目池。这个项目一句话说清楚:让 AI 操作桌面应用,不用截图,不用像素匹配,不用抢你的鼠标。
过去两年讲 computer use,主流做法是给模型喂屏幕截图,让它猜按钮在哪,点一下,再截一张。这条路能跑,但成本高、速度慢、容易点歪,你的光标还会被拽来拽去。
agent-desktop 换了思路。它读取操作系统的无障碍树(accessibility tree),把当前应用的 UI 结构转成 JSON 返回,每个可操作元素带一个 ref。agent 对着 ref 点击或输入,再读一次 UI 确认结果,循环下去。

返回的树长这样:
{
"version": "2.6",
"ok": true,
"command": "snapshot",
"data": {
"app": "Finder",
"snapshot_id": "s8f3k2p9",
"ref_count": 59,
"complete": true,
"tree": {
"role": "window",
"name": "Downloads",
"children": [
{ "role": "treeitem", "name": "Documents", "ref_id": "@s8f3k2p9:e8", "available_actions": ["Click"] }
]
}
}
}
ref 属于某一次快照。UI 变了,旧 ref 会报 STALE_REF 或 AMBIGUOUS_TARGET,得重新 snapshot。这个设计逼着 agent 看结果再动手,而不是闭眼连点。
关键一点:agent-desktop 内部没有模型。它是 CLI 和 C 库,是手,不是脑子。接上 Claude、GPT 或别的模型,才有完整的自动化。
几个实际能力:
- 后台默认。ref 操作走无障碍 API,不移动指针、不抢焦点。加
--headed才允许物理输入。 - 三平台:macOS 13+ 走 AX API,Windows 10 1809+ 走 UI Automation,Linux Ubuntu 24.04+ 走 AT-SPI。
- 60 个命令名,56 个可操作命令,覆盖观察、点击、输入、窗口、通知、剪贴板、等待、会话。
- 原生 MCP,
agent-desktop mcp把每个命令暴露成 MCP 工具,返回 JSON。 - Apache 2.0,npm、Homebrew 都能装。
用法很直白:
npm install -g agent-desktop
agent-desktop status
agent-desktop snapshot --app Finder -i
agent-desktop click @s8f3k2p9:e8
agent-desktop snapshot --app Finder -i
三行是一个完整回合:看、动、再看。
无障碍树这条路有个明显边界:不是所有应用都把它好好暴露出来。自绘 UI、Canvas、Electron 里套 WebView、游戏,树里可能是空的,或者只有一层壳。碰到这类应用,截图派还得回来。agent-desktop 解决的是软件愿意被读的那部分桌面,不是全部桌面。
另一个细节来自 README:快照、剪贴板、截图、命令输出都可能含隐私内容,别往公共日志和上传里塞。
有意思的是这层基础设施的来历。无障碍树原本是为视障用户和辅助技术准备的,现在成了 AI 的桌面接口。一个为可访问性建的东西,顺手解决了一部分自动化问题。
有网友判断,下一代 power user 不是会用 100 个软件的人,是能让 AI 替自己用这 100 个软件的人。这个说法有点绝对,但它点到了变化的方向:软件过去为人设计,现在开始为 agent 设计接口。
至于第一个被改掉的岗位是什么,现在猜还早。能确定的是,桌面自动化的门槛,从会写脚本降到了会接一个模型。
发布时间: 2026-11-08 01:31