← 返回文章列表

代码、赌局与飞轮:大模型智能进化的隐秘路径

引子

在张小珺与罗福莉的那场对谈里,有一个观点让我想了很久。

罗福莉说,人类有史以来,能够给模型提供长上下文训练的数据类型,其实只有两种。一种是长篇文学作品,另一种是代码。但是文学太发散了——你翻到第80章,作者提起一个第3章出现过一次的角色,你完全不记得了,照样能津津有味地读下去。代码不一样。一个放错位置的括号,一个遗忘的参数名,整个程序就会崩溃。

也正因为如此,当大多数人都在用文学作品和网页文本喂养模型的时候,Anthropic 把重心压在了代码上。他们赌对了。

顺着这条线索往下看,你会发现一个更有意思的事实:Anthropic 在两场关键的赌局里,都做出了正确的选择。

石墨与金刚石

在聊下去之前,先澄清一个容易被搞混的概念。

有时候你会听到有人说,代码是“结构化数据”。但它在模型眼里,和数据库里那种规规整整的表格是两回事。代码的本质,是一种高度形式化的语言文本——它读起来像一行行连续的字符,但内部藏着比法律条文还要严苛的语法和逻辑。

罗福莉说的“唯二”,其实是在讲,代码和文学作品都天然具备三个条件:超长的序列、海量的存货、以及遍布全文的远距离依赖。但区别在于第四点——这种依赖的“硬度”。

想象一下,你在读一本几百万字的小说。第80章提到一个第3章出现过的配角,你完全不记得他了,但你的大脑会自动“脑补”出一个合理的画面,你仍然能看懂剧情。这就是文学式的长程依赖——它是软的、容错的、可以被糊弄过去的。

但代码不一样。你在文件末尾调用一个2000行前定义过的函数,如果你忘了它的参数顺序,多写了一个逗号,接下来的所有东西都会变成报错。模型在预测下一个token的时候,只要弄错一个关键符号,整个后续序列就全盘崩溃。

这就好比石墨和金刚石。都是碳原子,内部的排列结构不同,一个可以随手掰断,另一个却无坚不摧。文学作品和代码,虽然都是长文本,但对“精确记忆远处信息”的要求,一个像柳絮,一个像齿轮。

那么问题来了:自然界里还有没有第三种,同时具备长度、海量和这种硬度的数据?

数学证明?本质上是一种特殊的代码。科学模拟的日志?局部规律太强,总量也不够。法律合同、技术文档?它们依然是“人话”,存在歧义和解读空间。基因序列?依赖关系是统计性的,不是逻辑性的。

结论很清晰:如果要在自然界里找一种现成的、能强迫模型学会长距离硬逻辑的数据,代码几乎是唯一的答案。

一场适者生存的训练

这引出了一个更迷人的问题:把代码喂给模型之后,它的内部到底发生了什么?

这里面没有魔法,只有一场冷酷的筛选。

预训练的目标很简单,就是“猜下一个词”。在文学的世界里,这个游戏很宽容——你猜不出“他走进了___”,填“房间”、“大厅”、“花园”,都算你对。但在代码的世界里,生存法则是铁血的:猜不对,就出局。

久而久之,模型内部的“注意力头”——你可以理解为负责在上下文中“四处张望”的小探照灯——开始出现分工。研究者发现,训练充分的代码模型,会演化出一种专门从事超远距离精确复制的“拷贝头”。当模型需要调用一个函数时,这个探照灯会直接跨越几千个token,把光束牢牢锁定在函数定义的那一行,然后把名字和参数“搬运”过来。

不是工程师教会了模型要“看远点”。而是代码这个训练场,让所有不具备这项技能的模型,都倒在了损失函数的屠刀之下。

三个石匠

到这里,你一定会问:既然代码这么好,为什么在Anthropic之前,没人全力押注?

这就要说到一个关于“认知惯性”的故事。

当OpenAI的GPT-3在2020年写出莎士比亚风格的十四行诗、与哲学家谈笑风生时,整个行业都被震住了。那个画面太惊艳了,惊艳到让所有人的认知都锚定在了一个信念上:只要喂足够多、足够好的自然语言,智能就会涌现出来。

代码那时候当然也被用到,但角色卑微得多——它被看作一种“专项营养剂”,就像你想让模型会看X光片,就多喂点医学影像。大多数人的想法是:代码数据能让模型更会写代码,仅此而已。

这让我想起那个关于三个石匠的寓言。有人路过一个工地,问三个石匠在做什么。第一个说:“我在砌墙。”第二个说:“我在盖一座教堂。”第三个说:“我在为上帝建造圣殿。”

大家都看到了代码这块石头。绝大多数人眼里,它是砌墙的砖——用来垒高编程分数的那面墙。但Anthropic的这群人,眼里看到的是圣殿——他们相信,代码训练的不是一项技能,而是一个抽象的、层级化的、严格推理的骨干网络。这个骨干,可以支撑起聊天、写作、推理、遵循指令。

在别人眼里,代码是“编程课”。在他们眼里,代码是“思维体操”。

一场豪赌

看到这一层已经很难,但更难的是——你敢为此下注吗?

大模型的预训练,是一场以月为单位、耗资数千万甚至上亿美元的工程。如果你决定把代码数据的比例从10%拉到40%甚至更高,你需要面对什么?

首先,你的模型在初期会变得“不好玩”了。它说的话不再那么华丽,写诗不再那么灵动,它变得干巴巴的。在那个大家争相攀比“谁的模型更有文采”的年代,这几乎等于自废武功。

其次,当时的评测榜单全是测“语言流畅度”的,根本测不出长程推理能力。你怎么向投资人证明,烧掉的几千万是值得的?

这需要的是一种很深的信念。你要相信,这种暂时的“干瘪”,是为了长出一副更可靠的逻辑骨架。你要相信,当所有人都在比谁的花开得艳时,真正决胜的是谁的根扎得深。

Anthropic恰恰是这样一群人——对“安全”、“可靠”有着偏执般追求的人。他们愿意为了未来的可靠性,牺牲掉当下的惊艳感。在那个GPT-3大放异彩的黄金时代,这是一种孤独的选择。

物理学家姚顺宇后来在与张小珺的对谈中,精准地用了“赌”这个字。他说,选择编程,实际上是Anthropic的一场豪赌。从结果上看,他们赌对了。

但这背后还有一条暗线。代码训练要真正发挥威力,有一个技术前提:模型的上下文窗口,必须长到能装下整个调用链。如果窗口永远只有一两千个token,那代码就永远是“瞎子摸象”。所以Anthropic在押注代码路线的同时,也暗中押注了另一个判断:长上下文技术一定会被突破。

这是一场连环赌。想到不易,笃信更难,而能等到技术条件成熟、亲手摘下果实的人,寥寥无几。

地基与建筑

到这里为止,我们的所有讨论,其实都停留在一个叫“预训练”的范畴里。

预训练是什么?就是“打地基”的阶段。用海量的网页、书籍、代码,把模型训练成一个博学但“无法无天”的续写机器——它只会顺着话头往下编,不懂什么是对话,什么是拒绝。

而我们现在能聊天的ChatGPT、Claude,都是经过了“后训练”的产物。后训练是“精装修”——用人类精心制作的范例,教会模型对话的格式;再用人类的反馈,让它学会什么是有用的、无害的回答。

就在我们的讨论触及这个边界时,腾讯的姚顺雨在一个访谈中说了这样一段话:

“今天Agent,尤其Coding Agent,有点像预训练一样,是每家模型公司都不得不做的基础能力。Coding Agent之所以本质,是因为当模型能控制file system、拥有container时,它就接近一个complete system。但做好Coding Agent需要远远超过coding数据本身,还需要聊天、搜索、推理等综合能力。腾讯的做法会更强调体系全面化、线上回流,以及对新范式的探索。”

这段话的价值,不在于提出了什么石破天惊的新理论。它只是准确地描述了当下正在发生的事情:Coding Agent已经从“一个有趣的应用”,变成了“每家都必须会做的基本功”。

这让我突然意识到,在引入“预训练/后训练”这个框架之前,我们所有的讨论,都浑然不觉地停留在预训练的领地上。罗福莉讲的是用什么数据打地基,Anthropic赌的是地基用什么材质。而姚顺雨这段话,把我们的视线引向了地基之上的建筑。

学徒的进化

姚顺雨提到的“Coding Agent”,就是Claude Code这类产品。你可以把它想象成一个能操控电脑的程序员助手——它会自己打开文件管理器,创建文件夹,写代码,运行,看到报错,然后自己修改,直到跑通为止。

这带来一个变化:模型在替你干活的过程中,会留下一条完整的“行动轨迹”。

它看到你的需求,分析,写了一版代码,结果报错了。它读了报错信息,发现自己忘了导入一个库,于是修改,再运行,又报错,这次是参数写反了,于是再改……最终运行成功。

这条“失败-反思-修正-成功”的轨迹,就是姚顺雨所说的“线上回流”的燃料。系统会自动把它收集起来,筛选出高质量的成功案例,打上“好”的标签;把那些反复犯错的轨迹,打上“差”的标签。然后用这些数据,再去训练模型。

这有点像古代匠人的“学徒制”。传统的预训练,是让学徒关在屋里读万卷书。传统的后训练,是师傅手把手教几套标准动作。而现在的Agent后训练,是让学徒直接上手干活,在试错、挨批、改进中,把肌肉记忆刻进骨头里。

姚顺雨点出的另一个关键是:做好一个能编程的Agent,光靠代码数据远远不够。它需要听懂你模糊的口语指令,需要自己去查文档,需要在多种方案之间做取舍。这就是为什么他说,Coding Agent的本质,是让模型接近一个“完整的系统”。

代码在预训练中铸就了逻辑的“骨架”,而Agent在后训练中,是在这个骨架上嫁接“血肉”——与人协作、应对意外、在真实世界中闭环执行的能力。

聚光灯的转移

近半年来,整个业界都在把精力和资源砸向后训练。这不是错觉,而是一个清晰的风向标。

当预训练撞上“数据墙”——地球上能爬的高质量文本和代码几乎被扒干净了;当“大力出奇迹”的路径越来越烧不起——训练一次要花掉几个小国家的年收入;竞争的重心,自然从“比谁力气大”,演变成了“比谁手艺精”。

预训练决定了模型能力的“基因”和“天花板”。但真正让模型彼此区分开的——为什么Claude更严谨、某个模型更会推理——几乎全是后训练的手艺活。你在后训练阶段用了什么配方、设计了什么样的奖惩机制、有没有建立“干活-反馈-再学习”的飞轮,决定了模型最终呈现出的“性格”。

但这绝不意味着预训练可以被轻视。没有预训练时用代码打下的那个逻辑地基,你再怎么精装修,也盖不出摩天大楼。

尾声:那些代码还写不出的诗

文章写到这里,按照常规的套路,应该落回Anthropic如何成功、代码如何重要。

但我想说点别的。

现在我们尝试用 Claude Opus 和 GPT 写古体诗。已经能做到对仗工整,平仄合律,用典也挑不出毛病。但读来读去,总觉得少了点什么。不是技巧的问题,而是那些诗里,没有“行行重行行”的无奈,没有“拣尽寒枝不肯栖”的孤绝,没有“人生如梦,一尊还酹江月”的苍凉。

从《诗经》到《离骚》,从李白到苏轼,人类几千年来最震撼人心的那些文字,从来不是精确计算的产物。它们诞生于具体的悲欢离合,诞生于某一个不可复制的黄昏,某一个再也回不去的渡口。

而代码,这种人类文明中最精确、最硬核的长文本,恰恰训练出了模型最令人惊叹的能力——严谨、可靠、长程推理。但正是这种训练,也让它离那种“说不清道不明”的创造力,还隔着一条看不见的河。

这或许是我们这场讨论的另一个注脚:模型学会了言出必行,但还没学会言为心声。

Anthropic用代码铸成了剑胚,用反馈磨出了利刃。这把剑可以披荆斩棘,可以完成越来越复杂的任务。但用它来写诗,写出的仍然是匠人的对仗,而不是诗人的眼泪。

这就是下一个需要回答的问题了。