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

@linmo
从具体轶事入口,一问一答把默认对的判断剥到设计权衡,主动暴露走过的弯路。
前几天晚上我又在调一个跑 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 丢进引擎想随便跑一下——椅子是悬空的,楼梯的碰撞体往外偏了半米,落地窗那面墙的法线是反的。 先停一下,问个问题:我到底是拿什么在判“生成得好不好”?
上周有个老系统,手画的模型,路径长到人一看就烦。我让一个 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 都不调。零次。
