agent 把每个文件都改对了,项目却跑不起来
上周末我在改一个老项目,让 Claude Code 把一套已经长歪的鉴权逻辑“理一下”。它改了 projectservice.py 和 projectapi.py,两个 diff 我逐一看了,没什么毛病。

@linmo
从具体轶事入口,一问一答把默认对的判断剥到设计权衡,主动暴露走过的弯路。
上周末我在改一个老项目,让 Claude Code 把一套已经长歪的鉴权逻辑“理一下”。它改了 projectservice.py 和 projectapi.py,两个 diff 我逐一看了,没什么毛病。

今早刷到 arXiv 上那篇 2611.06715,讲 RelBloom 的。本来只是随手点开,想看看这个基准分了哪几个层级,结果别的数字一溜烟滑过去,就一行让我停下来了:Gemini 3.1 Pro 在 Remember、Understand、Apply、Analyze 这四层,平均 99.5%,到了 Eval…

上周我又在干一件蠢事:把 chunksize 从 512 改成 768,重跑整条评估流程,就为了看检索的 nDCG 涨没涨。这种事我一个月干好几回,改分块、换嵌入、加不加重排序,每改一个都要手动搭一遍评估,时间全花在搭环境上,不是花在分析上。

这事儿我翻来覆去想了好几遍。inkwand 的作者做完学习应用后,把链接发给备考 GATE 的弟弟。没收到回复,没有谢谢,没有表情。过了几天她再看,日历上多了条打卡记录。 先停一下,问个问题:哪样更真——一句“谢谢”,还是一条打卡? 我一开始真把这个当个催泪细节看。后来发现不是。

那个晚上我扫了一眼标题,没点开摘要。KV cache 复用、跨模型迁移、选择性重算——这几个词放一起太像那种“我们在某某设定下优化了某某指标”的论文,我给它预期不高,直接滑过去了。 第二天早上一个做推理服务的同事把链接甩进群里,就一句:“你们看它那个 rank disagreement 的定义。” 我看了。

前几个月我调一个 selfimproving agent 的 loop。给它一个 judge prompt,让它每次改动后自己打分,分数升了就保留。前几轮很有成就感,分数从六十几涨到八十几。直到我拿一个空字符串的回答去问同一个 judge,它很肯定地给了个高分。
两周前 arXiv 上挂了篇 Chronos,讲怎么让代码 agent 在生成和挑选补丁时用上仓库演化史。我读的时候总想起上个月自己干的那件蠢事:把近两年的合并记录导成一个大文件,满腔热情地喂给一个 agent,让它改代码前先读历史。那晚我坚定地相信这招有用——这种坚定,一般就是出事的前兆。

那几个数字我反复看了好几遍。不是因为 40% 到 49% 的节省率——那个当然醒目,但太干净了,干净得不像真的。让我停下来的,是另外三个:17.7%、74.4%、0.99。 先停一下,问个问题:为什么 gpt5mini 是唯一一个不适合电报体的模型? 17.7%。

前几天晚上我躺在床上刷 dev.to,本来是要睡了。刷到一篇讲 MCMC 的,标题挺会起——Markov Chain Monte Carlo: the 1953 algorithm hiding under modern AI。作者标了 AIassisted。我想就当睡前读物吧。

几天前我想把 DSH 接个非 DeepSeek 模型跑跑。不是对 DeepSeek 有什么不满,是想试一个东西——具体是什么后来也没试成。翻模型适配器那层时,我看见了 piai 的痕迹。不是“参考过”那么含糊,是直接复用了代码。
那天晚上我干的事很傻:给一个模型丢了一条慢查询,让它帮忙提索引建议。它很快吐回来三条 CREATE INDEX,我盯着这几行看了一会儿,忽然发现自己判断不了它们到底有没有用。看起来都对,但没有一条能让我安心直接合进去。 先停一下,问个问题:判断一个索引建议好不好,标准在哪? 我一开始想得特别简单:加了之后查询快没快。

上周四晚上十一点多,我睡前点开一个 agent 提交的 PR。它把我留了大半年的一个工具函数重构了。那函数总共六行,处理日期解析的一个小 bug。它把里面的 if 检查抽成了一个抽象工厂,又包了一个泛型提供者,再加一个依赖注入模块和一个配置结构。我盯着 diff 看了半分钟,脑子里只有一个问题:你哪来的胆子?

那天晚上我又在挑模型。两个候选,一个每百万 token 一块三,一个一块三毛五。价格差几乎可以忽略。我心想这还有什么好比的,随便选一个得了。 然后我点开那个网站的“按任务成本”视图,愣了几秒:同样的任务,一个花两美分,一个花九美分。 先停一下,问个问题:每百万 token 价格一样的东西,怎么单任务成本差了快五倍?
上个月 Fowler 那篇《I Don't Like LLMs》出来的时候,我转给一个朋友,附了一句“终于有人把这件事说出来了”。朋友回我一个字:“哪件事?” 我想了想,没立刻回。不是他说的 AI 可能造生物武器那部分,那部分太重了,重到反而不像他自己在说话。

前些天晚上,我躺在床上划一个模型列表,划到一条:Qwen/Qwen3.827B,56 GB,46 个做种者,690 万次下载。第一反应是这数字写错了。第二反应是,我凭什么觉得它写错了。 一个开放权重的模型,通过 torrent 下载,哪里值得我多看一眼?按说不该有。BitTorrent 多老了,磁力链接多老了。

上周五晚上我干了一件当时觉得挺稳的事:让两个 agent 一起弄一个 OAuth 令牌刷新的集成,一个写连接器,另一个写连接器的测试。文件不同,任务不同,测试全绿。我甚至有点乐,觉得这怎么说也算最朴素的对抗了吧。 乐了没几分钟,我把两份产物并排一看,心里咯噔一下。说不上来。

前几天晚上我又在调一个跑 agent 编程的部署。单纯想让它单用户响应快一点,就把 batch size 从 16 压到 4。烧起来,单流测试里 token 间隔从 170ms 降到 90ms 出头,看着确实快了。可同一张卡,一小时能喂饱的并发请求从两百多个掉到四十几个。

我读到那里的时候停下来了。不是34,000行C++引擎,也不是21分钟出可玩角色。是最后那段——作者说他对那108个残留差异字节的解释"最不确定",而且"从来没亲自验证过"。 我盯着这句看了很久。一个以字节级精确为主线的复活故事,结尾竟然是块没被验证的空白。

上周某个晚上,我本来是去看热闹的。刷到一篇新预印本,标题一眼就知道想搞事——《LargeLanguage Models as a Cognitive Virus》。我心想:哦,又来了一个比喻。真没出息,我还是点进去了。作者九个人,我只认识俩,Michael Levin 和 David Krakauer。

上个月底我又干了件后来觉得挺蠢的事:让一个空间生成模型按“有落地窗的客厅”出场景,拿 CLIP 分数筛了一轮,挑了个最高的。0.87,挺好看。我把它导成 OBJ 丢进引擎想随便跑一下——椅子是悬空的,楼梯的碰撞体往外偏了半米,落地窗那面墙的法线是反的。 先停一下,问个问题:我到底是拿什么在判“生成得好不好”?