OpenAI-Harness-Engineering-智能体优先方法论调研
首页 / AI工具 / 文章

OpenAI-Harness-Engineering-智能体优先方法论调研

OpenAI 内部一支 3 → 7 人小队,5 个月内交付 100 万行代码 + 1500 PR、零行人类手写代码 的产品 beta。纪律不在代码里,而在支撑代码的环境、文档结构和反馈回路里——这就是 "Harness Enginee...

OpenAI Harness Engineering 深度调研——智能体优先世界的软件工程范式#

原文:https://openai.com/zh-Hans-CN/index/harness-engineering/ 发布:2026/02/11 | 作者:Ryan Lopopolo(OpenAI 技术人员)

1. 一句话定位#

OpenAI 内部一支 3 → 7 人小队,5 个月内交付 100 万行代码 + 1500 PR、零行人类手写代码 的产品 beta。纪律不在代码里,而在支撑代码的环境、文档结构和反馈回路里——这就是 “Harness Engineering”(工具链/支架工程)。

2. 核心数据#

指标数值
团队规模3 人启动 → 7 人现状
周期5 个月(2025-08 至 2026-02)
代码量~100 万行
PR 数1500(合并 + 关闭)
人均吞吐3.5 PR / 人 / 日(团队扩张后还在涨)
人工写码量0 行(连第一个 AGENTS.md 都是 Codex 写的)
时间成本约为人工开发的 1/10
单次 Codex 任务最长6+ 小时(通常在人类睡眠时间跑)

3. 工程师角色重定义#

传统:工程师 = 写代码的人
新范式:工程师 = 设计环境、明确意图、构建反馈回路的人
智能体 = 执行的人
口号:人类掌舵,智能体执行。

唯一介入原则

取得进展的唯一方式是让 Codex 完成工作,人类介入时只问一个问题:还缺什么能力?怎么让这能力对智能体既清晰可读又可强制执行?

4. 七大支柱(按可借鉴优先级排序)#

4.1 AGENTS.md 是「地图」,不是「百科全书」#

踩过的坑:一开始把所有规则塞进一个大 AGENTS.md,结果:

  • Context 是稀缺资源:大文件挤掉了任务、代码、相关文档
  • 指导过载 = 没有指导:当一切都”重要”,一切就都不重要
  • 立即腐烂:变成陈旧规则的坟场,智能体无法判断哪些还有效
  • 难以机械校验:单个 blob 无法做覆盖率/新鲜度/所有权检查

最终方案(AGENTS.md ≈ 100 行,纯入口 + 索引):

AGENTS.md # 入口,目录索引
ARCHITECTURE.md # 顶层架构
docs/
├── design-docs/ # 设计文档 + index.md + core-beliefs.md
├── exec-plans/ # 执行计划(一等公民工件)
│ ├── active/
│ ├── completed/
│ └── tech-debt-tracker.md
├── generated/ # 生成的文档(如 db-schema.md)
├── product-specs/ # 产品规格
├── references/ # 外部参考(design-system-llms.txt 等)
├── DESIGN.md
├── FRONTEND.md
├── PLANS.md
├── PRODUCT_SENSE.md
├── QUALITY_SCORE.md
├── RELIABILITY.md
└── SECURITY.md

配套机制

  • 渐进式披露:智能体从小切入点起步,文档指引下一步去哪查
  • 专职 lint + CI 校验:知识库的新鲜度、交叉链接、结构正确性
  • doc-gardening agent:定期扫描过时文档,发起修复 PR

4.2 仓库 = 唯一记录系统(Source of Truth)#

残酷事实

从智能体角度看,运行时在 context 里访问不到的东西 = 不存在。

Google Docs、Slack 讨论、同事脑子里的隐性知识——智能体都看不到。只有版本控制的、纯文本的、可被 grep 的工件才存在。

那次让团队达成架构共识的 Slack 讨论?如果智能体无法发现它,它就会像迟到三个月入职的新人一样对此一无所知。

对应行动:所有重要决策、品味偏好、踩坑经验都必须落地到仓库 Markdown,包括团队的 emoji 偏好(原文真这么说)。

4.3 目标是「智能体可读性」,不是人类可读性#

最反直觉的一条

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

取舍倾向

选项理由
选枯燥技术API 稳定、训练集中常见、智能体更容易建模
选可内化在仓库里推理的依赖不要黑盒上游
自己重写小工具 > 引入不透明 npm 包例:他们没用 p-limit,自己写了带并发的 map 辅助函数(OpenTelemetry 集成、100% 测试覆盖、行为可预测)

4.4 严格架构约束(早期就上)#

业务域内部:Types → Config → Repo → Service → Runtime → UI
横切关注点(认证、连接器、遥测、Feature Flag)→ 必须经过 Providers 单一接口
所有规则用「自定义 linter(Codex 写的)+ 结构测试」机械强制

关键洞察

这种架构通常要等到你拥有数百名工程师时才会推迟。对编码智能体来说,这是早期先决条件:有了约束,速度才不会下降,架构才不会漂移。

自定义 lint 的特殊设计:错误信息里直接嵌入修复指令,因为下一个读到的就是智能体。

4.5 让应用对智能体「直接可读」#

人类 QA 是固定瓶颈,所以一切都要让智能体能直接看、直接验:

维度实现
UI 可读Chrome DevTools Protocol 接入运行时,提供 DOM snapshot / screenshot / 导航 skills
多实例并行应用支持基于 git worktree 启动,每个 Codex 实例跑自己的副本
完整可观测性栈每个 worktree 临时一份:Vector → Victoria Logs/Metrics/Traces,智能体用 LogQL/PromQL/TraceQL 查询
可执行 prompt”确保服务启动 < 800ms” / “这四条用户旅程的任何 span 不超过 2 秒”——直接给智能体跑

4.6 吞吐量改写了合并理念#

传统软件工程:阻塞性合并门、零容忍 flaky test
智能体优先: PR 短命、flaky test 后续重跑、纠错成本低、等待成本高

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

4.7 熵 + 垃圾回收(解决 AI 残渣)#

最初:每周五全员花 20% 时间清理 “AI 残渣” → 不可扩展

最终方案

  • 编码 “黄金原则”(机械化、强主观的规则)
  • 后台跑 Codex 任务批量扫描偏差、更新质量等级、发起重构 PR
  • 大多数清理 PR < 1 分钟即可审完自动合并
  • 类比:技术债 = 高息贷款,每天小额还 >> 季度大爆发还

例子:

  1. 优先用共享 utility,不要手工 helper —— 不变式集中管理
  2. 不允许 “YOLO 式” 探测数据 —— 必须验证边界或用类型化 SDK

5. 「智能体生成」实际意味着什么#

全部由 Codex 生成的内容:产品代码 + 测试、CI 配置、发布工具、内部开发者工具、文档 + 设计历史、评估框架、审阅评论和回复、管理代码仓库本身的脚本、生产仪表板定义。

最近跨过的门槛——端到端自主交付

给 prompt → 智能体自动:
1. 验证代码库现状
2. 复现 bug
3. 录制故障 demo 视频
4. 实施修复
5. 运行应用验证修复
6. 录制解决方案 demo 视频
7. 开 PR
8. 响应智能体 + 人类反馈
9. 检测并修复 CI 故障
10. 仅在需要判断时找人
11. 合并

审查也是智能体对智能体(Ralph Wiggum 循环):本地自审 + 云端多智能体审查 + 响应反馈 + 循环直到全部审查通过。

Pull Request 人类可以审,但并非必须。随着时间推移,我们已将几乎所有审核工作调整为智能体对智能体处理。

6. 对本地工作流的具体启发#

🎯 高优先级(立刻可借鉴)#

  1. CLAUDE.md ≤ 100 行原则

    • ~/.claude/CLAUDE.md 砍成纯入口 + 链接,详细规则下沉到 docs/references/*.md
    • 当前已在膨胀,需要 GC
  2. markdown/ 目录加 lint

    • 写简单 CI / pre-commit hook:检查 frontmatter 完整性、wikilink 死链、文件命名规范
    • 这是个人版的 “doc-gardening agent” 雏形
  3. 决策记录系统

    • 重要技术决策(Token 缓存机制、wechat-skill 选型)必须落到 markdown
    • 已经在做(笔记 + memory.md),但缺少 “索引页 + 主题地图”
  4. 品味编码到 lint,不是放在 review 评论里

    • “复用 utility > 手写 helper” 类规则,写成 ESLint plugin
    • Vue 项目可参考

🎯 中优先级(中长期)#

  1. 借鉴 docs/ 目录结构

    • docs/superpowers/ 已经有 plans + specs 雏形,可以扩展
    • exec-plans/{active,completed,tech-debt-tracker.md}
    • references/ 存外部库的 *-llms.txt 文档(claude-mem、wechat-cli 等)
  2. session-report 进化方向

    • 本质就是 harness engineering 的可观测性栈
    • 让 Claude Code 的运行状态对下次的 Claude Code 直接可读

🎯 思想冲击(理念层)#

  1. 重新定义自己的角色

    • 现在是”AI 增强的前端工程师”
    • 下一步:“AI 工程的环境设计师”——杠杆点是设计 AGENTS.md/Skills/Hooks 这些 harness,而不是单纯让 Claude 帮写代码
  2. 接受”智能体可读 > 人类可读”

    • 别因为代码不够优雅就追着改
    • 标准是:下一次 Claude Code 读懂这段代码的成本 + 改对的概率
    • 这跟”代码必须优雅”的本能会有冲突

7. 风险与边界#

OpenAI 自己承认的不确定性:

风险说明
架构连贯性的长期演化不知道 5 年后这套代码库会变成什么
依赖具体投入”此行为很大程度上取决于此代码仓库的具体结构和工具,不应假设可以泛化”
黄金原则需要持续维护自动清理 ≠ 不需要人类品味,需要持续注入
模型迭代影响系统形态模型变强后,整套 harness 可能要重新设计

8. 核心金句#

  1. “人类掌舵。智能体执行。”
  2. “取得进展的唯一方式是让 Codex 完成工作,人类介入时只问:还缺什么能力?怎么让这能力对智能体既清晰可读又可强制执行?”
  3. “在 context 里看不到的 = 不存在的。”
  4. “给智能体一张地图,不是一本 1000 页的说明书。”
  5. “在低吞吐量环境中这是不负责任的,在这里这通常是正确的。”
  6. “技术债是高息贷款——小额每日偿还,胜过痛苦的一次性清算。”
  7. “纪律不在代码里,而在支撑代码的工具、抽象和反馈回路里。“

9. 关联阅读#

  • 同目录已有:鹅厂面试官:你怎么看 Harness Engineering(业内人士解读)
  • 同目录已有:高德OPC+Harness自主增长系统方法论(国内大厂落地实践)
  • 同目录已有:Superpowers-给-Agent-加上跳不过去的工作流(个人工作流约束)