文章

智能体时代的软件工程:从写代码到设计系统

智能体时代的软件工程:从写代码到设计系统

OpenAI 如何用 Codex 从零开始构建产品,3 个月内完成 100 万行代码,工程师角色发生根本性转变


概述

本文总结了 OpenAI 内部的一项颠覆性实验:构建并交付一款软件产品的内部 beta 版,其中没有一行代码是人工编写的。

规模对比

指标传统模式OpenAI 实验
开发者角色编写代码、手动审查设计环境、明确意图、构建反馈回路
代码贡献100% 人工编写100% AI 生成
完成时间数月到数年3 个月
代码量-约 100 万行
工程师规模大型团队3 人核心团队
日均 PR 吞吐-3.5 个 PR/人/天

更有意思的是,随着团队从 3 人扩展到 7 人,PR 吞吐量不降反升(Python SDK:182 → 226,+24%;TypeScript SDK:134 → 231,+72%)。

该产品有数百名内测用户,包括每天都在使用的内测高级用户。据估计,他们只用了手工编写代码所需时间的 1/10


核心洞察:工程师角色的根本性转变

1. 从”执行者”到”设计者”

传统工程团队的核心工作:编写代码、测试、修复。

OpenAI 的核心理念:人类掌舵,智能体执行。

工程师的优先事项排序发生了变化:

  • ❌ 手动编写代码
  • ✅ 设计系统、明确意图、构建反馈回路
  • ❌ 直接审查每一行代码
  • ✅ 指导智能体完成有用的工作

2. 深度优先工作方式

当事情进展不如预期时,解决方案不是”更努力一点”,而是:

让 Codex 来完成工作。

人类工程师会追问:

“究竟还需要什么样的能力,我们又该如何让这个能力对智能体来说既清晰可读又可强制执行?”

这是”深度优先的工作方式”:

  • 将更大的目标拆解为更小的构建模块(设计、代码、评审、测试等)
  • 提示智能体去构建这些模块
  • 用它们去解锁更复杂的任务

3. 不写代码的原则

OpenAI 团队的核心理念

不手动编写代码。

从一开始,代码仓库就由智能体塑造。人类工程师从未直接贡献过任何代码。


技术实践:如何让智能体高效工作

一、提升应用程序的可读性

随着代码吞吐量增加,人工 QA 能力成为瓶颈。解决方案:让应用程序的内容对 Codex 直接可读。

具体措施:

能力实现方式效果
启动控制应用程序可以根据 git worktree 启动Codex 可以为每次更改启动并驱动实例
调试能力将 Chrome DevTools 协议接入智能体运行复现错误、验证修复、推理 UI 行为
日志查询创建本地可观测性堆栈使用 LogQL 查询日志、PromQL 查询指标
可观测性工具日志、指标、追踪记录Codex 在独立版本上运行,任务完成后删除所有内容

结果:Codex 单次运行可持续工作超过六小时(通常在人类睡眠时间),大幅提升吞吐量。

量化提示变得可行:

  • “确保服务启动在 800ms 内完成”
  • “这四个关键用户旅程中的任何跨度都不得超过两秒”

二、代码仓库作为记录系统

早期的失败尝试:”一本大型的 AGENTS.md”

OpenAI 最先尝试了使用”一个大型的 AGENTS.md”文件,结果失败:

问题:

  1. 情境是一种稀缺资源 - 巨大的指令文件会挤掉任务、代码和相关文档
  2. 过多的指导反而变得无效 - 当一切都”重要”时,一切都不重要了
  3. 智能体模式匹配而非导航 - 最终会进行本地模式匹配,而不是有意识地导航
  4. 无法核实和会立即腐烂 - 单个 blob 不适合机械检查(覆盖率、新鲜度、所有权、交叉链接),因此漂移是不可避免的。

成功的方案:内容目录 + 渐进式披露

新的架构:

  • 简短的 AGENTS.md(约 100 行):用作地图,指向更深层次的信息来源
  • 结构化的 docs/ 目录:被视为记录系统
  • 设计文档:已被编目和索引
  • 架构文档:提供域和包分层的顶层地图
  • 计划文档:复杂工作记录在执行计划中,附带进度和决策日志
  • 已知技术债务:版本控制并集中存放

关键原则:渐进式披露(Progressive Disclosure)

智能体从一个小的稳定切入点开始,并被指导下一步该去哪里查看,而不是一开始就被淹没。

我们严格执行这一点。专职的 linter 和 CI 作业会验证知识库的更新状况、是否已交叉链接且结构正确。一个定期运行的”doc-gardening”智能体会扫描那些不再反映真实代码行为的过时或废弃文档,并发起修复用的 Pull Request。

三、规范架构与”品味不变式”

1. 严格的边界控制

架构围绕一个严格的架构模型构建:

  • 每个业务域划分为一组固定的层
  • 依赖方向经过严格验证
  • 仅允许有限的一组边
  • 横切关注点(认证、连接器、遥测、功能标志)通过单一显式接口进入:Providers

其他任何内容都不被允许,并将通过自动化方式强制执行。

2. 什么是”品味不变式”(Taste Invariants)

OpenAI 通过自定义的代码检查器和结构测试来强制执行规则,这些规则会:

  • 静态地强制执行结构化日志记录
  • 强制模式和类型的命名约定
  • 强制文件大小限制
  • 强制特定平台的可靠性要求

关键洞察:

在以人为本的工作流程中,这些规则可能会让人感到迂腐或束缚。

有了智能体,它们就成了倍增器:一旦编码,它们就能立即应用于所有地方。

3. 局限 vs 自主

OpenAI 非常明确:

中央层面强制执行边界,在本地层面允许自主权。

你非常重视界限、正确性和可重复性。在这些边界内,团队或智能体在解决方案的表达方式上拥有很大的自由。

人类品味 vs 生成代码风格:

  • 生成的代码不总是符合人类的风格偏好
  • 这没关系
  • 只要输出是正确的、可维护的,并且对未来的智能体运行而言清晰易读,就可以算作达标

4. 品味反馈回路

人类的品味会不断反馈到系统中:

  • 审查评论
  • 重构的 Pull Request
  • 面向用户的 Bug

这些反馈会被记录为文档更新,或直接编码到工具中。

示例: 不使用通用的 p-limit 风格包,而是投入使用了带并发的 map 辅助函数:

  • 与 OpenTelemetry 仪表紧密集成
  • 具备 100% 的测试覆盖率
  • 其行为完全符合运行时预期

项目成效数据

代码仓库规模

  • 起始时间: 2025 年 8 月下旬(空仓库)
  • 5 个月后: 约 100 万行代码
  • 代码仓库结构: 从应用逻辑、基础设施、工具、文档到内部开发者工具应有尽有

Pull Request 吞吐

指标前 3 个月后 3 个月增长
总 PR 数316457+45%
Python SDK PR 数182226+24%
TypeScript SDK PR 数134231+72%
人均吞吐~3.5 PR/天(3 人)~3.5 PR/天(7 人,不降反升) 

重要洞察:

  • 吞吐量提升不是因为 AI 能力更强,而是工作模式变了
  • 人类不再手动编写代码,而是专注于设计和系统优化
  • 智能体专注于执行,工程师专注于让智能体能高效执行

产品规模

  • 内测用户: 数百名(包括每天都在使用的内测高级用户)
  • 生产环境: 已投入使用
  • 交付周期: 经历了交付、部署、故障和修复的整个过程

吞吐量改变:从阻塞门到快速循环

传统的合并理念

  • PR 必须经过人工审查
  • 大量阻塞
  • 周期长
  • 测试偶发失败通常需要后续重跑来解决

智能体驱动的模式

  • PR 生命周期很短
  • 减少阻塞门
  • 纠错成本低
  • 等待成本高

OpenAI 的实践:

在低吞吐量环境中,这样做是不负责任的。而在这里,这通常是正确的选择。

但在高吞吐量环境中(智能体主导),这通常是正确的选择:

减少阻塞门,允许智能体快速合并,人类主要在需要判断时介入。


熵与垃圾收集:维持代码库健康

问题:智能体会复制现有模式

完全自主的智能体会:

  • 复现代码仓库中已存在的模式
  • 包括那些不均衡或不够理想的模式
  • 随着时间推移,这不可避免地导致漂移

解决方案:”黄金原则” + 后台清理

OpenAI 建立了一个循环清理流程:

1. 黄金原则

带有主观意见的机械规则,旨在保持代码库的可读性和一致性,例如:

  • (1) 更倾向于使用共享的实用程序包,而不是手工编写的辅助工具
  • (2) 不会使用”YOLO 式”探测数据 — 会验证边界,或依赖类型化的 SDK
  • (3) 会定期运行一组后台 Codex 任务,扫描偏差、更新质量等级,并发起有针对性的重构 Pull Request

2. 后台清理

大多数任务可以在一分钟内完成审查并自动合并。

技术债务就像一笔高息贷款:

不断地以小额贷款的方式偿还债务,总比让债务不断累积,再痛苦地一次解决要好得多。

人类的品味一旦被捕捉,就会持续应用于每一行代码。这使得团队能够每天发现并解决不良模式,而不是让它们在代码库中传播数天或数周。


智能体的自主水平提升

跨过的重要门槛

代码仓库最近跨过了一个重要门槛:使 Codex 能够端到端地驱动一个新功能。

智能体现在可以端到端完成

给定一个提示,智能体现在可以:

验证与修复

  • 验证代码库的当前状态
  • 重现已报告的漏洞
  • 录制一个演示故障的视频
  • 实施修复措施
  • 通过运行应用程序来验证修复
  • 录制第二个视频,演示解决方案

审查与反馈

  • 回应智能体和人类反馈
  • 仅在需要判断时才交由人工处理

测试与构建

  • 检测并修复构建故障
  • 仅在需要判断时才交由人工处理

合并更改

  • 在无需人工批准的情况下完成

重要限制:

此行为在很大程度上取决于此代码仓库的具体结构和工具,不应在没有类似投入的情况下假定它可以泛化 — 至少目前还不行。


给”我们”的核心启发

1. 投入精力的方向要改变

从”写代码”转向”设计系统、明确意图、构建反馈回路”。

  • ❌ 编写代码不再是核心竞争力
  • 构建让智能体能高效执行的环境和工具才是稀缺资源

2. 给智能体一张地图,不是一本说明书

AGENTS.md 不应该成为百科全书。

  • 保持简短(约 100 行)
  • 用作地图,指向更深层次的信息来源
  • 真实信息存储在结构化的 docs/ 目录中
  • 通过渐进式披露引导智能体探索

3. 品味不变式是智能体的倍增器

在以人为本的工作流程中是束缚,在智能体驱动的流程中是倍增器

  • 一旦编码,它们就能立即应用于所有地方
  • 品味反馈回路:文档更新、重构 PR、编码到工具

4. 及时将知识嵌入代码仓库

随着智能体能力不断增强,越来越多的情境需要推送到仓库中:

  • 如果智能体无法发现它,就会像迟了三个月入职的新员工一样对其一无所知
  • 将系统的更多部分转化为智能体可以检查、验证并直接修改的形式,可以提高杠杆效应

5. 量化与数据驱动决策

不要只是说”请审查发布”,而是给出:

  • 具体的证据
  • 风险评估
  • 后续行动建议

示例(发布审查):

1
2
3
4
5
6
7
8
🟢 GREEN LIGHT TO SHIP. Minor-version bump includes expected breaking change (Python 3.9 drop) with no concrete regressions found.

Scope summary:
- 38 files changed (+1450/-789)

Python 3.9 drop
- Risk: 🟡 MODERATE. Users pinned to Python 3.9 will be unable to install  0.9.0 release.
- Action: Ensure release notes clearly call out Python 3.9 drop.

6. 为智能体设计架构

显然的是:构建软件仍然需要纪律,但纪律更多地体现在支撑结构上,而不是代码上。

保持代码库一致性的工具、抽象和反馈回路变得越发重要。


未来:仍然在学习的内容

尚不清楚的问题

在一个完全由智能体生成的系统中:

  • 架构连贯性会如何随着时间的推移而演变
  • 模型的功能不断增强时,系统将如何演变

明确的方向

构建软件仍然需要纪律,但:

  1. 纪律更多地体现在支撑结构上,而不是代码上
  2. 保持代码库一致性的工具、抽象和反馈回路变得越发重要

当前最棘手的挑战

集中在:

  • 设计环境
  • 反馈回路
  • 控制系统

帮助智能体实现目标:大规模构建和维护复杂、可靠的软件。


结论:智能体时代的工程师

OpenAI 的这项实验揭示了一个正在发生的转变:

工程师的核心竞争力变了

传统工程师智能体时代的工程师
编写代码的能力设计系统、明确意图、构建反馈回路的能力
审查代码的能力识别缺失内容并将其反馈到系统的能力
验证测试的能力验证智能体产出的能力
直接解决 bug 的能力定义清晰约束和触发条件的能力

可应用的框架

OpenAI 的实践提供了一个可复用的框架:

技术层面:

  1. Skills + AGENTS.md + GitHub Actions
  2. 严格的架构边界 + 层依赖
  3. 可观测性工具(日志、指标、追踪)
  4. 黄金原则 + 后台清理

管理层面:

  1. 深度优先工作(目标拆解)
  2. 渐进式披露(不要一次给出所有信息)
  3. 品味不变式(将规则编码为可执行检查)
  4. 品味反馈回路(将人类偏好嵌入系统)

最终洞察

“我们仍在学习的是:在一个完全由智能体生成的系统中,架构连贯性会如何随着时间的推移而演变。”

关键不在于使用多少 AI,而在于如何系统化地使用 AI

  • 📦 将知识包为可复用的 Skills
  • 📋 在 AGENTS.md 中明确规则和触发条件
  • 🤖 用脚本处理确定性任务
  • 🧠 让模型负责上下文相关的决策
  • 🔄 在 CI 中稳定运行已验证的工作流

这种”技能驱动维护”的模式值得任何正在探索智能体时代的开源项目借鉴。


参考

本文由作者按照 CC BY 4.0 进行授权