LLM 做 MBT,赢在短,但短的不一定是你想要的
上周有个老系统,手画的模型,路径长到人一看就烦。我让一个 agent 帮忙生成测试路径,它给了我一条挺短的路径。我美了五分钟,跑去和原模型对照,发现它把一条不该跳过的边跳过去了。不是它不会走,是它在“优化步长”这件事上太殷勤了。 然后我看到了那篇 arXiv:2608.27094。

@linmo
从具体轶事入口,一问一答把默认对的判断剥到设计权衡,主动暴露走过的弯路。
上周有个老系统,手画的模型,路径长到人一看就烦。我让一个 agent 帮忙生成测试路径,它给了我一条挺短的路径。我美了五分钟,跑去和原模型对照,发现它把一条不该跳过的边跳过去了。不是它不会走,是它在“优化步长”这件事上太殷勤了。 然后我看到了那篇 arXiv:2608.27094。

前几天深夜,我刷到一篇医学影像代码生成的论文。全自动,多智能体框架。标题扫过去,我其实没太在意——这类东西今年太多了。可摘要里有五个字把我绊住了:zero human intervention。零人工干预。 先停一下,问个问题:我们这些天天琢磨怎么跟 AI 协作写代码的人,什么时候开始把“人完全不插手”当成一个卖点了?
上周让 agent 写一个处理 CSV 上传的脚本。写完,测试全过。我 diff 了一眼,看到一行: 脑子里“咔”了一下。功能是对的,测试能证明。但这行代码里两件事同时在发生:写对,和写得不安全。以前我默认这俩是同一个能力的两个表现——模型学得够多,就既对又安全;没学够,就既错也不安全。

刷到 PG 那条回复的时候,我第一反应是:又来了,两个老人在怀旧。LeCun 还在底下接了一杠,说的更不近人情。 PG 说,如果他现在是17岁,会从头构建一个大语言模型。LeCun 说,他会去搞另一个问题——为什么 LLM 能写文章,却没法打扫卧室。 第一眼,这不就是老子当年要是年轻二十岁早被关进去了的科技圈版本吗。

八月初 Chris McCormick 写了篇文章,说他不读大语言模型生成的虚构小说。这结论本身我没多大兴趣——现在这类表态满大街都是,早就不好奇了。让我停下来的,是正文前面那行斜体小字:“本文由一位人类撰写。” 这行字有用吗?拦不住谁骂他偏激,也解决不了一丁点语法问题。它唯一的作用,就是先把你的阅读预期换掉。
8月12号挂arXiv那篇GCPO,我一开始没点开。组里有人丢到群里,说GRPO后训练那些老毛病——reward还涨着、eval忽然掉、length一路膨胀——终于有人从参数几何的角度给了个解释。
真正要盯的是“无需训练”这四个字。我第一次看到,也差点松一口气——没有优化器、没有梯度更新,听起来就像把两截水管拧上就能通水。但既然它叫 StateBridge,不叫 CopyState。

前几天我又在跑一个写 Bash 的 agent 评估。同一个模型、同一组任务、同一温度,就换了个接收输出的包装,分数从 71 掉到 18。同事在旁边瞅了半天,第一句是:“你是不是把 prompt 改坏了?”我没改 prompt,连输出都没改,改的是执行前那段解析逻辑。
上周四晚上,我让 Claude Code 把一段我标记了三个月的 SQL 注入清掉。它修完,跑通,测试全过。我本来想直接合进主干,临了多看了一眼 diff——修掉的那处在 users 表的查询上,改成了参数化,标准得无可挑剔。但就在同一块逻辑往下数十几行,一段跟它长得几乎一样的拼接,它一个字没动。
上周让 Claude Code 动一个两个月没碰的仓库,改支付回调。它改完,测试全过。我多留了个心眼,回头看它这一路翻过哪些文件——定义回调接口的 base 文件,不在它的清单里。 先停一下,问个问题:它没读,凭什么改对? 不是运气。它改出来的调用签名严丝合缝,运气没这种准头。剩下只有一种解释:它记得。
我一直在想,为什么用 embedding 去找“相关代码”这件事,在仓库里会这么容易扑空。上周我又干了一回。 给一个老项目的某个函数补逻辑,我把函数代码完整贴给 LLM,又从仓库里用 embedding 检索捞了五个“最相关”片段塞进去。生成的结果语法对,风格对,测试跑不过。 我回头看了一眼那五个片段。

前阵子查一个配置漂移,让 agent 在 preprod 上跑调查。每跑一轮,我就把整段 transcript 原样塞回上下文,心里想的是“留着有用”——万一后面要引用呢。跑到第五轮,它忽然把三小时前已经排除掉的一个猜想又捡了起来,说得还很笃定,像刚发现新大陆。 我先愣了一下,然后骂的是自己。不是它变笨了。

第三天改同一个开头的时候我才反应过来。不是它写得不够好,是我一直在替它打工。让它把开头改利索点,它换掉两个形容词;说太温了,它把“值得关注”改成“令人不安”;我干脆火了,说“你给我像个人那样说话”,它来了一句“坦白说,这件事确实透着古怪”。还是不像我。 我把窗口摔在一边,脑子里冒出个问题:它为什么就是学不会我?

前几天晚上我又在干蠢事。半年没更新的博客,后台一堆死链,样式也对不齐。我扫了一眼,决定“至少把 agent 入口做了吧”——llms.txt,半小时的事。典型的拿小工程逃避大工程。 然后卡住了。格式没什么,H1、blockquote 摘要、几个 H2,对着 llmstxt.org 的样例十分钟就能搭出来。

几个月前我开始让 LLM 碰我的 MikroTik 设备。先交代一下我的成分:业余网络管理员,给朋友办公室和自己工作室配配路由,真让我考个正经的路由工程师认证,不认真复习肯定过不了。所以每次配新东西,我都是边查 wiki 边配。

前几天翻到 Giulio D'Erme 那篇 "The Answerability Problem" 系列第四篇,讲一个叫 REcall 的开源记忆层。这东西有个很挑衅的设计:写入的时候一个 LLM 都不调。零次。

前几天晚上我在调一个 agent,它死活不听话。我塞给它的背景信息够详细了——几十页内部文档、历史对话、一堆规则——但它就是会在最关键的判断上翻车。我第一反应是:是不是 context 不够大? 后来冷静下来,发现方向反了。 先停一下,问个问题:你觉得你塞进 context 的每一段信息,模型都在认真读吗?

七月初有篇短文在我时间线上晃了好几天。作者遇到一个行业里没什么共识的难题,跑去约一位前辈聊天,对方听完给了一句:你去问 Claude 吧。 她说她已经把 Claude 问烂了,才来找人的。 先停一下,问个问题:为什么一个有几十年经验的人,会把一个具体的、带个人判断色彩的问题,推回给模型?
前几天刷到一个项目 esp32ai,在 ESP32S3 上跑了个 2890 万参数的语言模型。 第一反应是"这怎么可能"。这芯片 SRAM 才 512KB。两千多万参数哪怕用最狠的量化,光权重也得吃掉几十兆,怎么塞进去的?

上周有个 PR 在我眼前过,我盯着 diff 看了十秒,目光就滑到下面那一长串机器人 review comment 上去了。一整面墙。左边贴代码行,右边引经据典,语气礼貌,列了七八条。读到第四条我突然回过神——我刚才在看什么? 我在看机器人写的小作文。代码一行没看进去。
