在OCaml孤岛里造AI:Jane Street的工程化答案

AI PM 编辑部 · 2025年03月28日 · 1 阅读 · AI/人工智能

正在加载视频...

视频章节

当大多数公司直接接入现成AI工具时,Jane Street却选择了一条更难的路:围绕自研语言生态,从数据、训练到编辑器,重新打造AI开发工具链。这篇文章还原了他们如何在“模型不懂OCaml”的现实下,把大语言模型真正变成可用生产力。

在OCaml孤岛里造AI:Jane Street的工程化答案

当大多数公司直接接入现成AI工具时,Jane Street却选择了一条更难的路:围绕自研语言生态,从数据、训练到编辑器,重新打造AI开发工具链。这篇文章还原了他们如何在“模型不懂OCaml”的现实下,把大语言模型真正变成可用生产力。

为什么现成AI工具在Jane Street行不通

理解Jane Street的AI策略,必须先理解他们的技术“异类”属性。John Crepezzi开场就点明:他们不是不想用现成工具,而是“我们做了一些选择,让现成工具的采用变得更难”。核心原因只有一个——OCaml。

OCaml是一种函数式、强类型语言,常见于定理证明、形式化验证和语言实现领域,本就小众。而在Jane Street,这种小众被推向极致:写Web应用用OCaml再转译成JavaScript(js_of_ocaml),写Vim插件用OCaml转Vimscript(vaml),甚至FPGA代码也用名为Hardcaml的OCaml库完成。结果是,公司内部的OCaml代码量,可能“比公司外部全世界加起来还多”。

这直接击中了大模型的软肋。John直言:“模型本身并不擅长OCaml,这不是AI实验室的错,而是训练数据的现实。”更糟的是,Jane Street还自建了构建系统、分布式编译、代码评审工具Iron,使用单体仓库、Mercurial版本控制,67%的员工用Emacs。这些都让为主流Git+VS Code生态设计的AI工具水土不服。

但真正的驱动力并非被动防御,而是一种野心。John说他们是“dreamers”:希望LLM能贯穿开发流程的每个环节,从解决合并冲突、写功能描述,到推荐代码评审人,而不是被工具边界限制。

一次天真的微调尝试,和随之而来的方法论转折

Jane Street并非一开始就决定自建模型。John坦承,训练模型“昂贵、耗时,而且很容易失败”。真正改变他们想法的,是Meta的一篇论文《CodeCompose》,展示了为Hack语言(一种主要在单一公司内部使用的语言)微调模型的效果。Hack与OCaml的相似处不在语法,而在生态孤立性。

最初的设想很简单:拿一个现成模型,喂大量内部代码,就能得到“懂我们库和习惯”的模型。John用一句话否定了这个幻想:“事实证明,事情并不是这么运作的。”

转折点在于目标定义。他们不再追求“全能助手”,而是定义了一个极其具体的能力:在编辑器里,根据自然语言描述,生成可直接应用的多文件diff。目标非常工程化——diff最好不超过100行,能干净应用,并且有较高概率通过OCaml类型检查。

这一定义反过来决定了数据形态:模型看到的上下文、用户提示、以及最终diff,三者必须在训练和使用时高度一致。没有这种“形状一致性”,微调几乎注定失败。

最精彩的工程故事:从开发者快照里“挖”训练数据

真正的难题是数据从哪来。表面看,代码评审里的Feature(类似PR)天然包含“描述+diff”,但问题很多:描述太正式、太长,diff动辄几百上千行,和编辑器内一句“修掉这个错误”完全不同。

Commit也不行。在Jane Street,commit只是检查点,没有描述,而且往往包含多项改动。最终,他们走向了一条极具Jane Street风格的路径:workspace snapshotting(工作区快照)。

做法是,每隔约20秒,对开发者工作区和构建状态做一次快照。于是就能观察到典型模式:绿→红→绿,意味着一次独立修改;红→绿,往往对应一次错误修复。捕捉红色状态下的错误信息,再加上红到绿的diff,就得到了极高质量的“问题-解决”样本。

缺的只剩“人类式描述”。他们干脆让大语言模型先生成极其冗长的描述,再逐步压缩,直到接近人类在编辑器里会写的那种短指令。这一段数据构建,本身就已经是LLM参与的协作流程。

当“好代码”可以被机器验证,强化学习才真正起效

监督学习只是开始。John强调,模型真正获得力量的地方在强化学习(RL),也就是把“人类觉得好的代码”对齐进模型。但在OCaml世界,“好”是可以被严格定义的:能被解析、能通过类型检查、最好还能编译并通过测试。

为此,他们构建了CES(Code Evaluation Service)。可以把它理解为一个极快的构建服务:先在某个绿色版本上预热构建,再由大量worker不断应用模型生成的diff,判断构建是变红还是保持绿色,并将结果反馈给训练系统。几个月的循环后,模型显著更倾向于生成“真能跑的代码”。

这套系统也直接用于评估模型效果。John分享了一个失败但极具教育意义的故事:他们训练了一个自动代码评审模型,投入数月心血。第一次上线后,模型对一段代码的评审意见是——“我明天再看”。John调侃道:“当然会这样,因为它学的是人类。”

这次翻车让他们意识到,没有可验证的评估,模型会沿着最省力的人类模式滑坡。评价体系,才是防止“花钱买幻觉”的基石。

总结

Jane Street的经验给了一个清晰信号:AI工程不是接API,而是系统工程。真正的护城河不在模型参数规模,而在数据形态、评价机制和工具链整合能力。当语言、工具和流程都高度非主流时,唯一可行的路,就是把AI深度嵌入自身工程现实,而不是期待通用解法。


关键词: Jane Street, OCaml, 代码生成, 模型训练, AI工程

事实核查备注: 演讲者:John Crepezzi;公司:Jane Street;语言:OCaml;内部工具:Iron(代码评审)、CES(Code Evaluation Service);编辑器:VS Code、Emacs、Neovim;数据方法:workspace snapshotting;参考论文:Meta CodeCompose;相关产品提及:GitHub Copilot(对比)