⚡
极限Harness工程
📖 注释版
百万行代码 · 日处理十亿Token · 零人工编写或审查
——OpenAI Ryan Lopopolo 深度访谈
OpenAI Frontier 团队 · 前沿产品探索
📖 含 52 个技术术语与原理解析
🔵 蓝色虚线 = 技术工具/框架(点击查看详细解释)
🟢 绿色虚线 = 产品/平台名
🟠 橙色虚线 = 概念/方法论/原理
🟣 紫色虚线 = AI模型相关
点击或触摸带虚线下划线的术语查看注释 👇
← 左右滑动翻页 →
人物与背景
WHO & WHY
本页要点
Ryan Lopopolo 来自 OpenAI Frontier 团队,负责前沿产品探索。他拥有 Snowflake、Brex、Stripe、Citadel 等企业级产品的深厚背景,是 AI 最大主义者的践行者。
主持人
你写了一篇重磅文章,关于 Harness 工程。这很可能会成为这一新兴学科的定义性文章。先做个背景介绍——你在哪个团队?
Ryan Lopopolo
我从事前沿产品探索和新产品开发,在 OpenAI Frontier 的领域。这是我们的企业平台,用于大规模安全地部署代理,具有良好的GRC治理。我和我的团队的角色是找出将我们的模型部署到打包终端产品中的新方法,作为解决方案出售给企业。
主持人
你的背景很有意思——Snowflake、Brex、Stripe、Citadel,然后看你的 Twitter,完全是 AI 全力以赴的心态。完美组合。
Ryan
作为一个 AI 最大主义者,如果你要坚持这个人设,OpenAI 是最好的地方。而且我们内部没有速率限制,可以全力投入。
极限约束:零人工代码
THE EXPERIMENT
本页要点
Ryan 设定了一个激进约束:不自己写任何一行代码。五个月内,3人团队用 AI 代理生成了超过百万行代码、1500 个 PR。前 1.5 个月比手写慢 10 倍,但最终效率提升 10 倍。
Ryan
我设定了一个相当大胆的约束——不自己写任何代码。如果我们试图让代理部署到企业中,他们应该能够做我所做的一切。在与这些编码模型合作了六到八个月后,我确实感到模型已经与我的能力同构。所以,唯一能做我工作的方式就是让代理来做我的工作。
Ryan
我们从最早的 Codex CLI 版本开始,使用 Codex Mini 模型。每当模型无法完成任务时,你就弹出任务,深入挖掘,构建更小的构建块,然后重新组合成更广泛的目标。前一个半月比我自己做要慢十倍。但正因为我们支付了这个成本,我们最终得到了比任何一个工程师都更富有成效的东西——因为我们为代理构建了工具和装配站。
"
代码是可处置的。前期投入的痛苦成本,最终换来的是远超个人极限的生产力释放。"
— Ryan Lopopolo
模型迭代之路
MODEL EVOLUTION
本页要点
从 Codex Mini 到 GPT-5.4,每个模型版本都带来不同的工作风格和能力跃升。团队需要不断适配代码库以应对模型的变化,包括构建系统从 Makefile 一路演进到 NX。上下文窗口的扩大是关键变量。
Codex Mini能力有限,无法组装复杂功能。迫使团队构建更小的构建块,形成装配站思维。
GPT-5 → 5.2没有后台 shell,依赖阻塞脚本执行长期工作。每工程师日均 3.5 个 PR。
GPT-5.3 + 后台 Shell模型变得不耐心,不再愿意等待长时间构建。构建系统必须在 1 分钟内完成——棘轮原则诞生。每工程师日均 5-10 个 PR。
GPT-5.4首个合并顶级编码与通用推理的模型。百万 token 上下文窗口。可直接写博客文章,不再需要在 Chat 和 Codex 之间来回切换。
Spark (5.3)不同架构的快速小模型。适合快速原型、文档更新、ESLint 修复等低复杂度任务。
构建系统演进
BUILD SYSTEM
本页要点
构建时间是代理效率的关键约束,直接影响内循环速度。团队将构建系统从 Makefile → Bazel → Turbo → NX 逐步演进,最终实现 1 分钟内完成构建的棘轮纪律。代码库采用Monorepo架构。
构建系统演进路径
Ryan
构建时间必须有纪律。如果你不控制它,它会不断增长。一分钟只是一个漂亮的整数,当超过时,我们就把它当作信号——停下来,分解构建图,把时间压回来。因为 token 如此便宜,我们可以与模型大规模并行地持续进行"园艺工作",确保维持这些不变量。
人类角色的演变
HUMAN IN THE LOOP
本页要点团队已超越人类审查代码的阶段——大多数审查是合并后进行的。人类唯一稀缺的资源是同步注意力,应该用系统思维来思考"代理在哪里犯错"。模型是平凡可并行化的。
Ryan
我们甚至已经超越了人类审查代码的阶段。大多数人类审查现在都是合并后进行的。模型是平凡可并行化的——只要我愿意花费足够的 GPU 和 token,就能获得与代码库协作的能力。唯一从根本上稀缺的是我的团队同步的人类关注力。
Ryan
你必须后退一步,采用系统思维的心态,不断问:代理在哪里犯错?我在哪里花费时间?我如何不再花那些时间,并对自动化建立信心?通常情况是,我们最初需要密切关注代码,因为代理没有合适的构建块来生成模块化、可分解、可靠且可观测的软件。
"我不应该深入每个
PR 的细节。这就像我在 500 人组织中担任小组技术主管一样——你用代码编写方式的代表性样本,来推断团队在哪里遇到困难。"
— Ryan Lopopolo
可观测性体系
OBSERVABILITY STACK
本页要点团队用半个下午搭建了完整的本地可观测性堆栈。核心思想是反转控制——不是为代理搭建环境,而是让代理成为入口点,自主决定何时启动堆栈。用 Grafana 做监控仪表盘。
可观测性堆栈 · 代理即入口
Ryan
这是推理模型与过去模型的根本区别。过去的模型无法思考,需要把它们放在盒子里,有预定义的状态转换。而现在,模型和 harness 成为整个盒子,我们给它一堆选项和足够的上下文来做聪明的选择。这就是反转控制的核心。
技能系统与自动化
SKILLS & AUTOMATION
本页要点团队从第一原理构建了"技能"体系:约 100 行的总体目录 + 小技能文件。包括技术债务追踪器、质量分数、制度知识文档等。模型渴望文本——关键是找到将文本注入系统的方法。
Ryan
技术债务追踪器和质量分数相当有趣——这基本上是一个 markdown 表格,是 Codex 的钩子。它可以审查应用中定义的所有业务逻辑,评估是否与所有记录的护栏匹配,并为自己提出后续工作。
Ryan
模型从根本上渴望文本。当我们因缺少超时遇到问题时,我可以在 Slack 上让 Codex 说"我将通过添加超时来修复。请更新我们的可靠性文档,要求所有网络调用都有超时。"我不仅做了一个时间点修复,还永久编码了这个制度知识。
- spec.md — 项目规范,引导代理的核心行为
- agent.md — 代理目录,约100行总体说明
- core_beliefs.md — 团队成员、产品、客户、12个月愿景
- 技术债务追踪器 — Markdown 表格 + cron 代理自动巡检
- 质量分数 — 代理决定何时使用,自主触发质量审查
代码审查自动化
AUTO CODE REVIEW
本页要点代码审查代理可以自主合并。团队定义了 P0-P2 优先级体系。关键洞见:编码代理需要有灵活性推迟或反对审查反馈,否则会陷入无法收敛的死循环——这就是PR流程中的"代理欺凌"问题。
代理驱动的 PR 流程
Ryan
最初,编码代理愿意被 PR 审查者"欺凌",导致无法收敛。所以我们需要给两边更多选项:审查代理被指示倾向合并,不表面大于 P2 的问题;编码代理也有灵活性推迟或反对反馈——就像人类工程师说"这个先归档到待办事项"一样。
完全委派:Dollar Land
FULL DELEGATION
本页要点Dollar Land 技能实现了完全委派——从推送 PR 到等待审查、修复不稳定因素、合并上游、进入合并队列,直到代码在 main 分支中。Git Worktrees 大量使用,模型擅长解决合并冲突。代码可处置性是关键心态。
Ryan
我们调用一个 Dollar Land 技能:推送 PR → 等待人工和代理审查 → 等待 CI 变绿 → 有不稳定因素则修复 → PR 出现冲突则合并上游 → 放入合并队列 → 处理不稳定因素直到进入 main。这是一个对人类有重大负担的流程,但代理完全有能力做到。
Ryan
是的,我们非常大量地使用 Git Worktrees。但模型在解决合并冲突方面真的很擅长。到了终端中状态不同步的地步,我几乎不在乎是否有合并冲突——代码是可处置的。
Ryan
所有代理做的工作包括:产品代码和测试、CI 配置和发布工具、内部开发工具、文档、评估工具、审查注释、管理仓库的脚本、Grafana 生产仪表盘定义文件——基本上什么都有。但因为我们构建原生应用(Electron+React),不做持续部署,所以人工仍在循环中进行发布分支切割和烟雾测试。
Symphony 编排系统
ORCHESTRATION
本页要点当每工程师日均 5-10 个 PR 时,上下文切换令人精疲力竭。Symphony 诞生的目的就是将人类从终端前解放出来。使用 Elixir/BEAM 构建,因为其进程监督和 gen servers 天然适合流程编排。包含重做状态机制。
Symphony 架构
Ryan
在 Symphony 中有一个重做状态:一旦 PR 被提议并升级给人类审查,应该是廉价的审查——要么可合并,要么不是。如果不是,你把它移到重做,Elixir 服务会完全清空整个工作树和 PR,从头开始。这又是一个机会来问"代理做了什么不好的事?"——修复反馈,然后继续。
幽灵库与依赖内化
GHOST LIBRARIES
本页要点Twitter 上称之为"幽灵库"——通过规范而非代码来分发软件。低到中等复杂度的依赖可以在一个下午内部化。内化抽象允许去除Postel 定律带来的冗余,只专注于实际需要的功能。
Ryan
与世界分享软件变得便宜得多——你定义一个规范,说明如何构建所需内容。流程非常巧妙:让 Codex 以我们的代码库为参考写规范,启动 TMUX,让一个 Codex 实现规范,另一个审查实现与上游的差异并更新规范。然后一遍遍循环,直到得到高保真度的规范。
主持人
Brett Taylor(OpenAI 董事长)也在回应你的文章,他说软件依赖项将会消失。
Ryan
100% 同意。当前我们能内部化的依赖复杂度是低到中等。一个数千行的依赖项可以在一个下午内轻松内部化。通过内部化抽象,你可以去除Postel 定律带来的通用部分,只专注于你需要的东西。而且当我们部署 Codex Security 时,它能深度审查内部化的依赖项,摩擦远低于推送补丁上游再拉下来的传统流程。
六层抽象架构
SIX LAYERS
本页要点Symphony 定义了六个层次:策略、配置、协调、执行、集成、可观测性。加上第零层——元反思:"我们工作得好吗?可以改进吗?"代理可以自省会话日志、修改自己的 workflow、切割自己的票证。
六层架构 + 元反思层
Ryan
策略层不需要写一堆代码——这就是你的制度知识。你只需给它 gh CLI 和一些文本,比如"CI 必须通过"。这使得系统维护容易得多。代理也可以修改自己的 workflow、切割自己的票证、通过会话日志自省来改进自己的使用方式。
CLI 与 Token 效率
CLI DESIGN
本页要点模型喜欢文本、CLI 和 Bash。CLI 对代理非常节省 token。关键实践:给 prettier 传 --silent,包装测试输出只显示失败部分,将非文本内容转为 ASCII 艺术。代理在潜在空间中感知世界。
Ryan
模型喜欢使用工具,喜欢 Bash,喜欢读文本。给它一个 CLI,让它自由发挥。CLI 非常节省 token,而且可以很容易地使其更节省。你会想给 prettier 传 --silent,因为代理不在乎每个文件是否已格式化——它只想知道是否通过。同样,测试套件的大量输出也需要包装成只输出失败部分。
Ryan
我们也一直在将非文本的东西转换成文本形式。代理看东西的方式与人类不同——它们在潜在空间中感知。如果想让代理看到布局,把图像光栅化为 ASCII 艺术并输入代理几乎更容易。我们也用 FFmpeg 自动录制代理操作的演示视频。
"Andrej Karpathy 说过英文是最热门的编程语言。这种说法已经成真了。"
— Ryan Lopopolo
Frontier 企业平台
ENTERPRISE VISION
本页要点OpenAI Frontier 的目标是成为每个企业 AI 转型的平台——部署高度可观测、安全、可控、可识别的代理。Agents SDK 是核心,提供默认工作的驾驭系统。安全规范针对特定企业定制。
Ryan
Frontier 是我们想要进行每个企业 AI 转型的平台。我们希望在工作场所部署高度可观测、安全、可控、可识别的代理变得容易。我们希望它与你的公司本地 IM 堆栈一起工作,能够插入你拥有的安全工具和工作空间工具。
Ryan
Agents SDK 是核心部分——它使初创公司创始人和企业开发者都能拥有一个默认工作的驾驭系统,包括 shell 工具、文件附件、容器等。安全规范是针对特定企业的。我们有责任让企业能够对代理进行检测,防止数据外泄,了解内部代号之类的东西。
Ryan
两个层面:最终员工——他们出现的任何界面、可访问的连接器;以及 IT、GRC 合规团队、AI 创新办公室、安全团队——负责以符合监管要求的方式成功部署到员工工作场所的利益相关者。
前沿与未来
WHAT'S NEXT
本页要点模型目前仍不擅长:从零到一的新产品原型、最严重的重构。但每月一次的模型发布在不断推动复杂性边界。核心理念:不要与模型能力的增长趋势对赌。驾驭应该在分布内构建。下一步是知识工作。
Ryan
它们绝对还没有做到从新产品想法到原型的一次性完成。这是我花大量时间指导的地方。同样,最严重的重构是我打断最多的地方。但这只会越来越好。在一个月的过程中,我们从低复杂度任务扩展到低复杂度和大任务两个方向。所以,不要与模型能力增长对赌。
Ryan
关于驾驭工程与模型训练的关系:如果我们构建的所有护栏都是代码原生的方式——像运行测试就是写可靠软件的一部分——那么对模型进步没有摩擦。但如果围绕 Codex 构建独立的 Rust 脚手架来限制输出,那种额外驾驭很容易被废弃。构建'在分布内'的策略,从那里修改它。
Ryan
Codex 刚超过两百万周活跃用户,周环比增长 25%。编码已经基本解决了。下一步是知识工作。让代理自然地与人类合作,意味着协作工具是一个有趣的探索空间。
"你可以做东西。这就是这一集的台词。这是一个非常光荣的未来,我们就生活在其中。"
— Ryan Lopopolo
— 全文完 —