Joye Personal Blog

Back

Harness Engineering 与 Codex 生产实践

关于 OpenAI 团队如何在几乎 100% 由 Codex 编写代码的前提下构建生产级项目的实践整理。

Updated 2026年3月14日

核心内容#

这条 archive 卡片记录的是一篇我觉得非常重要的工程实践文章:

它最有价值的地方,不是“Codex 会写代码”这件事本身,而是:

当团队决定不手写代码,而是让智能体生成几乎全部实现时,软件工程的重点会如何迁移?

文章给出的答案非常清楚:

  • 人类不再主要负责写代码
  • 人类负责设计环境、边界、反馈回路和知识系统
  • 智能体负责执行
  • 软件工程的纪律,从“如何写代码”转移到了“如何设计让智能体可靠工作的系统”

这是我觉得最值得反复记的一点。

要点整理#

1. 核心口号不是 AI 替代人,而是“Humans steer, agents execute”#

这篇文章里最重要的一句话,其实可以概括为:

人类掌舵,智能体执行。

OpenAI 团队做的是一场极端实验:

  • 从空仓库开始
  • 几乎所有代码都由 Codex 生成
  • 包括:
    • 应用逻辑
    • 测试
    • CI 配置
    • 文档
    • 可观测性定义
    • 内部工具
  • 人类不直接写代码,而是通过提示、审核、设计约束和系统建设来驱动产出

文章里提到,三名工程师起步,后来扩展到七名工程师,在大约五个月里做出一个接近 100 万行代码 的真实产品,打开并合并了约 1500 个 PR

所以这篇文章讨论的已经不是“AI 能不能写个 demo”,而是:

  • 生产级项目
  • 持续部署
  • 故障与修复
  • 真实用户
  • 智能体优先的软件工程组织方式

2. 真正的瓶颈不再是写代码,而是环境设计#

文章一个很强的观察是:

早期进展慢,不是因为 Codex 不会写代码,而是因为:

  • 环境不够明确
  • 工具不够全
  • 结构不够清晰
  • 反馈回路不够直接

换句话说,问题不是模型不会,而是系统没有让模型可靠地会

所以工程师的新职责变成了:

  • 让目标可分解
  • 让上下文可读
  • 让规则可执行
  • 让结果可验证

一旦项目卡住,解决思路不再是“我手工去补这个功能”,而是:

智能体现在缺的到底是什么能力?这个能力能不能被显式地加入到系统里?

3. 代码仓库必须变成“智能体真正能读取的知识库”#

这是文章里我最认同的一部分。

对智能体来说,仓库之外的知识基本等于不存在:

  • Slack 讨论
  • 人脑里的隐性经验
  • Google Docs 里的口头共识

如果没有进入仓库,没有被版本化,没有被结构化地组织出来,它就不会稳定进入智能体的运行情境。

所以他们最后的做法不是维护一个巨大的 AGENTS.md,而是:

  • 用一个简短的 AGENTS.md 当地图
  • 把真正的知识放在结构化的 docs/
  • 让文档成为 record system
  • 通过 lint / CI / doc-gardening agent 持续清理和更新文档

这背后的理念很强:

给智能体的是地图,不是一本 1000 页的说明书。

我觉得这对任何 agent-first repo 都是特别重要的经验。

4. 要为了“智能体可读性”而设计系统#

传统软件工程讲的是 human readability。文章强调的是另一层:

agent readability

也就是:

  • 代码仓库能不能让智能体快速定位知识
  • UI 能不能被智能体读懂
  • 日志 / metrics / traces 能不能直接进推理闭环
  • 智能体能不能自己复现 bug、验证修复、收集反馈

OpenAI 团队做了几件非常关键的事:

a. 让 Codex 能直接读 UI#

  • 接 Chrome DevTools 协议
  • 能看 DOM 快照
  • 能看截图
  • 能导航和验证 UI

b. 让 Codex 能直接读可观测性#

  • 日志可查询
  • metrics 可查询
  • traces 可查询
  • 每个 worktree 对应临时、隔离的可观测性环境

c. 让 Codex 能在 worktree 里自助调试#

  • 每次改动可以起独立实例
  • 复现 bug
  • 验证修复
  • 录制前后对比视频

这一点我觉得特别重要,因为它说明:

智能体真正的能力上限,往往由可观察、可验证、可操控的系统边界决定。

5. 架构边界必须机械化,而不是靠人记住#

文章反复强调:

  • 不能只靠“团队约定”
  • 必须把边界写进 linter、结构测试、CI 规则里

他们采用的是非常强的分层架构:

  • Types -> Config -> Repo -> Service -> Runtime -> UI

再加上统一的 Providers 入口来处理横切关注点,比如:

  • auth
  • telemetry
  • connectors
  • feature flags

关键点在于:

  • 允许智能体在局部实现上自由发挥
  • 但在边界和依赖方向上零容忍

这其实很像:

对系统结构极端严格,对具体表达方式适度放权。

我觉得这就是 agent-first 时代很合理的工程纪律。

6. Lint / 规则 / “黄金原则”在智能体时代价值更大#

在人类主导开发时,很多规范会显得有点繁琐。
但在智能体主导开发时,这些规范反而变成倍增器。

因为:

  • 一旦规则明确
  • 智能体就能持续、规模化地遵守
  • 并且可以在所有 PR 中一致执行

文中提到他们会把很多“品味判断”机械化,比如:

  • 命名规范
  • 文件大小限制
  • 结构化日志规则
  • 边界验证原则
  • 避免 YOLO 式探测数据

这些被他们总结成一类更主观但可执行的“黄金原则”。

我非常认同这一点,因为这其实是在做:

把人的品味沉淀成机器可持续执行的系统约束。

7. 在高吞吐量智能体环境里,“等待”比“犯错”更贵#

这篇文章里还有一个很反直觉但很真实的观点:

在智能体吞吐量非常高时:

  • 出错后修复的成本变低
  • 等待人工阻塞的成本反而更高

所以他们减少了很多传统的人为阻塞合并门槛。
短生命周期 PR、快速修补、持续 refactor,可能比过度追求一次合并零缺陷更合理。

这不是说质量不重要,而是说:

在 agent-heavy workflow 里,质量控制应该更多通过自动化反馈回路来做,而不是靠人肉 gatekeeping 卡死流速。

8. “AI 残渣”是真问题,必须持续垃圾回收#

这个表达我觉得特别形象:

  • 完全让智能体写代码,会不断产生模式漂移和“AI sludge”
  • 如果不处理,代码库会慢慢熵增

他们最开始每周五花 20% 时间手工清理,这显然不可扩展。
于是他们把这件事也系统化:

  • 定期跑后台 Codex 任务
  • 扫描偏差
  • 更新质量等级
  • 自动发小型重构 PR

这像垃圾回收一样持续运作。

这个思路很值得记:

技术债不是等到最后统一还,而是像缴高息贷款一样,持续小额偿还。

当前理解 / 结论#

我对这篇文章的核心判断是:

它不是一篇“AI 编程更快”的宣传文#

它真正讨论的是:

  • agent-first repo 应该长什么样
  • 未来工程师的杠杆点在哪
  • 软件工程的纪律应该被放到哪里

最重要的迁移是:从 code craftsmanship 转向 systems craftsmanship#

过去强调:

  • 怎样手写更好的代码

现在更重要的是:

  • 怎样设计更好的环境
  • 怎样让上下文对智能体可读
  • 怎样让反馈闭环自动化
  • 怎样把边界和品味变成可执行系统

对我最有启发的三个关键词#

  1. Map, not manual
    • 给智能体的是地图,不是冗长手册
  2. Agent readability
    • 一切都要考虑智能体是否能直接推理和验证
  3. Harness engineering
    • 工程重点从写实现,转到搭建支撑智能体高效工作的 harness

对实际工作的启发#

如果把这篇文章转成更实际的工作建议,我觉得最有用的是:

1. 仓库要变成真实知识系统#

  • 关键共识必须入仓库
  • 文档要结构化
  • AGENTS.md 要短、稳、像地图

2. 让智能体直接看到 UI 和 observability#

  • 截图
  • DOM
  • 日志
  • 指标
  • traces

这些不是“高级加分项”,而是 agent workflow 的核心基础设施。

3. 把边界和品味写成代码#

  • lint
  • CI
  • structural tests
  • golden rules

能自动化的,就不要靠人脑记。

4. 持续做 doc gardening 和 AI sludge cleanup#

  • 文档会腐烂
  • 模式会漂移
  • 必须持续清理

5. 人类最稀缺的资源变成注意力#

文章里一个底层逻辑非常对:

未来最稀缺的不是代码产能,而是人类的时间、注意力和判断力。

待补充#

后面值得继续补的方向:

  1. 如何把这种工作流迁移到更小团队 / 个人项目
  2. 执行计划(exec plans)在 agent 工作流里的具体写法
  3. doc gardening / repo linting / quality drift 的自动化设计
  4. PR 生命周期缩短后,质量体系如何重新设计
  5. 这种模式对前端项目、全栈项目、基础设施项目分别意味着什么

相关链接 / 来源#

🗂️ This is a 🔬 research in the knowledge base.

Content may be incomplete or work-in-progress.

← Back