导出设置

预览

原始内容首次渲染后会自动收起,仅在需要时展开查看。

2026-02-11 | OpenAI | Harness Engineering: Leveraging Codex in an Agent-First World

类型: 详细摘要 模型: gpt-5.4 创建时间: 2026-03-06 13:07

核心概览

作者介绍团队在过去5个月进行的一次内部工程实验:从空仓库出发,用 Codex 构建并交付一个内部测试版软件产品,且已有内部日常用户和外部 alpha 测试者,团队严格坚持零人工手写代码,包括应用逻辑、测试、CI 配置、文档、可观测性和内部工具都由 Codex 生成。团队估计,整体开发耗时约为手写代码方式的十分之一,并在约百万行代码、约1500个 PR 的规模上验证了这种模式。文章的核心判断是,软件工程师的职责正在从直接写代码,转向设计环境、明确意图、组织知识、建立反馈闭环和机械约束,让智能体能够稳定地产出、验证、修复并合并改动。全文重点总结了仓库知识化、架构强约束、UI 与可观测性对智能体可读、低阻塞合并策略,以及如何持续处理高自治系统的熵增与长期一致性风险。

关键议题与详细总结

实验设定与总体成果

  • 团队从2025年8月底向一个空的 Git 仓库提交首个版本开始实验。
  • 初始脚手架包括仓库结构、CI 配置、格式规则、包管理器设置和应用框架,均由 Codex CLI 配合 GPT-5、少量现有模板生成。
  • 连指导智能体如何在仓库中工作的 AGENTS.md,也是由 Codex 编写。
  • 团队明确将零人工手写代码设为核心哲学:人不直接写代码,所有代码改动都必须由 Codex 完成。
  • 该产品不是演示性质的静态样品,而是一个会发布、部署、出故障并被修复的真实系统,并且已经有内部高频用户在日常使用。

工程师角色被重新定义

  • 文章用一句话概括新的分工:人类负责引导,智能体负责执行 (Humans steer. Agents execute.)。
  • 作者认为,早期进展慢,主要不是因为 Codex 能力不足,而是因为环境定义得不够充分:
    • 缺少足够清晰的工具;
    • 缺少适合智能体推进任务的抽象层;
    • 缺少让智能体朝高层目标持续前进的内部结构。
  • 因此,工程团队的主要工作变成了让智能体具备有效工作的条件,而不是亲自补写代码。
  • 实际做法是深度优先拆解任务,把大目标分解成设计、实现、审查、测试等更小的构件,再让 Codex 分别完成。
  • 当任务失败时,团队不会简单要求模型再试一次,而是反问:
    • 缺了什么能力;
    • 这些能力怎样才能被智能体清楚理解;
    • 如何把规则变成可验证、可执行的机制。
  • 人类与系统的主要交互方式几乎都是提示词:工程师描述任务、运行智能体、让它创建 PR,再通过多轮审查和反馈循环推进到可合并状态。

代码审查与开发闭环的变化

  • Codex 不只是写代码,还会:
    • 在本地自审改动;
    • 请求额外的本地或云端智能体审查;
    • 响应人类或智能体提出的反馈;
    • 循环迭代直到审查通过。
  • Codex 直接使用团队原有开发工具,如 gh、本地脚本和仓库内嵌技能,不依赖人工复制粘贴上下文。
  • 人类仍然可以审查 PR,但文中强调,随着系统成熟,团队已将几乎所有审查工作尽量推向智能体对智能体的方式处理。

为什么瓶颈从写代码变成了人类质检能力

  • 随着代码吞吐量快速上升,团队真正的瓶颈不再是写代码速度,而是人类 QA 的容量
  • 团队的解决方向不是减少产出,而是提升智能体的自我验证能力,让应用本身对 Codex 更可读。
  • 具体措施包括:
    • 让应用能按 git worktree 独立启动,使 Codex 能为每个改动运行一个隔离实例;
    • 把 Chrome DevTools Protocol 接入智能体运行时;
    • 为 DOM 快照、截图、页面导航等操作编写技能。
  • 结果是,Codex 能直接完成以下工作:
    • 复现界面错误;
    • 验证修复;
    • 理解 UI 行为是否符合预期。
  • 团队还把日志、指标和追踪暴露给 Codex,通过本地、临时性的可观测性栈为每个工作树提供隔离环境。
  • 智能体可使用 LogQL 和 PromQL 查询信号,因此一些更接近性能与稳定性的目标也变得可执行,例如:
    • 启动耗时控制在某一阈值内;
    • 核心用户路径中的单个 span 不超过某一时长。
  • 文中提到,单次 Codex 运行经常能在同一个任务上连续工作6小时以上,甚至发生在人类休息时。

仓库知识为什么必须成为唯一真相源

  • 作者将上下文管理视为大规模智能体工作的核心难题之一,并提出关键原则:给 Codex 一张地图,而不是一千页说明书 (give Codex a map, not a 1,000-page instruction manual.)。
  • 团队曾尝试使用一个大型 AGENTS.md 文件统一装载规则,但效果很差,原因包括:
    • 上下文资源稀缺,超长说明会挤占任务与代码本身的注意力;
    • 信息过多会削弱真正重要的约束;
    • 大而全文件极易过时;
    • 单一大文档很难做机械校验,漂移不可避免。
  • 因此,团队改为:
    • 用一个约 100 行的简短 AGENTS.md 充当目录;
    • 把真正的知识库放到结构化的 docs/ 目录中;
    • 让架构文档、产品规格、执行计划、技术债跟踪、质量文档等都版本化并与代码共存。
  • 这种做法的目标是渐进披露:先给智能体稳定、简短的入口,再明确告诉它去哪里找更深层的信息,而不是一开始就塞进海量说明。
  • 团队还用 lint 和 CI 机械地检查知识库是否最新、是否交叉链接、结构是否正确,并用一个周期性运行的文档园艺智能体扫描过期文档、自动发起修复 PR。

智能体可读性被提升为首要目标

  • 作者提出,既然整个仓库都由智能体生成,仓库优化目标就不应先是人类审美,而应先是智能体可读性
  • 文中给出的关键判断是:它在运行时无法在上下文中访问的东西,对它来说实际上就不存在 (anything it can’t access in-context while running effectively doesn’t exist.)。
  • 这意味着:
    • Google Docs 里的说明;
    • 聊天工具中的讨论;
    • 人脑中的默会知识;
    • 若未被编码进仓库,对系统来说就不可见。
  • 团队因此不断把原本散落在外部的信息推回仓库中,以 Markdown、schema、执行计划等形式沉淀下来。
  • 这种策略不仅有助于 Codex,也有利于其他协同智能体共同操作同一代码库。

技术选型如何围绕智能体展开

  • 团队更偏好那些被称为朴素、稳定、可组合的技术,因为它们更容易被智能体建模和推理。
  • 作者认为,一些公共库虽然功能现成,但行为不透明、抽象不贴合仓库上下文,反而会增加智能体工作难度。
  • 因此在某些场景下,团队宁愿让智能体自己重写一个小型能力子集,也不愿围绕不透明上游库做复杂适配。
  • 文中的例子是:
    • 团队没有直接引入类似 p-limit 的通用包;
    • 而是实现了自己的并发映射辅助工具;
    • 该工具与 OpenTelemetry 深度集成、测试覆盖完整,并精确符合本仓库运行方式。

架构与风格如何被机械化执行

  • 作者强调,单靠文档不足以维持一个完全由智能体生成的代码库的整体性。
  • 团队的方法不是盯住每一处实现细节,而是强制执行不变量,而非微观管理实现方式
  • 一个典型例子是,团队要求 Codex 在边界处解析和确认数据形状,但不硬性指定必须使用哪一个具体库。
  • 在整体架构上,团队构建了严格分层的业务域模型,依赖方向受到机械约束。
  • 文中给出的层次顺序是:
    • Types → Config → Repo → Service → Runtime → UI
  • 横切关注点,如认证、连接器、遥测、特性开关,只能通过明确的 Providers 接口进入。
  • 这些规则通过自定义 lint 和结构测试执行,而且这些工具本身也是 Codex 生成的。
  • 除了架构边界,团队还编码了一小组风格不变量,例如:
    • 结构化日志;
    • schema 和类型的命名规范;
    • 文件大小限制;
    • 平台特定的可靠性要求。
  • 由于 lint 是定制的,错误消息也被设计成对智能体友好的修复指令,从而把规范直接注入后续上下文。
  • 作者认为,这些规则对人类开发者看上去可能过于苛刻,但在智能体环境中反而会形成乘数效应。

吞吐量变化如何改写合并哲学

  • 随着 Codex 产出速度大幅提高,许多传统工程规范在文中被视为开始失效,甚至变得有害。
  • 团队采用的合并策略包括:
    • 尽量减少阻塞式合并门槛;
    • 维持短生命周期 PR;
    • 测试波动问题优先通过后续运行修复,而不是长期阻塞主线推进。
  • 作者的判断是:在智能体吞吐远超人类注意力的环境中,修正很便宜,等待很昂贵 (corrections are cheap, and waiting is expensive.)。
  • 同时,作者也明确指出,这种策略并不适用于低吞吐环境;如果没有类似产能与修复速度,照搬会是不负责任的。

文中对智能体生成的定义非常彻底

  • 所谓智能体生成代码库,在文中不是指主要功能代码由 AI 写,而是指几乎整个仓库都由智能体产出。
  • 文中列出的生成范围包括:
    • 产品代码与测试;
    • CI 配置与发布工具;
    • 内部开发者工具;
    • 文档与设计历史;
    • 评估框架;
    • 审查评论与回复;
    • 管理仓库自身的脚本;
    • 生产仪表盘定义文件。
  • 人类并未消失,而是停留在更高抽象层:
    • 排定优先级;
    • 把用户反馈翻译成验收标准;
    • 验证最终结果。
  • 当智能体遇阻时,团队把这视为系统缺口的信号,然后把缺失的工具、护栏或文档补入仓库,并且仍然由 Codex 来完成这些补丁。

自主性已经提升到什么程度

  • 文中称,随着测试、验证、审查、反馈处理与故障恢复等环节被逐步编码进系统,仓库最近跨过了一个重要门槛:Codex 已能端到端推动一个新功能完成。
  • 在单个提示下,它现在能够:
    • 校验代码库当前状态;
    • 复现缺陷;
    • 录制故障演示视频;
    • 实现修复;
    • 通过驱动应用验证修复;
    • 录制修复后视频;
    • 打开 PR;
    • 响应人类与智能体反馈;
    • 发现并处理构建失败;
    • 仅在需要判断力时升级给人类;
    • 最终合并改动。
  • 但作者同时强调,这种能力高度依赖当前仓库的结构与工具投入,不应被视作可直接迁移到其他代码库的通用结论。

高自治也会制造新的熵增问题

  • 作者明确承认,完全自治并不会自动产生整洁系统,反而会带来新的退化机制。
  • Codex 会复制仓库中已有模式,包括质量参差不齐、并不理想的模式,因此长期运行必然带来漂移。
  • 团队最初靠人工处理这一问题,每周五都要拿出约20% 的时间清理所谓 AI 生成的杂乱代码,但很快发现无法扩展。
  • 后来他们把人类偏好固化成黄金原则并建立周期性清理流程,例如:
    • 优先复用共享工具包,而不是到处手写小工具;
    • 不凭猜测探测数据结构,而是在边界验证,或直接依赖类型化 SDK。
  • 之后再由后台 Codex 任务定期扫描偏离模式、更新质量评级、提出定向重构 PR,其中多数 PR 可在 1 分钟内完成审查并自动合并。
  • 作者把这比作垃圾回收:技术债像高利贷,持续小额偿还,比长期积压后集中爆发更可控。

作者对当前阶段的总体判断

  • 这一策略到目前为止,在 OpenAI 内部发布和采用阶段运行良好。
  • 作者认为,真正有帮助的是把系统放进真实使用场景,而不是停留在实验室演示,因为真实用户会迫使团队优先投资长期可维护性。
  • 但文章最后的结论不是智能体已经解决软件工程,而是软件工程的纪律性正在从代码层,转移到脚手架、抽象、反馈回路和控制系统层
  • 作者认为,未来最难的问题将集中在如何设计环境与控制系统,让智能体能规模化地构建并维护复杂、可靠的软件。

数据与统计信息汇总

  • 周期:过去5个月,起点为2025年8月底首次提交。
  • 规模:仓库约100万行代码,且0行人工手写代码
  • 效率:团队估计总开发耗时约为手写方式的1/10
  • 产能:约1500个 PR;最初3名工程师驱动,平均每人每天约3.5个 PR,后增至7人
  • 自治:单次 Codex 运行处理同一任务可持续6小时以上

决策与建议

已形成的决定

  • 零人工手写代码确立为团队核心工作原则。
  • AGENTS.md 从大而全说明书改造成目录式入口,并把 docs/ 设为仓库内知识的真相源。
  • 将 UI、日志、指标、追踪等验证材料直接暴露给 Codex,增强智能体自测、自诊断和自修复能力。
  • 用自定义 lint、结构测试和质量文档,机械地执行架构边界与风格不变量。
  • 采用低阻塞合并策略,让短周期 PR 与快速后续修复成为默认工作流。
  • 通过定期后台清理任务持续偿还技术债,把人类审美与经验编码为可重复执行的规则。

文中体现的方向性建议

  • 作者建议工程团队把主要精力投入到环境设计、反馈闭环和控制系统,而不是只关注直接写代码。
  • 应尽量把产品原则、架构共识、设计历史和隐性经验沉淀为仓库内可版本化工件,否则智能体无法利用。
  • 若希望提升智能体效能,关键不只是增加提示词,而是提高系统的可读性、可验证性和可约束性
  • 技术选型宜优先考虑稳定、可组合、易被智能体理解的依赖与抽象。

不确定性与待确认点

  • 作者明确表示,完全由智能体生成的系统在多年尺度上的架构一致性如何演化,目前仍未知。
  • 人类判断力最该介入哪些环节、如何把这种判断持续编码进系统,仍在探索中。
  • 文章指出,当前做法高度依赖此仓库的特定结构与工具投入,其可迁移性尚不能直接推广。
  • 模型能力未来继续提升后,这套流程会如何变化,作者也未给出确定答案。
  • 文本未披露具体产品名称、缺陷率、回滚率或更完整的质量对比指标,因此外部读者无法独立核验其稳定性与效率收益的完整程度。

结论回顾

  • 核心变化不只是让 AI 写代码,而是把工程体系重构为适合智能体工作的环境。
  • 仓库内知识化、强约束架构、自动验证与持续清理,是高自治代码库能够维持速度与质量的关键。
  • 人类没有被移除,而是上移到目标设定、系统设计、质量控制和规则编码这一层。