Harness Engineering

OpenAI 工程团队如何在 5 个月内,利用 Codex 智能体以 0 行人工代码构建百万行级产品。

0 行 人工编写代码
1/10 所需时间成本
3.5 PRs 人均日吞吐量

01. 工程师角色的根本性重构

核心洞察
如果不写代码,工程师在做什么?

当执行不再是瓶颈,主要工作变成了构建能让智能体工作的“脚手架”。工程师的角色从“建筑工人”转变为“工地监理”和“模具设计师”。

深度优先的工作模式 Mindset

遇到问题(例如 Agent 无法修复 Bug)时,解决方案永远不是“人去写代码”,而是:

  • 识别缺失的能力: Agent 是因为看不到日志?还是不懂 UI 结构?
  • 构建工具: 为 Agent 编写工具(如 Screenshot tool)或文档。
  • 注入上下文: 将修复后的逻辑作为新能力赋予 Agent。

Ralph Wiggum Loop (反馈闭环) Workflow

人类仅通过 Prompt 与系统交互。所有的执行细节都封装在 Agent 的自我修正循环中:

1. Agent 生成代码
2. Agent 本地自我 Review
3. Agent 请求云端/其他 Agent Review
4. Agent 根据反馈(Linter报错/Review意见)修改
5. 循环直到通过 -> 合并

02. 极致的可观测性 (Agent Legibility)

核心洞察
如果它“看”不到,它就修不好

人类可以通过直觉和碎片化信息调试,但智能体只能基于明确的数字信号工作。必须将应用的运行时状态完全暴露给智能体。

视觉与交互感知 Tools

  • 每个 Worktree 独立启动: Codex 针对每个任务启动一个独立的 App 实例。
  • 集成 Chrome DevTools Protocol: 赋予 Agent 截图、抓取 DOM 快照、监听网络请求的能力。
  • 能力解锁: 这使得 Agent 可以不仅“写代码”,还能“重现 Bug”和“验证 UI 修复”。

临时可观测性栈 Infrastructure

  • Ephemeral Stack: 为每个开发任务部署临时的日志和指标栈(LogQL/PromQL)。
  • 可量化的 Prompt: 工程师可以发出极度具体的指令,如 “确保服务启动时间在 800ms 以内”“检查关键路径中没有 Span 超过 2 秒”。Agent 可以通过查询指标来验证这一目标是否达成。

03. 知识管理:给地图,别给说明书

核心洞察
上下文是稀缺资源

一个巨大的 `AGENTS.md` 是灾难性的。它会腐烂、产生幻觉,并挤占处理任务所需的上下文窗口。

渐进式披露架构 Architecture

docs/
├── design-docs/ (核心信念、设计决策)
├── product-specs/ (产品规格)
├── exec-plans/ (执行计划、决策日志)
├── generated/ (DB Schema 等)
AGENTS.md (仅100行,作为目录索引)
  • 目录索引法: `AGENTS.md` 仅包含指向 `docs/` 中具体文件的指针。
  • 按需加载: Agent 先读取目录,再根据任务读取特定的设计文档或计划,而非一次性吞下所有信息。

单一事实来源 (SSOT) Protocol

  • 禁止隐性知识: 任何 Slack 讨论、口头约定若未转化为 Repo 中的 Markdown 文档,对 Agent 来说就是不存在的。
  • 计划即代码: 复杂的任务被分解为 `exec-plans` 存入代码库。Agent 可以读取当前进度,知道已完成了什么,以此实现长时任务的中断恢复。

04. 机械化强制执行:将品味转化为代码

核心洞察
对抗熵增与架构腐化

智能体会模仿代码库中现存的“坏味道”。必须通过强硬的代码手段(而非软性的语言指令)来维持架构边界。

自定义 Linter 作为教材 Tooling

普通的 Linter 只报错,Agent 的 Linter 需要教学。

  • 教学式报错: 编写自定义 Linter,当检测到违规(如错误的命名、过大的文件)时,报错信息必须包含具体的修复指令和正确示例,直接注入 Agent 上下文。
  • 强制分层: 编写结构化测试,禁止跨层依赖(例如:UI 层禁止直接调用数据库层),确保架构不被“抄近道”的 Agent 破坏。

黄金原则 (Golden Principles) Standards

  • 边界严查: 强制要求所有数据输入必须经过 Schema 验证(如 Zod)。禁止 Agent 写出“猜测数据结构”的代码。
  • 偏好无聊技术: 选择那些训练数据多、API 稳定的“无聊”库,Agent 更容易掌握。

05. 维护与吞吐量:新常态

核心洞察
修复成本 < 等待成本

在 Agent 资源充足的环境下,传统的“谨慎合并、害怕回滚”的开发哲学已经过时。

自动垃圾回收 (Garbage Collection) Automation

  • Doc-Gardening Agent: 专门的后台 Agent,定期扫描代码与文档的差异,自动提交 PR 修复过时文档。
  • Refactor Agent: 自动扫描不符合“黄金原则”的代码(AI Slop),发起微重构 PR。
  • 策略: 每天进行小规模的清理,而不是每周五进行一次大规模的人工“铲屎”。

极速合并策略 Process

  • 极简门槛: 减少人工 Review 的阻塞。
  • 快速试错: 遇到测试 Flake(不稳定),与其阻塞流水线等待人工排查,不如让 Agent 立即发起一个新的 PR 尝试修复。

原文

源链接