
Vercel 发布 agent-desktop:让 AI agent 通过无障碍树操控桌面应用
来源标题:Vercel: Computer use CLI for AI agents
Vercel 推出命令行工具 agent-desktop,可读取桌面应用的无障碍树并以 JSON 返回,让 agent 通过元素引用执行操作后重新读取界面验证结果。该工具以 CLI 和 C 库形式提供,支持 macOS、Windows 和 Linux,本身不内置模型,仅支持桌面应用而非网页。只读取应用暴露的无障碍信息,不做像素匹配。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Menu agent-desktop 复制页面 复制给 LLM查看 Markdown就本页询问 AI agent-desktop 读取桌面应用的无障碍树(accessibility tree),并以 JSON 形式返回。agent 可以操作的每个元素都会分配一个 ref。agent 对一个 ref 执行操作,再次读取 UI 以检查结果,然后重复这一过程。它以 CLI 和 C 库两种形式发布,支持 macOS、Windows 和 Linux。 npm install -g agent-desktop # macOS、Windows 和 Linux agent-desktop status # 平台、权限、支持的界面类型 agent-desktop skills get desktop # 你的 agent 应首先加载的指南 agent-desktop 是什么、不是什么 供 agent 调用的工具。它不是 agent。观察、操作、验证的循环存在于调用它的 agent 或脚本中。 内部没有模型。它从不内嵌 LLM,没有 GUI,也没有交互式提示。每条命令打印一个 JSON 信封(envelope)后退出。 仅限桌面应用。它不自动化网页;网页请使用 agent-browser。对于你启动的 Chromium 或 Electron 应用的网页内容,agent-desktop 会打开一个 DevTools 端口,供 agent-browser 连接。参见 Chromium 和 Electron 应用。 受限于应用所暴露的内容。它读取无障碍树,不做像素匹配,因此无法看到不发布无障碍树的 UI。 四条命令组成的循环 agent 先映射应用,深入所需区域,对一个 ref 执行操作,然后检查结果。 agent-desktop snapshot --app gnome-calculator --skeleton -i --compact # 1. 映射:浅层骨架 agent-desktop snapshot --root @s2txcl95uvubmn:e1 -i --compact # 2. 深入:展开一个区域 agent-desktop click @s2txcl95uvubmn:e11 # 3. 操作:按下 7 按钮 agent-desktop wait --element @s2txcl95uvubmn:e6 --predicate value --value 7 # 4. 验证:显示屏显示 7 ref 携带生成它的快照的 id(@s2txcl95uvubmn:e11)。Snapshots and refs 定义了它们,Skeleton and drill-down 解释了前两条命令。操作成功并不能证明 UI 已改变,因此循环以一次读取结束。快速开始会运行这些命令并展示其输出。 同一链条的文字形式,从调用方到应用: core 从不导入平台 crate,平台 crate 之间也从不互相导入。只有 CLI 和 C 库会把平台 crate 连接到 core,并且各自在编译时选择平台 crate,因此一个二进制文件驱动它所构建的目标操作系统。 平台要求无障碍 API macOSmacOS 13 或更高版本,Intel 或 Apple Silicon。运行 agent-desktop 的应用需要无障碍权限。AX API WindowsWindows 10 1809 或更高版本,或 Windows Server 2019 或更高版本,运行于 x64 或 ARM64,且处于已登录用户的交互式桌面中。UI Automation LinuxUbuntu 24.04 或更高版本,运行于 x86_64 或 aarch64(glibc 2.35 下限),处于用户的图形会话中,且有正在运行的 AT-SPI 总线。AT-SPI CLI 在每个平台上都有相同的 60 个命令名称。其中四个(key-down、key-up、mouse-down、mouse-up)在所有平台上都会失败关闭(fail closed)。各平台页面列出了哪些功能可在无头模式下工作、哪些需要 --headed,以及哪些会被拒绝。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。