两个都对,合起来是错的
上周三晚上我干了件现在想起来还有点脸红的事。 开两个终端,两个 agent,改同一份代码里不同的地方。当时心里冒出来一句「又不冲突,各改各的,最后 merge 一下不就完了」。 merge 完,测试红了一片。 我干的第一件事是挨个审它们,问“你刚才动了什么”,想把出错的那个揪出来。问了一圈——两个都没错。

上周三晚上我干了件现在想起来还有点脸红的事。 开两个终端,两个 agent,改同一份代码里不同的地方。当时心里冒出来一句「又不冲突,各改各的,最后 merge 一下不就完了」。 merge 完,测试红了一片。 我干的第一件事是挨个审它们,问“你刚才动了什么”,想把出错的那个揪出来。问了一圈——两个都没错。

最近有个仓库在圈里传,harnessengineering101,讲怎么从第一性原理搭 AI agent。作者 Isuru Wijesiri。 先说它最要命的那句话。 LLM API 是无状态的。它不记得你上一句说了什么。每问一次,整段对话都得重新塞进去。 所以 agent 是什么?

凌晨一点多,我把那杯茶从左手边挪到右手边,其实早就凉了,挪一下只是给自己找个动作。屏幕上是 arXiv 几天前新到的一批,本来只想扫一眼标题就去接着改自己那段跑不通的代码,结果被一个标题绊住了,Breaking the highdegree barrier in Lehmer's problem with a h…
词用错了。 十月那篇 The Emperor Pelican Has No Clothes 我看了两遍。¹ 那些骑自行车的鹈鹕,像得过分。同一个侧身,同一只鸟,翅膀搭在车把上,连歪头的角度都差不多。 作者管这叫 LLM diversity collapse。 坍塌隐含一个参照点:从前有,现在没了。

让模型答完问题,顺带在结尾吐一个 confidence score,0 到 100,然后拿这个数做分流:高于 85 自动返回,低于 85 转人工。我见过不止一个团队真这么干。听起来有模有样。实际上这是拿一支从没校对过的温度计在量体温,量出来 38 度 5 就给人开退烧药。

九月中旬接的,朋友介绍的,一家做社区团购的公司,不大,技术那边就三个人(加一个兼职运维),要给他们小程序后端补一套接口回归脚本。我当时想这活我熟,测试干了八年,写脚本也不难,就报了八千,还主动给人抹了个零头。现在想想这一步就错了,报价的时候主动打折,等于告诉人家你自己都不确定自己值多少。
一天要问几次“这个函数到底谁在调”?我自己的答案大概是十几次。改一个方法之前先搜一遍调用方,改完之后再搜一遍,有时候一个名字搜出四五个同名不同库的,还得点进去一条条看。烦的不是搜,是每次都要重新从零建立一遍“这坨代码长什么样”。

今天差点把东西搞坏,到现在手还有点抖。 师傅上午丢给我一个活儿,说测试库里有几条订单的状态不对,让我手动改一下,改成已发货。我当时觉得这也太简单了,打开那个数据库客户端,连上去,敲了个 update orders set status = 3,然后想都没想就按了执行。
速评:10 月 22 日挂上 arXiv 的那篇 13 页论文,值得每个还在引用 SWEbench 分数的人翻一遍。不是因为它提出了什么新框架,而是因为它顺手把判分器拆开看了。 拆出来一句话:任务说明是自然语言写的,判分用的是上游项目自带的测试,这两样东西压根不在一个话语体系里。

速评:ULME 这篇,方法比标题老实。 10 月 22 日凌晨 4 点 23 分挂上 arXiv 的那版,编号 2610.30705,cs.CL 和 cs.AI 双挂,八个人署名,投稿说明一句“已投 AAAI 2027”。标题里最值钱的是 coupling,最虚的是 mutually reinforcing。
上周整整三天,我在跟一个 UnicodeDecodeError 绕圈。说句实话,写到这儿我脸上还有点挂不住。 事情本身挺蠢的。我在把两年前博客的备份导出来,一堆 md 文件,扔进一个脚本里批量处理,重新生成一个能看的索引页。这活儿不难,半天的事。我甚至都没叫 AI 帮忙,觉得这么点东西自己敲完拉倒。
Crowdwide 这个项目 Day 21 的时候,作者 Puneet Kumar Mishra 把核心功能、主算法、邮件系统、一个叫 Widewave 的推荐系统都做完了,自己宣布整体进入“mostly stable”。然后他干了一件听起来很对的事:花一整天专门打磨 UI——背景色组合、主题适配、sidebar。

旧稿是随手拟的,但这类句子你一年能读上百条: 我们的方法在多个基准上显著优于基线。 拿这句去问它到底承诺了什么,问不出来。“多个”是几个、哪几个,没说;“显著”是 p 值还是效应量,没说;“优于”比的是均值、中位数还是最好那一次,也没说。三个词,每一个都在替作者省事,代价是任何人都没法拿它去核对。

群里传的那几张截图,截的都是同一个数:28.2%。论文是 ProductWebBench,10 月 22 号挂上 arXiv,cs.SE 和 cs.AI 双挂,正文加附录 35 页。这数不是这篇里最值得转的那一个。 测试范围先划一下。
你有没有那种时刻:流水线页面七个作业,五个红的,点开第一个——空的;点开第二个——还是空的;点开第三个,你已经开始翻浏览器设置,怀疑是缓存、是插件、是这台电脑该换了。 都不是。作业压根没启动。

上周四早上刷 arXiv:2610.30562,标题里 lifetimevalid 这个词让我停了一下。本来想划过去——主分类 stat.ME,cs.AI、cs.LG、stat.ML 各挂一个,一看就是统计那边的人跨界来管我们这些乱来的人。 摘要第二段,0.183。

先打开配置数一下自己挂了几个 MCP server。我数出来 11 个,其中 4 个是半年前为了试某个 demo 装的,早就不用了,但一直还挂着,每次会话都跟着加载。 当初怎么装的?复制别人 README 里的那段 json,粘进去,重启,能用,然后再没打开过。

最近有个叫 KillSwitch 的东西在传。简单说,它是一门故意设计成让大模型和编码代理读不懂的编程语言。上周 Dominik Picheta 发的。 这期就讲它。后面跟几条短的。 怪在哪 语言本身没多少东西。栈式解释,函数、变量、if,就这些。 难的地方全在规范里。主规则是数标识符的字符数。
夜里翻一个搁了小半年的旧项目,想给它添个不起眼的功能,顺手把根目录那个指令文件从头读了一遍。读到第三行,人愣住了:上头写着我早就不这么干了的一条约定,写得斩钉截铁,末尾还加了个感叹号,像当年那个我在跟现在的我吵架。仓库里的代码早就拐到另一条路上去了,只有这行字还留在原地,像渡口边一块没人搬走的旧碑。

REGATTA,arXiv 2610.30924,10 月 22 号提交,作者 Luong Tuan Thanh 和 Abhijit Sanyal,ICoDSE 收的六页短文。我读到第四部分才第一次慢下来。
