Wink Pings

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 确认结果,循环下去。

agent-desktop 架构图

返回的树长这样:

{
  "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 设计接口。

至于第一个被改掉的岗位是什么,现在猜还早。能确定的是,桌面自动化的门槛,从会写脚本降到了会接一个模型。

项目地址:https://github.com/vercel-labs/agent-desktop

发布时间: 2026-11-08 01:31