夜雨聆风学习资料网

ARTICLE · 1303236

一万星的 AI 操作电脑工具:Vercel 开源,能替你点按钮

一万星的 AI 操作电脑工具:Vercel 开源,能替你点按钮

让 AI 替你操作电脑,这件事现在能做了。

Vercel 实验室开源的 agent-desktop 干的就是这件事:读你电脑上正在显示什么,找到要点的那个按钮,点下去。窗口里有哪些元素、哪个是输入框、哪个能勾,它一项项向系统要,然后照着做。

你不用教它认界面。

过去 24 小时它涨了 2,243 颗星,现在 10,668 星,Rust 写的,Apache-2.0,macOS、Windows、Linux 都能跑。

它自己不是 agent

官方在文档里把这件事写得很直白:这是一把给 agent 用的工具,不是一个 agent。

它里面没有模型,没有界面,没有对话框。每条命令读一次界面、或做一个动作,输出一段 JSON 就退出进程。观察、决策、复查这套循环跑在调用它的 agent 里,不在它里面。

所以装完它你不会得到一个能自己干活的助手。它提供的是"手和眼睛",脑子还是你那边的。

网页上的操作归它的兄弟项目 agent-browser,桌面应用才归它。

不看屏幕,为什么反而点得准

截图路线的逻辑是:拍一张图,让模型在图上找"登录"按钮,算出坐标,把鼠标挪过去按一下。

问题在于坐标不是按钮的属性,是这张图的属性。窗口挪一格、缩放变一下、列表滚一行、弹个提示挡住半边,算出来的坐标就全错了。更麻烦的是它不知道自己错了,照样按下去,按到了别的东西上。

agent-desktop 走的是各家系统本来给无障碍工具用的那套结构:macOS 的辅助功能、Windows 的 UI Automation、Linux 的 AT-SPI。它拿到的是一棵树,里面写着这个元素叫什么、是按钮还是输入框、能不能点、在哪个窗口下。

每个能操作的元素配一个编号,长这样:

agent-desktop snapshot --app Finder -i    

读一次,元素带编号

agent-desktop click @s8f3k2p9:e8          

点那个编号

agent-desktop snapshot --app Finder -i    

再看一次,确认点上了

编号自带快照 ID,@s8f3k2p9:e8的意思是"第 s8f3k2p9 次快照里的 e8"。单独写一个@e8会被直接拒绝,它不允许拿上一次的编号去点这一次的界面。

界面变了怎么办?它不猜。匹配不上就报STALE_REF,匹配到两个以上就报AMBIGUOUS_TARGET,让调用方重新读一次再动手。宁可报错,也不静默点错地方。

这一点在跑一整套流程时价值很高。点错一个"发送",代价是一封发错的邮件;静默地错,比大声地错麻烦得多。

上手只要三行

装它:

npm install -g agent-desktop

agent-desktop version

macOS 第一次用要开辅助功能权限,它带了引导:

agent-desktop permissions --guide

然后就是上面那三步:读界面、点编号、再读一次确认。

想交给 agent 用,它自带配套的说明书:

agent-desktop skills get desktop    

循环、编号、验证与重试规则

agent-desktop skills get platform    

你这个系统上哪些能力不一样

也可以把技能装进 agent 框架(npx skills add <项目仓库> --skill agent-desktop),或者在 AGENTS.md 里写一句"用 agent-desktop 看和操作桌面应用,第一次使用前先跑 skills get desktop"。

出错之后,怎么知道该不该重试

这是它比截图路线更实用的地方,也是很多自研脚本栽跟头的地方。

一次点击失败,其实有两种完全不同的情况:动作压根没送到应用,可以放心重试;动作可能已经送到了,只是效果没确认,这时候重试就是重复提交——重复下一单、重复发一封邮件、重复扣一次款。

两种情况,处理方式相反。

agent-desktop 把这一层做成了返回值。出错时带一个disposition字段,里面写明这次重试安不安全,规则只有一条:retry是safe的时候才重试。

别的都不行。

它还单独区分"已送达未验证"这种中间状态:输入确实发出去了,但效果没读到,那就再读一次确认,而不是再发一遍。

自己写过自动化的人应该知道,这一层判断平时全靠拍脑袋。工具把它变成一个字段,是这套东西真正省事的地方。

它干活的时候,你还能用这台电脑

默认模式叫 headless:动作走无障碍接口直接触发,不移动指针、不抢焦点、不合成键盘输入。所以它跑的时候,你还能接着打字。

代价得说清楚:语义走不通的场景,它是直接失败,不会偷偷降级成物理点击。真要物理点击得显式加--headed,那一刻它才会动你的鼠标、抢你的焦点。

省心和能力,只能选一个。

另外它默认带 5 秒的等待轮询:元素还没准备好就等,等不到再报超时。

密码框是单独处理的。系统一旦把某个输入框标记成密码字段,它的内容不会出现在任何输出里,读不出、也回显不出。

用之前要知道的几件事

权限不小。macOS 的辅助功能权限,等于允许它读你所有窗口的内容,也能模拟输入。这是这类工具的前提,不接权限就没法工作。不用的时候可以在系统设置里关掉。

它看不见不暴露结构的界面。它只读无障碍树,不做像素识别。游戏、canvas 自绘的界面、自己画控件又不声明角色的应用,它读不到东西——因为那里没有树。这既是它的边界,也是它不点错的原因。

60 个命令名里,实际能跑 56 个。key-down、key-up、mouse-down、mouse-up四个现在会直接拒绝执行,要等一个能接管按键按住状态的守护进程做出来。

快照可能带隐私。窗口标题、剪贴板内容、通知、截图、命令输出,都可能在返回值里。官方明确说这些要当作私密内容对待,调试记录别贴进公开日志或者随手传上去。

该不该用

你在写 agent 或者自动化脚本,需要它去操作桌面应用,这套东西现在的成熟度够用,值得试。它的错误码、重试建议、动作是否已经送达的标记都设计得比较完整,接进流程里不用自己猜。

你只是想让 AI 帮你点网页上的按钮,那应该看 agent-browser,方向不对。

你希望装完就有一个助手接管电脑、替你干活,这个不是成品。它没有模型也没有界面,你手上得已经有一个会调工具的 agent。

一句话:它把"AI 操作电脑"里最容易出事的两件事——点的是哪个位置、失败之后该不该重试——从流程里拿掉了,换成可以核对的编号和字段。剩下的编排,还得你自己接。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料