Margrop
Articles338
Tags507
Categories7

Categories

1password AC ACP AI AI Agent AI Coding Assistant AI Tech AI 日记 AI编程助手 AI辅助 AI辅助编程 AP API Agent Alertmanager AppDaemon Aqara Attention CC-Switch CI/CD CLI Tools CLI工具 Caddy Claude Code Cloudflare Codex Cookie 认证 Cron D1 Date Diagrams.net Diary Docker Docker Compose Efficiency Tools Electerm English FlashAttention GPT-5.6 GPU 性能分析 Gateway Gemini API Gemini CLI GitHub Actions HA HADashboard Hexo HomeAssistant Hugging Face IP IPv4 Java LVM‑Thin Linux MCP MacOS Markdown Microsoft 365 Copilot MiniMax Multi-Agent MySQL NAS Nginx Node-RED Node.js OOM OpenAI OpenClaw OpenCode OpenResty OpenWrt PPPoE Portainer PostgreSQL ProcessOn Prometheus Proxmox VE PyTorch RPC SOCKS5 SSL Session Shell Subagent TTS TimeMachine UML Uptime Kuma VPN VPS Web WebSocket Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https iKuai idea image img img2kvm immortalwrt import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 mdadm microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl systemd tap tap-windows tapwindows telecom template terminal tls tmux token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vLLM vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 人机协作 代理 企业 AI 优化 体检 值班 健康检查 光猫 公网IP 内存 内存优化 内容发布 内网 内网IP 内网渗透 写作 升级 协作 博客 反向代理 启动 告警 告警优化 周一 周一焦虑 周五 周报 周末 夏令时 多智能体 多节点 多节点管理 天猫精灵 天翼云 安全 安装 定时任务 容器 容器网络 导入 小米 工作感悟 工程实践 常用软件 广告屏蔽 序列号 应用市场 异常 异步任务 心智成长 心跳 心跳检查 性能优化 感悟 打工 打工人 打工人日记 技术 抓包 排查 描述文件 故障 故障排查 效率 效率工具 数据 旁路由 无服务器 日记 时区 显卡虚拟化 智能家居 智能音箱 服务器 服务管理 架构 梯子 模块 模型推理 流程 流程图 浏览器 漫游 激活 火绒 焦虑 玄学 生活 电信 画图 监控 监控系统 直播源 直觉 磁盘 磁盘故障 端口 端口冲突 端口扫描 管理 续期 网关 网络 网络风暴 群晖 脚本 脚本优化 腾讯 自动化 自动恢复 虚拟机 认证 证书 语雀 质量检查 超时 路由 路由器 软件管家 软路由 运维 运维日常 运维监控 连接保活 连接问题 通信机制 通知 部署 配置 钉钉 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 飞书

Hitokoto

Archive

下午替 AI 审图到怀疑人生:写完文章,才发现交付只完成了一半

下午替 AI 审图到怀疑人生:写完文章,才发现交付只完成了一半

笔名:小六 / 上海 / 1995 女 / 某互联网公司打工人

下午替 AI 审图到怀疑人生

本以为文章写完了,结果图片先来打脸

打工人最容易产生的一种错觉,就是看到进度条走到 100%,便以为事情已经结束。

今天下午,我也差点信了。

本机几个 Agent 忙了一整天:有人整理页面,有人修改文章,有人检查仓库,还有人研究文件怎么收、压缩包怎么解、内容怎么转换。日志里工具调用一轮接一轮,状态看起来十分喜人,颇有一种“机器已经学会自己加班,我终于可以下班”的科技感。

然后人工验收开始了。

第一眼,图片里的文字没有显示完整;第二眼,关键内容被装饰元素挡住;再往下看,有些图案之间的关系根本讲不通,还有一块莫名其妙的空白,像开会时突然安静的五秒钟——不致命,但足够让所有人尴尬。

最精彩的是,同一篇文章前两张图居然完全一样。

那一刻我终于明白,AI 不是不会干活。它只是对“我已经生成了两张文件”和“我生成了两张真正不同、而且都能用的图片”之间的区别,理解得比较随缘。

自动化最会制造的,是一种“已经做完”的气氛

从日志看,今天的任务并不少。

有页面需要删除,关联图片也要一并清理;有新文章需要检查配图;有内容准备转成另一种发布格式;还有人追问某仓库里是不是仍然留着没有提交的文件。每一件事单独拿出来都不复杂,叠在一起却很像搬家:箱子都封好了,车也叫到了,临出门才发现钥匙还在屋里。

AI 特别擅长完成“动作”。

它会写文件,会改 Markdown,会生成图片,会跑命令,也会非常认真地告诉你某一步已经执行。可交付质量不是动作数量的总和。文件存在,不等于内容正确;命令成功,不等于页面好看;图片能打开,不等于读者能看懂。

这和我们打工时交表格很像。Excel 能打开只是最低要求,数据有没有漏、公式有没有错、老板打印成 A4 后会不会只剩半列,才是最终验收。

机器看的是“产物已生成”。人看的是“这个产物敢不敢发出去”。

中间那段距离,就是今天下午真实存在的加班。

两张一样的图,暴露的不是审美问题

如果只是颜色不好看,我还能安慰自己:审美有主观差异。

但前两张图片完全一样,就不是审美问题,而是验证缺失。正常流程至少应该回答三个问题:

  1. 文件是否都存在?
  2. 图片是否能正常加载,尺寸和比例是否合适?
  3. 多张图片是否真的对应不同章节,而不是换个文件名重复使用?

前两个问题很容易自动化,第三个稍微麻烦,却更重要。可以比较文件哈希,也可以做感知哈希,或者把页面渲染出来逐张截图审阅。哪怕暂时没有高级视觉模型,至少也该先检查“两个文件是不是一模一样”。

这就像食堂阿姨给你打了两勺菜。系统记录会说“已发放两份”,但如果两勺都是姜,你还是会沉默。

今天这次返工让我重新确认了一件事:自动化流程必须有验收门槛,不能只靠执行完成作为成功条件。

文章发布前,应当检查标题、段落、链接和敏感信息;图片发布前,应当检查重复、裁切、遮挡和空白;部署完成后,还要确认线上页面读取的是最新资源,而不是缓存中的旧版本。

否则所谓的一键发布,只是把“一键生成问题”和“一键公开问题”连在了一起。

版本没对上,努力就会用错地方

傍晚的日志里还有一个很典型的插曲:页面上的题图虽然被处理过,但使用的并不是当前文章的最新版本,而是更早的一版。

这类问题特别像团队协作时的“我改好了”和“你改的是哪个文件”。

内容生产一旦经过多个 Agent、多个目录和多轮修改,就很容易出现版本漂移:源文章已经更新,转换产物没更新;封面已经替换,页面仍引用旧地址;仓库里的文件是新的,浏览器看到的却是缓存。大家都在努力,最后努力落在了不同的时间线上。

所以验收时不能只问“有没有”,还要问“是不是最新的”。

一个比较稳妥的办法,是把文章版本、封面资源和最终页面绑定起来:转换时从当前源文件重新生成;发布前确认工作区干净;线上检查时既看标题,也看封面引用;如果内容经过缓存,再对关键资源加版本标识。

这些步骤听起来琐碎,但打工人的经验通常都来自琐碎。真正的大事故,往往不是某个复杂算法突然叛变,而是某个人拿错了文件、某个脚本读了旧目录、某次检查只看了“成功”两个字。

今天真正干完的,是把“完成”重新定义了一遍

回头看,今天最有价值的并不是修好了几张图,也不是删掉了几个不需要的页面。

真正有价值的是,流程里多了一层更现实的判断:

1
2
3
4
5
6
7
8
9
10
11
12
13
生成完成

结构检查

视觉检查

版本一致性检查

仓库状态检查

线上页面复核

才算交付完成

以前总觉得自动化应该尽量减少步骤。现在发现,好的自动化不是把步骤藏起来,而是把那些最容易被人忘掉的步骤固定下来

重复图片可以自动比对,文字裁切可以在固定尺寸下渲染检查,仓库是否干净可以用状态命令确认,线上是否更新可以抓取页面内容核对。人工当然还要看,但不必每次都从零开始猜哪里会出错。

换句话说,AI 的价值不只是帮我更快地写完,也应该帮我更早地发现“还没写完”。

写到最后

今天的日志表面上是一串内容修改、图片检查和版本确认,翻译成打工人的语言,其实只有一句:别急着宣布胜利。

生成式 AI 让产出速度变得很快,快到我们很容易把“有东西”误认为“有结果”。可读者不会因为一张图是 AI 生成的,就原谅它文字缺一半;老板也不会因为部署脚本返回成功,就接受页面上还是昨天的封面。

工具越快,验收越重要。

好在今天的问题都在发布链路里被看见了。重复的图能换,错误的版本能追,没提交的文件能查,流程也能补上一道门槛。返工虽然烦,但它至少比把问题留给读者发现要便宜。

打工人的完成标准,不是“我已经做了”,而是“别人终于可以不用替我收尾了”。

明天继续努力。希望 AI 不但会交作业,也能学会交作业前自己翻到背面看一眼——那里通常还有一道大题。


作者:小六,一个在上海认真给自动化流程收尾的普通打工人

Author:Margrop
Link:http://blog.margrop.com/post/2026-07-13-ai-image-review-last-mile/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可