📋 编辑总结
让 Agent 看懂桌面而不是猜像素。agent-desktop 是 Rust 编写的原生桌面自动化 CLI:通过操作系统无障碍树读取任意应用的真实 UI 结构,元素引用稳定、动作可安全重试,替代脆弱的截图加坐标点击;渐进式骨架遍历大幅压缩 Token 消耗,结构化 JSON 输出带错误码与恢复提示,另经 CDP 与 Chromium 应用互通。单二进制、无运行时依赖,Apache 2.0 开源。 定价:免费开源(Apache 2.0)。编辑评分:⭐ 4.5。

agent-desktop 是什么?

agent-desktop 是一个用 Rust 编写的原生桌面自动化 CLI,专为 AI Agent 打造,Apache 2.0 协议开源。它要解决的是 Computer Use 领域的老大难问题:绝大多数桌面 Agent 靠「截图—视觉模型—预测坐标—点击」循环工作,慢、贵、脆,界面挪动几个像素整条链路就断。

它的答案朴素而有力:不猜像素,读操作系统自己维护的无障碍树(accessibility tree)。这套语义结构——每个元素的角色、名称、可用动作、层级、焦点与状态——正是屏幕阅读器几十年来依赖的数据源,Finder、Safari、系统设置、Xcode、Slack 等任何有辅助功能实现的应用都在其中。Agent 拿到的是结构化快照与确定的元素引用(如 @s8f3k2p9:e1),动作前引用会重新解析,界面变了就返回 STALE_REF 错误而不是误点别处。工程形态上它是约 15MB 的单一二进制、无运行时依赖,npm install -g agent-desktop 即装即用,也可从源码构建;另提供 C-ABI 动态库,Python、Swift、Go、Ruby、Node 都能一次加载复用,不必每个调用都 fork 一次 CLI。社区把它类比作「桌面的 Playwright」——为原生应用补上浏览器自动化早就有的选择器与动作模型。

核心功能

  • 无障碍树观察与操作:58 个命令名覆盖观察、交互、键盘、鼠标、通知、剪贴板、窗口管理与会话生命周期,输出全部为带错误码与恢复提示的结构化 JSON。
  • 稳定引用与安全重试:快照 ID 加限定引用在每次动作前重新解析,UI 变化即报 STALE_REF;CHECK/UNCHECK 等幂等动词替代切换,重试不产生副作用。
  • 渐进式骨架遍历:先浅层总览、再按需 DRILL/WIDEN 深入或展开,官方口径在 Slack、VS Code、Notion 等密集应用上把 Token 消耗压缩 78–96%。
  • 链式交互与状态判定:单击按 AXPress、AXOpen、内格激活、写入选择、AXConfirm 依序尝试,成败以应用状态的实际变化为准——因为「应用两个方向都会撒谎」。
  • 无头默认与权限治理:引用动作走无障碍 API,默认阻断焦点、光标、键盘与剪贴板副作用;权限状态以显式结构返回,缺失权限经隔离辅助进程请求。
  • CDP 互通:对 Chromium 应用开启验证过的 DevTools 端口,网页内容交给 Playwright 等框架,原生菜单与对话框仍走无障碍路径。

版本/套餐对比

项目完全免费开源,Apache 2.0。当前主战场是 macOS 13+,构建需 Rust 1.89+;npm 包自动下载预编译二进制,Node 18+ 即可使用;Jev 相关脚本需要自备 API key 且按量计费,纯 CLI 路径完全本地、不外发数据。Windows 与 Linux 适配器已列入计划,接口约定保持一致,但对跨平台有硬需求的团队应关注后续进度。它不内置模型、不绑定任何 Agent 框架——Claude Code、Codex、Cursor 或自研 Agent 都可以把它当作工具调用,也可配合可选的 jev-desktop 技能形成「观察—决策—执行」闭环。作为较新的项目(0.9.x 阶段),接口存在调整可能,升级以官方变更记录为准。

值不值得用?

值得投入的场景:为原生应用构建 GUI 自动化与 QA 测试的团队——稳定的元素引用让断言可重复;想给编程 Agent 补上「桌面双手」的平台工程组——与浏览器自动化、Shell 工具形成三层互补;对隐私敏感、要求动作链路本地化的场景——纯 CLI 路径不外发任何数据。

需要冷静的地方:它只覆盖 macOS,跨平台需求暂时落空;效果依赖目标应用的无障碍实现质量,实现糟糕的应用仍会难缠;需要授予辅助功能等系统权限,企业分发要做权限预案;项目处于早期,把它定位为有前景的开发者基础设施而非开箱即用的自主员工更符合实际。给 Agent 大范围桌面控制权前,先划好审批与安全边界。

使用建议

  • 从 npx agent-desktop snapshot --app Finder -i 开始体验,先看无障碍树长什么样,再设计自动化流程。
  • 让 Agent 优先使用 CHECK/UNCLICK 等幂等动词,配合 STALE_REF 重试逻辑,把误操作概率压到最低。
  • 密集应用务必启用渐进骨架遍历,控制上下文成本;只有定位到具体子树后再深入。
  • 涉及 Chromium 应用时用 --cdp 把网页部分交给专业浏览器框架,别用无障碍树硬啃 DOM。

适合谁用?

推荐:构建桌面 GUI 自动化与回归测试的 QA 工程师、为 Agent 添加原生应用操作能力的平台团队、Computer Use 方向的研究者与工具开发者。

可考虑:有大量重复桌面操作的个人用户,可结合脚本做轻量自动化。

不推荐:Windows/Linux 为主的团队(尚在开发中);期待视觉理解通用兜底的场景——它不解决无障碍实现缺失的应用;希望零权限、零配置静默运行的用户。