正式开源huashu-mac-use,让任何agent获得接近GPT-6的Computer use能力!
我最近在X上刷到了一大堆夸赞GPT-6 Astra在computer use方面有多强,然后操控blender做出了各种3D模型的案例,说实话有点看麻了。。。
但是,我非常认可现在这个阶段,要解决白领办公问题的话,除了coding能力之外,最最重要的就是搞定电脑和浏览器操控的能力了,因为绝大多数白领任务都是在电脑上完成的,而现在很多网站、软件的开放性还不够强,所以让agent可以操控电脑去获取更广泛的上下文信息,去帮助任务处理最后的操作环节是相当关键的,有点像是走完agent办公的最后一公里闭环。
所以,我最近半个月一直在尝试迭代让agent操控电脑的能力,这是我让claude code操控blender制作的巧克力甜甜圈模型,你可以感受下👇
甜甜圈在后面,先看这艘船,这是同一天同一个skill做的另一件事。我给Claude Code的任务就一句话:帮我调用codex生成多张高清、细节丰富的10万吨级邮轮照片,然后用skill操控Blender去生成渲染出和照片几乎一致的模型。
它先出了一张正侧视的照片,再拿这张当参考图串行出右前45°、左后45°和航拍俯视三张,保证四张是同一艘船。然后照着照片量尺寸,在Blender里写了一个400行左右的参数化建模脚本,超椭圆截面放样船体、十层上层建筑按照片的像素换算成米逐层定舱段、阳台做成内缩舱壁加外伸楼板的真实凹槽、救生艇烟囱穹顶桅杆驾驶台翼一样样加上去,最后按四张照片各自的机位和太阳方位渲了四个视角。从收到任务到并排对比图交付,33分钟。
左边是生成的照片,右边是渲染。中间迭代了8轮,每轮预览只要3到30秒。差距也很明显,驾驶台前端那个流线型外壳没做、船艉阶梯露台的栏杆没做、顶层泳池区没做,航迹只有一圈薄片没有浪花,海面纹理比照片平。这些都是它自己在收工汇报里列出来的。
再看甜甜圈👇
面团上的气孔、油炸时浮在油面留下的那圈浅色腰线、只淋了上半截的巧克力和往下淌的几处垂滴、三百颗随机颜色平躺贴在淋面上的糖针、盘子上的碎屑,还有后面那个被虚化掉的第二个甜甜圈,也全是Claude Code自己建的。渲完之后我又让它当了回导演,打了120帧相机关键帧一镜到底,就是上面这条。
这是它在Blender里的样子,右边物件清单里几百个Sprinkle就是那些糖针。这张窗口截图也是skill截的。
这套东西今天正式开源,叫huashu-mac-use,仓库在这:
https://github.com/alchaincyf/huashu-mac-use
任何能读skill的agent都能装,Claude Code、Codex、Kimi Code、Cursor、OpenClaw,包括国内那几个办公客户端。装法也就一句话,把仓库链接丢给你的agent说「帮我装这个skill」就行。
接下来说说它是怎么工作的,以及这半个月我们到底在折腾什么。
先把话说清楚
Astra那些演示是模型看着屏幕一下一下点Blender的界面,而上面这两个案例,agent走的是另一条路。Blender自带一套Python接口和无头命令行,建模、材质、灯光、渲染全部写成脚本跑,一次坐标点击都没有,只有最后打开GUI截窗口取证那一步才是「操控app」。这不是投机取巧,恰恰是这个skill的第一条原则:能不看图就不看图,能不点鼠标就不点鼠标。
上一篇写GPT-6 Astra的时候我说过一句,模型的更新把我们做这件事碾压过去了。这句话我现在依然认,但这半个月下来我发现有三件事,模型再强也得有人替它先做掉:一个app到底该从哪下手;干活的时候别抢用户的窗口;每一步都留下能复现的证据。这个skill做的就是这三件事。
它怎么工作
一张图,就三件事。
第一件事,先探,再决定从哪下手。
Mac上一个app能下手的地方有四层:它自己有没有命令行或者脚本接口;有没有那棵给视障用户读的辅助功能树;窗口里的坐标能不能点;最后才是看截图。越往上越省事越稳,越往下越像人在瞎点。所以skill动手前先跑一个探测脚本,30秒把这个app摸一遍。邮轮那一场探出来Blender啥接口都没有,辅助功能树也是空的,但它自带Python,那就全走脚本,一次鼠标都不用点。这条是踩出来的,第一天我没探直接硬试,20分钟白耗。
最大的发现是,不同内核的app,能操控它的方式完全不一样。我测过的三个国内AI办公客户端全是套了个Chromium的壳,套壳的好处是可以带个调试端口重启,agent就能像操网页一样操它,不抢焦点、不切桌面、几个agent一起用都不打架。豆包工作我第一天判成了原生app,点了一整轮坐标,第三天才发现它把整个Chromium藏在深一层的目录里,顶层是空的,被它骗了。千问办公更绕人,辅助功能树写字进去看着是成功的,截图里字也在,但发送键是灰的,它的编辑器根本不认这次输入,真点发送发出去是空消息。还有一条,后台能不能截到图跟内核没关系,是一个窗口一个样,同一个剪映,主窗口后台随便截,那个版本更新的小弹窗怎么都截不到。我一开始写了条「Chromium的都截不到」,当天就被自己推翻了。
第二件事,读随便读,写尽量别碰用户的焦点。
截图、列窗口、读界面这些全是读,一律不激活窗口、不切桌面、不动鼠标,被挡住的窗口照样能截。邮轮那张Blender窗口截图就是这么来的,它另起了一个Blender实例扔在别的桌面,后台截,我那会儿在另一个窗口打字,完全没感觉。它还干了件小事我挺喜欢,Blender一打开默认看不到船,它没去点视角,而是改了下文件让每个视口打开就是相机视角加材质预览,存一份再开。能不点鼠标就不点鼠标,就是这个意思。
写就麻烦了,后台窗口收不到键鼠。所以它先把事件直接投给那个进程试试,截图对比一下有没有生效,实在不行才借焦点。借之前要过四道闸:前台是不是目标;落点有没有被别的窗口压着;你2秒内动过键鼠,它就等你停手,最多等15秒,等不到就不干,不抢;全机同时只许一个进程借焦点。这几条是Anthropic放出后台computer use之后照着对齐的(他们比Astra早一天,然后就被刷屏盖过去了),他们的重点不是操控多强,是「你在打字它就等」。真借到焦点那半秒,屏幕四角会闪一圈取景框告诉你是agent在动,而且这个框对截图是隐身的,不然每张取证图都带个橙框。
还有一条我自己天天撞的:agent跑在全屏终端里,目标app在另一个桌面。这时候点击不是无效,是打到你正在用的窗口上,我实测三次,工具都说点了,全戳在了终端上。现在内核直接拒绝跨桌面点击,要么走调试端口,要么让我把窗口挪过来,它自己不切桌面。
第三件事,工具说成功不算数。
有一轮4次写入工具全报成功,截图一看前3次输入框是空的。所以每一步都要回读,而且回读要看app自己的状态,发送键亮没亮、任务进没进列表、文件落没落盘,光看见字不算。系统设置关蓝牙那次最典型,同一个坐标点三次三种结果:第一次坐标算错点到角落,第二次坐标对了但窗口在后台收不到,第三次激活了才关掉。三次的回显一模一样。现在动作之后内核自动做前后对比,判不出来就标一个「回去重看」,不算失败也不算成功。这套习惯连生图那边都用上了,脚本打了✅它也不信,非要去生成目录里看到当次新增的文件才认。
进化机制
写到这你大概能感觉到,这个skill的价值不在哪一条命令,在它怎么把坑变成工具。
第一版是三天写成的,正文近两万字符,全是踩坑日记。写完第二天我让Claude Code以产品负责人加架构师的视角评审自己,结论不太好听:核心资产是对的,但形态是一本日记而不是一个接口,教训全写进了prompt没写进工具,操作它的agent每一步都要自己算坐标、自己写DOM遍历、自己判断四种截图失败里是哪一种。有一场会话为了截9张图发了76条命令。
评审定了四个指标:每张有效截图的模型往返从8次压到2次以内;三个旗舰app首次截图成功率从1/3到3/3;读任务焦点占用恒为0;正文从19.8k字符压到6k以内。然后当天重构,坐标三种写法内核自己换算(agent永远不再做乘法)、截图失败自己诊断是哪种并改截兄弟窗口、AX内部查两次、跨桌面拒绝写、一条命令解析中文显示名启动app,正文压到4.8k,踩坑内容整段迁进references一条不丢。四个指标里我事后真回头量过的只有最后一个字符数,前三个是验收条件,还没系统复测。
之后的规矩就一条,每次收工先问「这条教训能不能变成工具行为」。能,就改代码不改文档;不能,才进references,而且单个app的观察只配待在app档案里,至少在两个不同app上重现过才能升正文。坐标、端口、窗口id、界面文案这些是易腐信息,产品一改版就废,永远不许作为结论写进正文。证伪旧结论的优先级高于新增,一条错记录会让下一轮直接走错层,比没记录更贵。
邮轮那一场的收工汇报就是这个规矩在跑👇
四条踩到的坑当场写进了app档案:后台模式新建材质没有默认节点要显式建;海面整片变白的根因是Ocean修改器的foam属性不是反射,之前两轮都在调反射;天空模型太阳方位角的约定它拿不准,渲了4张480×270的小图30秒测出来,0度在+Y、90度在-X;还有一条直接推翻了档案正文里的旧结论,open -g起的Blender窗口在别的桌面也能后台截到,正文原来写的是「从未渲染的窗口截不到」。这种事查文档反而慢,30秒的实验比任何一条技巧都值钱。8轮迭代每轮只修一个根因,而根因经常不是看上去那个,v1一片黑是曝光不是灯光,v2海面像镜子是Ocean修改器上叠了6000倍的物体缩放不是材质。每轮3到30秒的预览让猜错的成本几乎为零,这是走接口这条路相对GUI点击最大的隐性收益:可以像写代码一样迭代。
这跟我之前在微众培训上讲的是一回事,我不造harness,模型厂商的harness已经做得很好了,我做的是它跑的环境、喂给它的规则,还有skill。手和眼就是两个skill,huashu-chrome让agent带着我的登录态用我的Chrome,huashu-mac-use操控没有API的原生app。
最后
回到开头那批帖子。Theo那条「GPT-6 Astra is world class at Blender and 3 dimensional reasoning」一万两千多个赞,Tom Krcha拿一张老蒸汽火车的图纸让Astra在Blender里重建,几分钟出了3295个可编辑的物件,右边的物件清单塞得满满的。这些我都信,而且我自己也看得挺爽。这个skill终有一天会被模型自己的能力完全碾压覆盖,可能就是几个月之后的事。我觉得没任何问题,上一篇就说过该给GPT-6配台Mac了。但在那之前,短期内先给大家一个有用的工具,我觉得还挺好的。而且看图点鼠标这条路在Mac上到底有多稳,macOSWorld那篇论文测过顶级模型纯视觉在macOS上的成功率只有四成多,是Ubuntu的一半,所以「按app内核选通道」「不打扰用户」「留证据」这三件事,估计在模型层解决之前还得靠skill层顶一阵。
也欢迎大家通过国内的办公类应用去尝试测试,不管是WorkBuddy、豆包工作、千问办公还是ZCode、Kimi Work,它们都能读skill,我相信都会有不错的表现的。跑出问题直接来仓库提issue,档案里那些app我一个人测不过来。





