现在的 computer use,大概率是这样跑的:给模型一张桌面截图,让它输出像素坐标,点一下,再截一张图确认。Anthropic 自己的文档把这条路的代价写得很直白——长链路里每张截图约 1,000–1,800 input token,光是声明 computer 工具集本身还要再加约 4,500 token(Anthropic computer use 文档)。截图既是模型的"眼睛",也是账单上最大的那一栏。
另一条路是彻底不看像素:读操作系统的无障碍树。Vercel Labs 名下的 agent-desktop 走的就是这条——它读 macOS 的 AX API、Windows 的 UI Automation、Linux 的 AT-SPI,把每个能交互的元素变成一个带 ref 的 JSON 节点。模型拿到的不是图片,是一棵树。
1.1.0 的重点不是功能,是拒绝
11 月 3 日,agent-desktop 放出 1.1.0(release notes)。CHANGELOG 里新增功能不少:macOS 上能观察 Dock 和菜单栏状态项、能观测没有窗口的后台应用、type 支持按间隔逐键输入。但真正标成 BREAKING CHANGES 的几条,指向另一件事。
最刺眼的一条:C ABI 大版本升到 7,而 ad_resolve_element_exact 和 ad_execute_ref_action_exact_with_policy 两个精确查找入口被直接废掉,一律返回 ACTION_NOT_SUPPORTED。理由写得很具体:C 调用方提供不了 ref 所依赖的 capture proof,请改走 snapshot ref。
翻译成人话:这个工具拒绝再"尽力猜一个元素"了。
响应信封同步升到 2.6。新规则是,在 Windows 和 Linux 上,ref 若指向多个长得一样的控件、来自没能完整读取的窗口、或者来自更早的快照,一律返回 AMBIGUOUS_TARGET 并带上 details.kind = identity_not_unique;连"某个快照压根没读全窗口"都不再藏着,用 data.identity_unproven: true 标出来。
成本账:273 对 3,811
省 token 是这条路线最直观的卖点。官方自报的数据是:在 Apple Maps 上,单次"看"的 token 从 3,811 降到 273;一个模拟的 52 步任务,总量从 198k 降到 31k;在 Slack、VS Code、Notion 这类密度较高的 Electron 应用上,走 skeleton traversal 省 78%–96%。
这些数字得打折扣。多家转载都标注为作者自报,第三方技术站 techjacksolutions 也明确写了目前没有独立基准可对照。能确认的是方向有设计上的合理性——传给模型的是结构化 JSON,不是像素图;至于具体省多少,得在自己的应用栈上量。仓库里的 locator-resolution 基准跑的是合成 Chromium/Electron 无障碍树,报 p50 与 p95 延迟,也不与真实产品对标。
它看不见什么
边界写在官方文档里,而且相当诚实。agent-desktop 不做网页自动化,那是兄弟项目 agent-browser 的活;它启动的 Chromium/Electron 应用,则开 DevTools 端口让 agent-browser 接上。最要命的一条是:只读无障碍树、不做像素匹配,所以任何不发布无障碍树的界面,它就是完全看不见——自绘 canvas、自己画控件的应用,都可能落在盲区。
项目本身也年轻。仓库 2026 年 2 月建立,最初是个人项目,10 月底转入 vercel-labs 组织,1.0 版本也在 10 月底才陆续发出,对外的发布帖则是 10 月 30 日。目前星标数 13,221,绝大多数集中在公开之后那几天。
所以呢
1.1.0 比任何新功能都更值得记住。
主流 computer use 工具几乎都在追覆盖率——尽量在任意界面上把事做成,于是认不准就点,点错了再说。agent-desktop 1.1 选了另一条:认不准就不点。把 STALE_REF、AMBIGUOUS_TARGET、identity_unproven 从"重试理由"改写成"协议里的正式答案",等于承认在 agent 时代,一次诚实的拒绝比一次盲目的点击更值钱——错误动作往往不可回滚,而重新观察几乎不要钱。
值得留个心眼的是,这套严格语义目前只在 Windows 和 Linux 上强制执行;macOS 行为不同,同名控件各拿各的 ref,靠元素 token 是否存活来判断。同一个工具跨三种系统跑出两种语义,是这类跨平台项目最容易踩的坑。
那你的桌面应用,无障碍树够用吗?