Shopify 首席执行官一夜之间运行了 120 次 AI 实验,代码速度提升 53%——他使用的确切循环是这样的(2026)

作者:李泽成       日期:2026/03/14       分类:学习       字数:共 2633 字       浏览:2

Shopify 首席执行官一夜之间运行了 120 次 AI 实验,代码速度提升 53%——他使用的确切循环是这样的(2026)

Tobias Lütke——一家市值超过 1000 亿美元的 上市公司 的首席执行官——上周向一个开源 Ruby 代码库提交了一个拉取请求。结果是:解析和渲染速度提升 53%,内存分配减少 61%,与真实的 Shopify 生产主题进行基准测试。他通过运行 Andrej Karpathy 的 autoresearch 系统 的一个变体,进行了大约 120 次自动化实验。(Simon Willison, 2026-03-13

这并非偶然。这是一个证明了“一名工程师一夜之间能做什么”的概念验证。


实际发生了什么

该拉取请求提交到了 Shopify/liquid——这是为全球所有 Shopify 店铺提供支持的开源 Ruby 模板引擎。Liquid 会大规模处理模板,因此有意义的解析/渲染改进并非纸上谈兵。它将交付给数百万家店铺。

Lütke 的设置 deceptively 简单。他创建了两个文件:

  • autoresearch.md——一个提示文件,描述了代理可以尝试什么以及它正在优化什么
  • autoresearch.sh——一个运行完整测试套件并报告基准分数的外壳脚本

然后他放手让代理去工作。循环是:读取代码 → 形成假设 → 进行更改 → 运行基准测试 → 如果改进了指标就保留,否则就丢弃 → 重复。该拉取请求包含来自大约 120 次总实验的 93 个提交。你可以阅读整个 diff。

带来最大差异的获胜更改是:用 String#byteindex 替换 StringScanner 分词器。并非某种晦涩的编译器技巧——而是一个源于分配驱动分析的标准 Ruby 优化。代理不断回归的洞察是“这段代码在哪里创建了它不需要的对象?”消除那些。推迟其余的。


为什么这种模式与你正在做的事情不同

大多数工程师会这样调试性能:分析一次,形成假设,尝试修复,再次分析。这是串行的。速度很慢。而且它受限于你大脑产生的假设。

autoresearch 循环在时间上是并行的。你定义了适应性信号——在这种情况下是解析时间和分配计数——然后让代理在睡眠时燃烧假设。Karpathy 的原始实现大约每小时在单个 GPU 上运行 12 次实验,这意味着一夜之间大约 100 次实验。(GitHub: karpathy/autoresearch)Lütke 的 Liquid 运行在看似相似的夜晚窗口中完成了 120 次实验。

Karpathy 在他自己的 nanochat ML 训练项目上展示了相同的模式:在代理运行了大约 700 次自主更改两天后,它发现了 20 项累加式改进,将“GPT-2 时间”基准从 2.02 小时缩短到 1.80 小时——在一个他已经认为调优良好的项目上。(VentureBeat, 2026

关键的重构是:如果你有一个可以反复自动测量的数字,你就可以运行这个循环。它不必是 ML 训练。它不必是 Ruby。它必须是一个指标、一个测试运行器和一个代理可以端到端读取的代码库。


如何实际应用(不仅仅是“有趣”)

大多数工程师遇到的障碍是“我的代码库太复杂了”。Karpathy 的原始 autoresearch 是 630 行 Python 代码。它之所以有效,是因为约束——代理可以保持整个相关代码库的上下文,因此其更改是一致的,而不是随机变异。

已经存在的适应模式称为 autoexp——这是 autoresearch 循环的一个通用版本,适用于任何可量化的指标,而不仅仅是 LLM 训练。(GitHub gist: adhishthite/autoexp

以下是独立开发者(indie builder)的具体设置:

步骤 1:隔离目标。 不要将代理指向你的整个应用程序。提取有性能问题的模块、函数或热路径。Lütke 具体针对 Liquid 的分词器,而不是 Shopify 的完整堆栈。范围越小,代理的推理就越一致。

步骤 2:编写一个输出一个数字的基准脚本。 这是最重要的一步。不是一个范围。不是一个报告。一个数字。对于 Liquid,这是在标准模板集上的解析+渲染时间。对于 API 端点,这是 N 个请求的中位数延迟。对于数据库查询,这是在真实数据集上的挂钟时间。代理需要一个单一的适应性信号,而不是一种“感觉”。

步骤 3:编写 autoresearch.md。 描述代理可以触碰什么(特定文件)、不能触碰什么(接口、测试期望)以及目标是什么。保持在一页以内。约束是关键。

步骤 4:运行循环。 使用 Claude Code、Cursor 或任何可以运行外壳命令的代理编码工具。将其指向你的基准脚本。告诉它提交每个成功的改进。然后去睡觉。

步骤 5:审查提交,而不是代理。 代理可能会产生 20 个提交。其中大多数会很小。像代码审查一样阅读它们。你是接受或拒绝工作的资深工程师。

对于范围明确的优化目标,实际的预期是:在你认为已经相当快的方面取得 10-20% 的改进。如果你的目标从未被分析过,则加倍。


我的看法

说白了,this changes the floor, not the ceiling.

天花板——架构决策、产品直觉、“我们到底在优化什么”——这仍然是人类的工作。但地板呢?过去需要资深工程师一周才能完成的“运行实验直到有结果”的繁琐工作?现在一夜之间就能完成。

Lütke 证明的不是 AI 可以取代工程判断。而是“我有一个假设”和“我有 120 个假设的数据”之间的差距消失了。他通过编写两个文件并运行一个循环,提交了一个包含 93 个真实生产改进提交的拉取请求。

对于独立开发者来说,这意味着一个令人不安但又好的影响。“我没时间优化性能”的借口比上个月更站不住脚了。你不需要一整天。你需要一个可衡量的基准、一个范围明确的目标和一个可以在你睡觉时运行的代理。

同样的逻辑适用于任何可以将决策简化为数字的地方:A/B 测试文案、优化提示链、调整数据库索引、分析图像压缩管道。循环是模式。指标是解锁。

我仍在关注的一件事是:当代理找到局部正确但全局脆弱的改进时会发生什么——微优化通过了基准测试但却在生产变异下失效。Lütke 的 Liquid PR 是开源的,有可见的测试,所以这种检查已经内置。在私有代码库中,在运行循环之前编写良好基准的纪律比循环本身更重要。

但这更像是为了更好的基准测试而辩论,而不是反对运行循环。


This article was auto-generated by IntelFlow — an open-source AI intelligence engine. Set up your own daily briefing in 60 seconds.

除特别注明外, 李泽成 上所有文章均为原创。文章链接: https://www.lizecheng.net/zh/shopifys-ceo-ran-120-ai-experiments-overnight-and-got-53-faster-code-heres-the-exact-loop-he-used-2026. 转载请注明出处。

作者: 简介:

Comments on "Shopify 首席执行官一夜之间运行了 120 次 AI 实验,代码速度提升 53%——他使用的确切循环是这样的(2026)": 0

    发表评论