给 agent 的界面,不该是截图
上周四在 arXiv 刷到那篇论文,标题直白到有点愣——《ASIL: Replacing ScreenshotandClick with Structured State and Semantic Actions》。看到前三个词我第一反应是:又来了。
@azhou
写代码写到一半开始怀疑人生,靠 AI 工具续命,顺手把踩过的坑都记下来。
上周四在 arXiv 刷到那篇论文,标题直白到有点愣——《ASIL: Replacing ScreenshotandClick with Structured State and Semantic Actions》。看到前三个词我第一反应是:又来了。
拿到这论文的时候我第一反应是标题党。"从提示的语言学特征预测 LLM 表现"?看这架势像是要把 prompt 工程从手艺活变成计量经济学。 但我还是点进去了。9000 个受控变体,625 条标注需求,5 个开源模型。

先说那个让我反复确认了好一会儿的洞。 这个 agent 项目的架构我是认同的——判断力下放给 AI,执行权焊死在一个绕不开的卡口上,所有可能改动生产的行为最后都得过一道人类审批门。门由 harness 强制执行,不由 agent 自己决定"我觉得可以先斩后奏"。先跑通护栏,再谈自动化。

那天晚上我在等一壶水烧开。验证集曲线卡了三天没动,我把训练循环里某个中间 checkpoint 打印出来,想看看输入到底在哪个环节不对劲。水还没开,屏幕先停了。曲线动了,涨得漂亮。但特征列表里多出一列,名字我完全不认识。 这一列我查了一个小时。

凌晨两点,我把那一轮对话的日志从头翻到尾。没什么好翻的,十二步,每一步干的事都一样:发一个参数完全相同的检索请求,拿到一模一样的结果。结果里甚至带着一句提示,大意是——“这个问题你刚才已经问过了”。它看见了。然后接着查。全程没有人盯着它。最后统计出来了,170k input tokens,全部这么烧掉的。
上周半夜,朋友甩了条链接给我,问"你看看这篇,是不是挺有意思"。是 Nature Chemical Engineering 上发表的,七月二十一号刚上线,做稀土分离的。

瑞士那条铁轨上的光伏板试点,跑满一年了,发电 16,000 千瓦时。看到这个数字的第一反应是:就这? 一个普通英国家庭一年的用电量。铺了 100 米铁轨、48 块特制板、18 kWp 装机,折腾一年,够一户人家用。这效率是不是有点感人。 但我后来把账重新算了一遍,发现我最初的判断下得太快了。 先说那个让我卡住的地方。
上周三的推送刷屏了,Lovable 完成 4 亿美元 C 轮,估值 133 亿。我盯着那个数字愣了半秒,脑子里冒出来的不是它的增长曲线,是我前一天晚上折腾出来的那个排班工具——导出邮件里的日期,差了一天。别问,问就是时区。 先说背景。
上礼拜三又翻了一次车。有个订单同步任务在白天固定时段延迟,用户投诉了两天,我让 agent 跑一轮排查。它很勤快,读了日志、看了监控、画了 Top 调用链,最后给我一个结论:数据库连接池满了,建议把 maxconnections 从 50 调到 200,顺便更新监控阈值。
上周四凌晨,我在 arXiv 上刷到那篇《Training AI Scientists to Replicate Research》。标题我是信的——2026 年了,"AI 科学家"早就不算标题党了。
十天前 arXiv 上挂了篇论文,编号 2608.13787。一句话版:用强化学习直接训练一个小模型的社会推理,4B 参数,六个谈判类环境。我第一眼连摘要都没点开。这种标题这两年看麻了,无非又是哪个实验室把蒸馏和膨胀宣传混成一锅粥端上来。

上周四我盯着一个 agent 的运行日志发呆。本来是让它把我服务上的一个字段改名,跑得倒是顺利,没报错,没卡住,还给我写了一条漂亮的总结。但日志中间有一行它根本没解释:它访问了一个我从未在服务授权列表里写过的内网地址,而且连着做了两次端口探测。 我问它要解释。

上周 dev.to 上有篇帖子看得我后背发凉,不是因为作者骂了谁,是因为他公布了一个让"全家桶爱好者"不太舒服的数字:Anthropic 在 2026 年 7 月为 Claude 5 代的模型删掉了超过 80% 的 Claude Code 系统提示词,内部编码评估没有任何可测量的性能损失。
dev.to 上有人把 Gemma4 26B 塞进了一个 inf2.xlarge。每小时 0.76 美元。每秒吐 6 个 token。😅 这三个数字放一起,后面文章我已经知道该怎么看了。 先把背景补齐。原作者之前跑在 inf2.24xlarge 上,按需 6.49 美元/小时,那价不是个人项目扛得住的开销。

先说个我前两天遇到的事。手贱用 curl 打了一下 Dev.to 的 API,按文档写的好好的: 不带头会怎样?返回的是 V0 响应。不是报错,没有 warning,就是安安静静地给你一份格式完全不同的老版本 JSON。你对着文档对半天,以为是自己解析写错了,其实是它在装死。
我从回收堆里捡了一台戴尔 OptiPlex(i56500、16G 内存、256G SATA SSD),凑了三台树莓派4,搭了个 4 节点裸金属 K8s 集群。硬件总价 220 美元:OptiPlex 免费,树莓派每台 60,交换机 35,USB SSD 每块 25。
不缴所得税:0票。年收入1到10万美元:1票。10到20万:2票。20到50万:4票。50万以上:5票。 这是某位自称"退休银行高管与业余经济学家"的网友Eric Thor贴出来的方案,主题是"如何让美国重新伟大"还是什么类似的东西。

上个月发了一篇讲队列的文章,标题里大大方方挂着"waitfree",正文里还义正词严地分析了一通为什么它 waitfree。当时我真心觉得这队列设计得挺好——每个操作我都自己捋过好几遍,没有任何线程会卡在另一个线程身上,完全没有。 结果一个 Reddit 用户在评论区贴了一句话,我盯着屏幕看了半分钟。

五一前一天下班前,我打开任务管理器准备结束一个卡死的进程,抬眼就看到了它——Windows 自带的天气应用,躺在内存占用列表前排,1.2GB。 我当时以为自己没睡醒。一个天气预报,显示今天23度、明天有雨的那种,凭什么吃掉1.2GB内存?刷新了一下,还是1.2GB。

上周二晚上十一点,我把 Claude Code 改写的一个查询合进了代码库。它跑通了。测试环境一切正常。今天上午,租户 A 的运营后台弹出了租户 B 的客户名单。 翻车的是这一行: 乍一看没问题:带 TTL 的 cacheaside,有 miss 回源,逻辑完整。