今天阅读了 OpenAI 团队发布的一篇非常硬核且极具前瞻性的工程实践文章:Harness engineering: leveraging Codex in an agent-first world。文中分享了他们如何在一个内部项目中,在没有人类写过哪怕一行代码的情况下,用 5 个月时间让 Codex(AI 编程智能体)写出了一百万行代码,并成功上线交付。
这篇文章不仅是在秀肌肉,更是在定义“AI 时代(Agent-first world)软件工程的标准范式”。以下是我的深度总结与分析:
核心观点:工程师的角色从“写代码”变为“造脚手架”
文章的核心理念是:Humans steer. Agents execute.(人类掌舵,智能体执行)。
在这个模式下,人类工程师的日常工作不再是写业务逻辑,而是设计环境、明确意图、构建反馈循环(Feedback Loops),从而让 AI 能稳定、可靠地输出代码。
5 个关键的工程方法论
1. 提升应用对 AI 的“可读性”(Agent Legibility)
AI 不能像人一样点开网页看效果。为了让 AI 能自己修 Bug,他们把 Chrome 开发者工具协议接进了 Agent 运行环境,让 AI 能自己截图、抓取 DOM 树、甚至自己跑应用看日志(LogQL)和性能指标。你得给 AI 装上“眼睛”和“仪表盘”。
2. 抛弃“祖传大 Prompt”,让仓库成为知识库
他们发现把所有规则写进一个巨大的 AGENTS.md 里完全行不通(会造成上下文超载、规则腐化)。
他们的做法是:把 AGENTS.md 当作目录,真正的设计文档、架构图、执行计划分散在 docs/ 文件夹中,并通过脚本和“文档园丁”Agent 定期清理过时的文档。对 AI 来说,不在当前上下文(Context)里的东西,就是不存在的。
3. 靠工具硬性约束架构与“品味”
为了防止 AI 写的代码结构崩塌,他们采用了极其严格的单向依赖架构(Types → Config → Repo → Service → Runtime → UI)。这种通常在百人团队才用的重型架构,在 Agent 时代成了必需品。他们写了大量的自定义 Linter(代码检查工具,也是 AI 写的)来机械地强制执行这些规则。
4. 吞吐量改变了 Merge 哲学
一个 7 人的团队,平均每人每天能驱动 AI 提 3.5 个 Pull Request,总共提了 1500+ 个。因为 AI 改代码的成本极低(甚至在人类睡觉时工作长达 6 小时),他们不再纠结于完美的单次提交,而是采用“快速合并、小步快跑、发现问题再让 AI 补一个 PR”的策略。
5. 应对“代码熵增”:AI 垃圾回收
完全由 Agent 写的代码一定会产生“AI 废料(AI Slop)”和技术债。他们一开始每周五人工清理,后来吃不消了,就变成了设定“黄金原则”,让后台 Agent 定期扫描代码库,自动提交重构 PR。技术债就像高利贷,最好的办法是每天用 AI 自动还一点。
Youmoo 的深度分析与启示
这篇工程博客与我们今天发布的 “Synopsys 整合 AI 辅助芯片设计工具” 的新闻有着惊人的底层逻辑共鸣。无论是写软件(百万行代码)还是做 IC 设计(几十亿晶体管的布线),趋势是一致的:
- 复杂度的管理正在上移:未来,数字 IC 工程师可能不再需要一行行写 RTL 或者手动去 tweak 某一个 Macro 的摆放。你的工作将变成定义 PPA 的边界条件、编写能让 AI 读懂的约束(Constraints)和验证脚本。
- “机器可读”比“人可读”更重要:代码或硬件描述语言的风格不再重要(只要 Linter 能过),重要的是它的结构是否能在未来被另一个 AI Agent 准确解析和修改。
- 闭环反馈是关键:OpenAI 能让 Codex 独立跑通功能的关键,是 AI 能自己看到日志和 UI。在 IC 设计中,谁能把 DRC、Timing 违例的结果用最干净的格式喂回给上游的 EDA Agent,谁就能实现真正的自动化迭代。
可以说,这套方法论是未来 3-5 年高级工程师的“生存指南”。适应并掌控 Agent,才能在下个时代保持核心竞争力。