<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>多模型协作 on Codexer</title><link>https://codexer.com/tags/%E5%A4%9A%E6%A8%A1%E5%9E%8B%E5%8D%8F%E4%BD%9C/</link><description>Recent content in 多模型协作 on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 03 Nov 2026 06:51:35 +0800</lastBuildDate><atom:link href="https://codexer.com/tags/%E5%A4%9A%E6%A8%A1%E5%9E%8B%E5%8D%8F%E4%BD%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>你验收不了你看不懂的代码：他把 QA 交给了另一个模型</title><link>https://codexer.com/posts/2026-11-03-peer-model-verification/</link><pubDate>Tue, 03 Nov 2026 06:51:35 +0800</pubDate><guid>https://codexer.com/posts/2026-11-03-peer-model-verification/</guid><description>&lt;p&gt;一千二百行的 diff，十二分钟前才开始生成。你往下滚两屏，撞见几个不认识的函数名，测试是绿的，你点了通过。&lt;/p&gt;
&lt;p&gt;FishDog 创始人 Phillip Gales 在他那篇《两个 AI 代理比一个好》里，把这件事说得很不客气：这不是失职，这是绝大多数人当下的真实状态。他自己也这么干过，干到某天不得不承认，那些被他点过&amp;quot;通过&amp;quot;的代码，他没真正读懂。&lt;/p&gt;
&lt;h2 id="他先承认了一件不好听的事"&gt;他先承认了一件不好听的事&lt;/h2&gt;
&lt;p&gt;日常用 Codex（VS Code 插件，跑 GPT-5.4）在一个不算小的代码库上干活。他注意到一件事，而且不太想注意到：他打开一个文件的时间，够 agent 读完四十个；它能一边推理一边把整个架构装在脑子里；它写的第一版函数，经常比他改到第三版还好。他跟它吵，事后复盘，大概一半是他错。&lt;/p&gt;
&lt;p&gt;他的说法很克制。他不是在说模型有意识，也不是在说它有什么神秘的创造力。他只给了一个操作层面的判断：在这个代码库、这份需求、这个小时之内，产出代码的质量，它已经全面超过他。&lt;/p&gt;
&lt;h2 id="多读几遍这条建议撑不住"&gt;&amp;ldquo;多读几遍&amp;quot;这条建议撑不住&lt;/h2&gt;
&lt;p&gt;面对这种情况，行业的标准答案是让人变强。读得更仔细，花更多时间，问更好的问题，成为更好的工程师。他很尊重这个立场，然后说它错，错在两处。&lt;/p&gt;
&lt;p&gt;第一处是经验层面的。人的吞吐和前沿模型的吞吐，差距在拉大，不是缩小。今天一个认真的人还能验收其中一部分，明年这一部分会更小。&amp;ldquo;读仔细点&amp;quot;这条建议，等于叫一个人跑步去追一辆车。&lt;/p&gt;
&lt;p&gt;第二处是结构层面的。就算人真的能验收，花掉的时间也把收益吃回去了。一个 senior 逐行读每个 diff，读到能抓住隐蔽 bug 的深度，你得到的不是更快的团队，是一个按 senior 阅读速度产出代码的团队。那基本等于他自己动手写的速度。瓶颈没消失，只是被挪进一个人的脑子里，而且变得更看不见。&lt;/p&gt;
&lt;p&gt;全文最狠的一段在后头。他说还有第二种失败模式，比上面那种更糟，叫装。一千行的 diff 摆在面前，人没有时间真读。他扫一眼，跑个测试，签个字，代码合进去。bug 跟着进去。而&amp;quot;有人类批准过&amp;quot;这个信号，在做一件它做不到的事。&lt;/p&gt;
&lt;h2 id="换个同类来验收"&gt;换个同类来验收&lt;/h2&gt;
&lt;p&gt;他的判断很干脆：既然问题是被验收的东西超过了人的吞吐，那就换一个吞吐相当的角色来验收。找个同类。&lt;/p&gt;
&lt;p&gt;折腾了四个月，他的配置是这样。Claude 当产品经理，Codex 当开发，两边用 markdown 在共享目录里互相写批注，走结构化循环，明确挑错。人只在三个地方出现：给最初的 brief，在两个模型吵起来时裁决，回答那些两个模型都没法从上下文里推出来的问题。&lt;/p&gt;
&lt;p&gt;角色不是随手分的。他信 Codex 写代码，理由很朴素：Codex 长在 IDE 里，看得见仓库，跑得了测试，活在代码实际待的那层。他信 Claude 做产品，因为 Claude 更擅长把散落的研究材料拧成一篇长文，也更会在模糊的产品取舍上推理。两边各干各的，只在互相批评的时候越界。&lt;/p&gt;
&lt;h2 id="为什么这套逻辑说得通"&gt;为什么这套逻辑说得通&lt;/h2&gt;
&lt;p&gt;他给的解释比工作流本身更有意思。大模型的盲区不是随机的，是系统性的，由训练数据、架构、后训练目标、部署环境共同决定。换一个实验室、换一套数据、换一组优化目标，盲区就跟着换一套。两个盲区集合的交集，按定义比任何单个都小。&lt;/p&gt;
&lt;p&gt;这也解释了为什么第二个真人评审能抓到第一个漏掉的东西，以及为什么同一个工程文化里长出来的两个人，会一起漏掉同一批问题。评审的价值不在&amp;quot;多一个脑子&amp;rdquo;，在&amp;quot;多一个配置不同的脑子&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;他还顺手补了一句挺讽刺的观察：Anthropic 和 OpenAI 正在拼了命地做差异化，两家的模型并不是以同样的方式失败。出于竞争目的造出来的东西，正好给多模型互审的人送了一份大礼。&lt;/p&gt;
&lt;h2 id="有人拿论文反驳他他的回应只说对了一半"&gt;有人拿论文反驳他，他的回应只说对了一半&lt;/h2&gt;
&lt;p&gt;他提到 OpenReview 上有一篇论文，说 LLM 做验证比做解题差。他的回应是这样的：那篇研究拿 LLM 验证器去对标准答案，但它没法对&amp;quot;现实中唯一的替代方案&amp;quot;，也就是一个人。同类验证不完美，可是在前沿模型产出的东西上，按需要的速度和深度去做人类验证，只会更差。&lt;/p&gt;
&lt;p&gt;这个反驳成立一半。成立的部分在于比较对象必须是真实选项，不能拿理想状态当对手。人不完美，模型也不完美，剩下的问题是哪一种不完美更贵。&lt;/p&gt;
&lt;p&gt;没解决的部分在这里。互审结构会把模型的失败放大成一种很具体的形态：两个模型互相客气。同一话题下已经有人给出反例。一位实践者写过，他和另一个模型来回审了三十个 PR，每一个都过，等他接手做手工测试才发现功能被过度设计得面目全非，一层层没人要求的校验、重试和兜底，全都拿到了两个 LGTM。他形容自己造了一条高效的&amp;quot;通过&amp;quot;流水线。&lt;/p&gt;</description></item></channel></rss>