夜雨聆风学习资料网

ARTICLE · 1294902

AI 用你电脑最烦的事,被一份盲人名单解决了.

AI 用你电脑最烦的事,被一份盲人名单解决了.

“

AI 能不能用你的电脑,要看它拿不拿得到名字。

—— 草稿鸭

事情是这样的。

10 月 31 号,Vercel 开源了一个东西,叫 agent-desktop。

它干的事听起来特别简单,就是让 AI 用你的电脑。

你可能会说这有什么稀奇的,现在哪个 AI 不能开个浏览器点两下。

但这个不太一样。

它用你电脑的时候,鼠标还是你的。

这东西在 GitHub 上一天半就攒了 5.8k star,发布贴 87 万浏览,8600 多个赞。

我在我自己这台 Windows 上装了它,从头到尾跑了一遍,中间踩了三个坑。

装之前我是半信半疑的,因为这个领域过去一年吹的牛实在是太多了。

所以先说说它跟以前到底差在哪儿,不然你会觉得我在给它打广告。

📌 本文看点

01

不截图也能点准

02

Windows 真机实测

03

三个报错长什么样

01

CONTEXT

以前的 AI 用你电脑,是这么个用法

回到一年前,让 AI 用电脑的主流做法叫 Computer Use。

名字很唬人,实际的步骤特别原始。

先截一张屏,把这张图整个丢给模型,然后问它,屏幕上那个蓝色的按钮在哪儿。

模型盯着图看半天,估一个坐标,报给你。

程序再把鼠标挪过去,点。

整个流程里唯一不确定的词,就是那个估。

窗口挪一格,估错。列表往下滚了一下,估错。你一时兴起把系统字体调大一号,还是估错。

更烦的是,错了它不一定知道。

它点歪了,点到隔壁那个删除,然后特别有信心地告诉你,任务已完成。

这种感觉我太熟了。

就跟某些同事交周报一样,活儿没干完,报告写得比谁都漂亮。

所以你会看到一个特别荒诞的场面。

AI 在干活,你在旁边当保安。

手一直悬在鼠标上,随时准备接管。

你想回个微信,得先看一眼它现在在干嘛,敢不敢动。

有段时间我的解决办法是,它一跑起来,我就去泡咖啡。

反正也干不了别的。

02

THE TRICK

换个路子,不拍照,去翻户口本

那问题到底出在哪呢。

我觉得出在我们一直默认了一件事,AI 想用电脑,就得先给它长一双眼睛。

但这两年我慢慢发现,盲人用电脑用得可好了。

真的,你去看一下读屏软件,你会觉得那玩意儿挺神的。

屏幕上的东西,对操作系统来说,其实一直有两份。

一份是画给你看的,像素、颜色、位置,挤在一个平面上。

另一份是登记出来的,谁叫什么名字,是什么类型,现在能不能点,点下去会发生什么。

后面这一份,叫无障碍树。

它本来是给读屏软件用的。

视障的人打开电脑,靠的就是这份名单。

读屏软件把名单念出来,这个是文件菜单,这个是输入框,这个是发送按钮。

他们看不见屏幕上那个按钮长什么样。

但他们知道那个按钮叫什么。

每一份名单里的条目,至少写着四样东西,它叫什么,它是什么角色,它现在是什么状态,它允许你干哪些动作。比如我刚拿到的那份快照里,那个复选框名字叫高级查看,角色是复选框,状态那一栏里会冒出 focused 或者 checked 这种词,允许的动作是 Click 和 Toggle。这些词单独看都很无聊,凑在一起就变成了一句能执行的话。

AI 现在也可以靠这个了。

于是流程就变了。

先要一份快照,快照里每一扇窗口、每一个按钮、每一个输入框,都带一个编号。

编号长得像这样。

...bash

@s2ad7qhjlge851:e4

是不是挺像快递单号的。

但就这么一串东西,AI 说点 e4,工具就去点 e4。

不猜坐标,不看像素,不做任何图像识别。

界面一变,旧的编号立刻作废,工具直接报错,逼它重新要一份。

宁可报错,也不糊弄。

我觉得这个设计里最值钱的地方,不是它有多准,是它知道自己什么时候不准。

打个比方吧。

截图派是拿着一张糊掉的现场照片,在那儿猜,第三排左边那个是不是按钮。

翻名单派是直接翻到登记页,念名字。

念名字当然比看照片靠谱多了。

但这个道理我们人类其实早就知道了,只是没人想过把它用在机器身上。

还有个省钱的小设计,我觉得挺聪明的。

有些软件界面特别密,一次吐出来一百多个控件,全塞给模型,光看就烧掉不少钱。所以它让你先要一份骨架,只看得出大概有哪几块,看中哪一块再钻进去。

官方给的例子挺直观,一整个窗口 75 个控件,钻进去只看那张卡片,剩 45 个。

— 钻取一个区域,把 75 个控件收窄到 45 个

03

HANDS ON

我在 Windows 上真装了一遍

说到这儿,得聊聊我自己装的过程了。

X 上的中文贴我基本都翻了一圈。

绝大部分是翻译发布贴的,配几张图,说一句太牛了,然后就没了。

说真的我不太爱看这种。

我想看的是那种,一个人真的把它装在自己那台破电脑上,然后截图自己屏幕上那坨输出。

所以我决定自己跑一遍。

我这台是 Windows 11,Node 22.22.2,npm 10.9.7。

装的过程没什么好说的,一条命令,两秒钟就完事了。

...bash

npm i -g agent-desktop

装完第一件事,我问它你现在是什么状态。

...bash

agent-desktop status

回来的东西是这样。

...json

{"ok":true,"command":"status","data":{

  "permissions":{"accessibility":{"state":"granted"},"automation":{"state":"not_required"}},

  "platform":"windows","version":"1.0.2"}}

我这个 Windows 上,辅助功能那一项直接就是 granted,不用去设置里点任何东西。

Windows 这边是真省事。

Mac 就没这么舒服了。

官方文档写得很清楚,要你自己去系统设置里把辅助功能打开。

有人在 X 上专门提醒过这一点,装成功不等于能操作窗口,这俩是两码事。

我第一次在 Mac 上折腾这类权限的时候,找那个开关找了十分钟,最后发现它藏在隐私与安全性里,得往下滚。

好,接下来。

第二步,我想看看它能认出我电脑上哪些东西在跑。

...bash

agent-desktop list-apps

我这台机器上,它列了 11 个。

ChatGPT,飞书,Trae,我自己在用的编辑器,还有那台陪我干了一整天活的 ego 浏览器,全在名单里。

看到自己电脑上跑着什么都被人列得清清楚楚,第一反应其实有点毛骨悚然。

这个我们等会儿再说,先往下走。

第三步,我挑了个软件要快照。

我挑的是 Windows 自带的字符映射表。

为什么挑它,因为它够老,够朴素,界面上一堆按钮和下拉框,特别适合拿来试手。

...bash

agent-desktop snapshot --app charmap.exe --skeleton -i --compact

回来 17 个控件。

我挑三条给你看。

...json

{"role":"button","name":"选择(S)","ref_id":"@s2ad7qhjlge851:e2","available_actions":["Click","SetFocus"]}

{"role":"checkbox","name":"高级查看(V)","ref_id":"@s2ad7qhjlge851:e4","available_actions":["Click","Toggle"]}

{"role":"combobox","name":"字体(F):","ref_id":"@s2ad7qhjlge851:e5","value":"Arial"}

第三行有点意思。

它连字体现在选的是 Arial 都读出来了。

不是猜的,是读出来的。

这张图是我自己那份快照的可视化,蓝色方框就是它认出来的东西,每个框带一个编号。

— 快照里每个能点的东西,工具都在窗口上给你圈了出来

你先记住这张图,等会儿要拿它当证据。

然后我就想试试,真点一下会怎么样。

我挑的是那个高级查看的复选框,因为点错了也无所谓,大不了再点回来。

...bash

agent-desktop click @s2ad7qhjlge851:e4

它的回话让我愣了一下。

...json

{"disposition":{"delivery":"delivered_unverified","retry":"unsafe"}}

翻译成人话就是,我点了,但我没有验证,你也别再点第二遍。

我看到这句话的时候,是真的有点触动。

因为过去一年我看过的所有 Computer Use 演示,点完都是直接说完成了。

没有一个人会跟你说,我不确定。

它自己都不承认自己点成功了,非要你回头再看一眼。

这个态度我觉得挺难得的。

所以我又要了一次快照。

这一次,那个复选框的状态变成了这样。

...json

{"name":"高级查看(V)","role":"checkbox","states":["focused","checked"]}

checked。

成了。

那一刻其实挺平淡的,就一个单词变了。

但我知道这个单词背后是整条链路,读名单、定编号、发动作、再读一遍、比对。

跟外卖软件显示已送达、你还趴在窗台上找骑手,是完全相反的两件事。

口说无凭,我把点之前和点之后各拍了一张。

点之前,左下角那个高级查看是空的。

— 点之前,高级查看是空的

点之后,勾上了。

— 点之后,勾上了,底下还多出来一整排设置

底下多出来那一排,是高级查看打开之后才有的东西,字符集、转到 Unicode、分组依据、搜索,还有一行小字写着所选字符。

我没让它点这些,它自己冒出来的。

这一下比任何一句描述都有说服力,屏幕上真的少了一个鼠标点击。

04

PITFALLS

路上踩的三个坑

第一个坑,我自己给自己挖的。

我写 notepad,它说找不到。

...json

{"code":"APP_NOT_FOUND","message":"Application 'notepad' was not found with exact process identity"}

得写成 notepad.exe。

它只认身份证上的名字,不认小名。

第二个坑比较有意思。

我想开个命令行窗口给它玩,它直接把我拦下来了。

...json

{"code":"AMBIGUOUS_TARGET","message":"More than one application instance matches the launch target",

 "details":{"candidate_pids":[25212,27468,16128,34052,48100,73916]}}

我后台挂着 6 个 cmd???

它不知道该往哪个里面打字,干脆不干。

这个设计我一开始还骂了一句,后来想想它是对的。

拿不准的时候宁可不干,比瞎点强一万倍。

第三个坑,是我关掉程序之后,还拿着旧编号去点。

...json

{"code":"STALE_REF","message":"Stored ref's owning process has exited"}

编号只跟着那一次快照走。

程序没了,编号就是一张废纸。

还有个事我没解决。

Windows 11 自带的记事本和画图,现在都变成商店应用了,用名字直接启动会报找不到。

我没深挖怎么绕过去,实话实说。

反正我平时也不用它们。

还有个小细节。npm 装的时候如果没跑安装脚本,每条命令会多绕一层 Node,官方自己都会提示你,大概多 125 毫秒。日常用没什么感觉,批量跑几百次就积少成多了。

05

USE CASES

它能替你干的几件活

我不太想给你们列那种「六大功能」的清单,我自己看那种清单是会划走的。

就说三个我真心觉得会用上的场景吧。

第一个,给那些没有 API 的老软件填单子。

银行、税务、某个内部系统,一堆这种只有界面没有接口的东西,以前只能人肉一个格子一个格子点。

现在它能读控件,也能输入。

这个需求有多真实,干过行政的都知道。

第二个,给桌面软件做回归测试。

这也是作者自己在发布贴里列的第一条。

改完一个版本,让 agent 把每个按钮都点一遍,看哪个炸了。

以前这事要么靠人,要么靠一堆脆得跟饼干似的脚本。

第三个,接到你已经在用的编程 agent 上。

Claude Code、Codex 这些能跑命令的,装上就能调,不用改你原来的流程。

06

WIRING

怎么接到你现在的 agent 上

不过这儿有个特别容易被误解的地方,我得说清楚。

agent-desktop 自己不是 agent。

它里面没有模型,没有界面,也不会自己主动干活。

你不喊它,它就在那儿躺着,比我家扫地机器人还安静。

它就是个工具,真正干活的是你已经用惯的那个 agent。

顺便说说它的体量。官方文档里列了 60 条命令,56 条能吃,剩下 4 条是按住键和按住鼠标那种,因为现在还没有守护进程能帮你松手。它另外还带了一个 C 库,你要是想把它塞进自己的程序,可以不走命令行,直接在进程内调用。一个做桌面自动化的东西,最后交给你的是一个命令行和一个库,没有界面,没有模型,也不跟你聊天。

那怎么让 agent 知道有这么个东西呢。

官方给了两条路。

一条是把一段话抄进你的 AGENTS.md。

...text

Use `agent-desktop` to see and operate desktop apps. Before the first use, run

`agent-desktop skills get desktop` and `agent-desktop skills get platform`, and follow them.

另一条更省事,直接把它的使用说明装进 agent 的技能库。

...bash

npx skills add https://github.com/vercel-labs/agent-desktop --skill agent-desktop

这一步比听起来重要得多。

因为 agent 默认不知道两件事。

一是屏幕上的编号会失效。

二是点完必须回读一次才算数。

你不跟它说,它就照着以前截图的习惯来,点一下就当成了,然后兴高采烈地告诉你任务完成。

它又跟前面那个交周报的同事碰面了。

还有个东西我没测,但挺值得说的,就是多开。

一个屏幕上只有一个鼠标,这是物理限制。所以以前的 Computer Use 一旦开两个,光标就在两拨人手里被抢来抢去,最后谁也干不成。

agent-desktop 绕过去了,因为它压根不移动真实指针,动作是直接发给控件本身的。

所以你加一个 multi-agent 的开关,再给每个 agent 指定一个 id,它们就能同时在一个窗口上干活,各有各的虚拟光标,各有各的名字标签,你能看见谁在动哪个按钮。

我手上只有一台机器,扛到几个算极限我没测出来,这个不敢瞎说。

— 三个 agent 各带一个光标,同时操作同一个窗口

07

LIMITS

它读不到的东西,比能读到的更要紧

这套办法有个死穴,官方文档自己写得很坦白。

它只读无障碍树,不做像素匹配。

翻译一下,名单上没有的人,它一个也找不到。

哪些人上不了名单。

游戏,尤其是 3D 的。

自绘界面的软件。

还有一批用老框架写的国产桌面软件,名单本身就是残的,只有个窗口标题,底下全空。

X 上有人拿 Linux 试,装是装上了,版本也读出来了,但系统的无障碍总线没起来,快照直接卡死。

他自己的记录写得很实在,装得上,读得出版本,就是过不去。

我这边也碰见了。

字符映射表只认出 17 个控件,中间那一大片字符格子,一个都没进来。

— 这个窗口里有几百个字符,它只认得出 17 个控件

你回头看前面那张带蓝框的图,框全站在边框、按钮和下拉框上,中间那片格子干干净净。

你让它点第 37 个字符,它做不到。

因为对它来说,那里什么都没有。

所以别指望它替你点一切。

它真正擅长的,是那种规规矩矩的,按钮有名字的,长得像 2010 年的软件。

有点讽刺的是,这批恰好是最难自动化的一批。

会写 API 的软件早就被人自动化完了,剩下的全是硬骨头。

还有个事必须得说。

08

ISOLATION

让 AI 摸你整台电脑之前,先隔开

README 里有一段话,是作者自己写的。

快照、剪贴板、截图、命令输出,都可能带着你桌面上的私人内容,别往公开日志和上传里放。

这不是客套话。

你想想看,快照里有什么,完全取决于你屏幕上有什么。

开着聊天窗口,聊天记录就在。

开着文件夹,你所有文件的名字就在。

它不区分工作和私人,它只负责把名单交上去。

所以让 AI 碰你整台电脑之前,我建议你先隔一层。

作者自己的做法挺聪明的。

他在 macOS 虚拟机里跑这个工具。

苹果的虚拟化框架会在一个窗口里起一台完整的虚拟机,agent 只能看见虚拟机里面的东西。

你在你自己的 Mac 上继续干活,它在虚拟机里随便折腾。

我看到这儿的时候就觉得,这哥们是懂行的。

有人在评论区追问,跑完会不会重置成快照。

他回答得特别干脆,虚拟机保留所有磁盘更改,跟一台真 Mac 一样。

那就说明脏东西会一直攒着。

你想要干净,得自己管。

还有个更硬的限制,苹果限制一台 Mac 最多同时跑 2 个 macOS 虚拟机。

问的人本来以为能开一队机器,他回了一句。

你可以在虚拟机里面跑一队,不是开一队虚拟机。

差一个词,意思差出去十万八千里。

没有 Mac 的,退一步,云端开一台 Linux 桌面,跑完就扔。

官方给了沙盒的四步样例。

那四步大概是这么回事,先在云上建一个沙盒,在里面跑一条命令拿快照,把 JSON 读出来,最后按名字把那个沙盒接回来接着用。看着像废话,但真到写脚本的时候,这四句就是骨架。

— 在云端的 Linux 桌面里跑,拿 JSON 回来

再土一点的办法,别在有重要东西的机器上跑,找个旧笔记本,或者开个全新的用户账户。

写到这儿,我其实想说的已经不是这个工具了。

∞

THE END

写到最后

我们这两年教 AI 用电脑,一直在教它长眼睛。

看图这件事,人天生就会,机器天生就不灵。

分辨率高一点它就漂,换个主题它就懵。

但你有没有想过,我们人类自己,其实也不是全靠眼睛在认这个世界的。

我妈不会用智能手机的时候,她靠的是记住那个蓝色的图标在第二排第三个。

她去银行取钱,靠的是记住柜员姓什么。

名字这个东西,比长相可靠多了。

所以 agent-desktop 让我觉得有意思的地方,不在它点了什么。

在它换了个问法。

界面自己不是有名字吗,为什么还要用眼睛去猜。

这一换,省掉的不只是坐标,还有一堆本来就不必要的失败。

当然它现在还很新。

上线一天半,版本号才走到 1.0.2,Windows 上的商店应用还开不起来,Linux 缺条总线就卡死。

这些都在,一个都不能装作看不见。

但方向我觉得是对的。

AI 能不能用你的电脑,慢慢会从它多聪明,变成它拿不拿得到名字。

这份名单,本来是给看不见的人准备的。

现在拿到它的人,是另一种看不见的。

我的看法就一句。

与其教 AI 长眼睛,不如先把名字给它。

最后问一句,你手上有没有那种只有界面、没有 API 的老软件。

报个名字给我,我看看这东西能不能替你点。

END

我是草稿鸭,专注把 AI 圈的大事用大白话讲清楚。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。

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

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

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

相关学习资料