让 AI 替你点鼠标操作电脑,现在多了一条不看屏幕的野路子。2026 年 10 月 30 日,Vercel Labs 在 Apache-2.0 协议下发布了开源桌面操控工具 agent-desktop 的 v1.0.2 版本。它完全抛弃了屏幕截图和视觉大模型,直接读取操作系统的原生无障碍树(Accessibility Tree),把桌面软件拆成带动作引用(ref)的 JSON 快照喂给 Agent。工具切中了终端 Coding Agent 缺手脚的痛点,但宣传里最高省下 96% Token 的账单,你得先看清它的分母是谁。
56 个命令搭起的无头积木,怎么给 Electron 刮骨
这个项目最早住在个人开发者仓库 lahfir/agent-desktop 里,随后被收编并重定向进 Vercel Labs 官方名下。它延续了 Vercel 在浏览器端做 agent-browser 的思路,用 Rust CLI 和 C 语言库做成纯粹的 Unix 命令行积木。它不内置大模型,也不自己维护循环,每次调用只吐出一段 JSON 就退出,把观察、行动、验证的闭环完全交给上层的 Claude Code 或 Cursor。

为了跨平台而且不吃 GPU,agent-desktop 在底层做了一层严格隔离:核心库只通过统一的接口标准通信,每个编译出来的二进制文件只负责驱动一个系统——在 macOS 走 AX API,在 Windows 走 UI Automation,在 Linux 走 AT-SPI。目前官方文档列出的支持范围覆盖了 macOS 13+、Windows 10 1809+ 或 Server 2019+、Ubuntu 24.04+(含 x64 与 ARM64 架构)。它的命令表里有 60 个名字,但 key-down、key-up、mouse-down、mouse-up 这 4 个长按类输入命令目前拒绝执行,实际能干活的是 56 个命令。
直接读系统无障碍树有个老毛病:碰上 Slack、VS Code、Notion 这类密集型 Electron 应用,底层动辄暴露出几千个节点,全量转储瞬间就能把模型的上下文撑爆。agent-desktop 的解法是渐进式骨架遍历:
- 加上
--skeleton参数后,快照只往下读 3 层深度,深层容器只报告子节点数量并给一个下钻引用,需要看哪块再用snapshot --root局部展开。 - 每个可操作元素都会分到一个像
@s8f3k2p9:e8这样带快照 ID 的完整引用;裸写@e8会被直接拒绝,界面一变就会返回过期或目标模糊错误,绝不瞎猜。 - 所有动作默认走无头后台模式,不挪动你的物理鼠标、不抢当前窗口焦点,而且每次操作会自动等待最多 5,000 毫秒直到目标可见可用。
| 对比维度 | agent-desktop (Vercel Labs) | Claude Computer Use | OpenAI Computer Use | Microsoft UFO² |
|---|---|---|---|---|
| 定位形态 | CLI 与 C 语言库工具 | API 客户端工具集 | API 工具 | 完整 Agent 框架 |
| UI 感知方式 | 系统原生无障碍树 | 屏幕截图 | 截图或代码接口 | UIA + 视觉混合 |
| 鼠标焦点占用 | 默认无头后台,不抢焦点 | 抢占,像素级点击 | 抢占,像素级点击 | GUI + API 混合 |
| 单次观察成本 | 273 tokens (Apple Maps 骨架自测) | 约 1,000 至 1,800 tokens/图 | 未公开 | 未公开 |
省下 96% Token 的账,分母到底是谁
看到上面那张对比表,十个读者有九个会觉得:用 Vercel 这个工具替代 Claude 截图方案,能省掉 78% 到 96% 的 Token。我更在意的是这组数字背后的对比基准错位。

开发者在 Hacker News 社区披露的自测数据里,78% 至 96% 的缩减比例,拿来对比的分母是完整无障碍树转储(full-tree dumps),根本不是 Claude 或 OpenAI 的屏幕截图。比如在 Apple Maps 里,单次观察从全量树的 3,811 tokens 降到了骨架树的 273 tokens;一个 52 步的模拟任务从 198k 降到了 31k tokens。这证明的是骨架折叠比傻瓜式全量导出省钱,而不是比视觉截图省下九成开销。
跟纯视觉派算细账,结论要复杂得多。Anthropic 官方文档写得很明白,Claude 每次截图大约消耗 1,000 到 1,800 个输入 Token,而且每次请求还要额外背上约 4,500 个 Token 的工具集定义开销。单看一次静态观察,273 tokens 的骨架快照确实比截图便宜一大截。但一旦进入深层嵌套的复杂软件,Agent 为了找一个按钮需要反复执行 --root 局部下钻,碰上 UI 刷新报错还得重抓快照;几轮折腾下来,累计的 JSON 文本账单未必永远比一张截图便宜。更何况,目前项目仓库里的基准测试(locator benchmark)只验证了合成 Chromium/Electron 树上的内部定位器延迟和正确性,还没有跑过端到端的真实任务成功率对比。
当底层 API 开始撒谎,结构化路线撞上南墙
把桌面操控全押在系统无障碍接口上,听着像抓住了确定性的尚方宝剑。但工程老手都知道,桌面操作系统的历史包袱,从来不会因为你套了一层 Rust 外壳就自动消失。

结构化接口省下了看图的钱,却省不掉跟残缺底层斗智斗勇的命。
先看跨平台的水位差。虽然 v1.0.2 的文档把三大系统列得整整齐齐,但在早期 Hacker News 的 Show HN 发布帖里,作者曾坦承当时只有 macOS 真正可用,Windows 和 Linux 还在路线图上。即便现在补齐了编译支持,Linux 端的运行依然强依赖图形会话和 at-spi2-core,而且在 X11 与 Wayland 两种显示协议下存在明显的功能表现差异。指望一套命令在三端拿到毫无差别的丝滑体验,现在还太早。
更要命的是无障碍树本身的失明与撒谎。《韩非子》里讲,一手独拍,虽疾无声。agent-desktop 的引用校验设计得再严密,也得桌面应用主动配合写好无障碍标签才行;碰上自绘 UI 控件、游戏界面或者画布类应用,无障碍树直接就是瞎的。哪怕在支持最成熟的苹果生态里,agent-desktop 官方的 macOS 技能指南也专门写了一条警告:系统的 AX API 有时候会明确返回操作成功,但界面上其实毫无反应。这意味着所谓的确定性操作依然存在假阳性静默失败,Agent 每次点完按钮,还是得乖乖再抓一次快照来验尸。
- 风险.遇到未暴露无障碍标签的自定义画布控件,或碰上 macOS AX API 返回成功但界面未响应的假阳性时,纯无障碍树方案会直接卡死或空转。
回看过去两年各家在 OSWorld 基准上的死磕:2024 年 10 月 Anthropic 拿纯截图方案的 Claude 3.5 Sonnet 跑出 15 步 14.9%(50 步 22%)的成功率,到 2025 年 3 月 OpenAI Operator 把成绩推到 38.1%,视觉派虽然笨重烧钱,胜在只要人眼能看见就能点。这就像当年移动互联网早期,大家争论该做纯原生 App 还是 HTML5 混合开发,最后活下来的大厂全选了原生壳子嵌 Web 页面的折中路子。
Vercel Labs 这次把个人项目收编成官方轮子,还顺手塞进了 launch --cdp 这种能直接给 Electron 网页内容打开调试端口、联动自家 agent-browser 的贴心暗门,算盘打得很响。它最直接的受益者是写代码的终端 Agent 开发者——不用配 Docker 虚拟桌面,也不用调昂贵的视觉接口,一行 npm install -g agent-desktop 就能让纯文本模型在后台静默操控本地软件。但到了真正的工业级场景里,先用 273 tokens 的骨架树低成本探路,一旦撞上无障碍死角或接口假阳性,立刻切回视觉截图兜底,才是接下来 OSWorld 跑分榜和生产环境里最值得盯紧的收敛方向。
