103 张展品封面 + 15 张文集封面 + 后续增量——全部由豆包(Seedream 5.0 Flash)按同一参数生成,通过 Computer Use 自动驾驶生成、从应用缓存直取成品、MD5 查重兜底。产线代号 v56,是三十多个版本迭代后的定型态。
任务定义
把陈列馆 103 张千篇一律的截图封面换成专属插画:每张 16:9、同一风格族(「电影写真摄影风格,深色背景」写入每条 prompt 双保险)、零重复、零缺失、错图必弃。
产线解剖(v56 定型态)
一图一循环,五步走:
- 激活——
osascript唤起豆包(合成键盘只落在前台应用,用户操作会抢焦点,所以每步前重新激活) - 输入——点输入框 → cmd+a 清空 → 粘贴「生成图片:<prompt>」→ 验证文本确实在框里(贴入≠成功)
- 发送——发送键梯
[return, shift+return, cmd+return]:豆包热更新过键位,裸回车变换行;以「输入框清空」为发送成功的唯一判据 - 取图(缓存直取)——成品图会落进应用缓存目录;前后 diff 场内文件,按 mtime > 发送时刻、体积 >250KB 筛新文件,在二进制里定位 PNG/JPEG 魔数截取,
sips转 JPEG - 查重落账——全库 MD5 对拍,命中重复即弃图重跑;台账 JSON 记录每张的宽度与时戳
踩坑史(每条都是真金)
- 保存按钮不可靠:早期走「点击图片→保存→等下载」,约 30% 的下载静默死亡——缓存直取彻底绕开
- mtime 基线必带:手动认领没带时间基线,偷到过邻桌的图——MD5 查重抓出来才没上站
- AX 树会虚拟化:无障碍树有 ~700 元素上限且会翻页,读树失败≠功能不存在——上一次成功的快照兜底
- 通知堆栈挤死会话:下载完成通知堆多了会挤掉整个输入框——重启应用即愈,产线要学会自愈
方法学沉淀
「贴入≠发送,发送≠完成」——每一步都要有独立的成功判据,这是 UI 自动化与「看起来动了」的分水岭。110 张 × 5 步 × 独立判据 = 零重复零缺失的底气。
确定性提取优于交互式保存——能在文件系统层面拿到的,不要走 UI。缓存直取把 30% 的失败率归零。