Harness Engineering:AI 时代的软件工程新范式

引言

最近在 AI 工程圈很火的 "Harness Engineering" ,翻译过来可以是AI"驾驭工程",它的来源大致是这样的:Mitchell Hashimoto 在 2026 年 2 月初用这个词来描述自己使用 AI agent 的方法;随后 OpenAI 在 2 月 11 日发布了《Harness engineering: leveraging Codex in an agent-first world》;紧接着 Martin Fowler 在 2 月 17 日写了专门的解读,把它归纳成更清晰的工程框架。

那到底什么是Harness Engineering?那我们首先了解一下软件工程范式的演进, 就慢慢清晰了**。**

1、软件工程范式演进

大家都知道,软件工程范式已经经历了三次演进:

(1)第一代:传统软件工程(1960s - 2020s):

特征 描述
核心 人类编写代码,机器执行
方法论 瀑布模型 → 敏捷开发 → DevOps → 云原生
工程师角色 代码生产者、系统架构师
关键问题 如何让人类更高效地写代码、协作、部署

这是人类中心主义的软件工程------一切围绕"人类写代码"展开。

(2)第二代:Prompt Engineering(2022 - 2023)

特征 描述
核心 通过优化提示词让 AI 输出更好结果
方法论 提示词技巧、Few-shot、Chain of Thought
工程师角色 提示词设计师
关键问题 如何让 AI 理解我的意图

这是指令驱动的范式------"人类下指令,AI 执行单次任务",也是目前程序员和普通人用的最多的。

(3)第三代:Context Engineering(2024 - 2025)

特征 描述
核心 给 AI 提供正确的上下文/知识
方法论 RAG、知识库、长上下文管理
工程师角色 知识架构师
关键问题 如何让 AI 有足够的知识做决策

这是知识驱动的范式------"人类提供知识,AI 基于知识执行",这是目前企业都在做的东西。

(4)第四代:Harness Engineering(2026 - )

特征 描述
核心 设计约束环境、反馈循环、控制系统
方法论 架构约束、自动化审查、熵管理、自我修复
工程师角色 环境设计师、系统约束师
关键问题 如何让 AI 在复杂长周期任务中稳定可靠

这是环境驱动的范式------"人类设计环境,AI 在约束下自主工作",这是目前AI时代的新范式!

总结如下:

2、什么是Harness Engineering?(what)

核心定义:"人类掌舵,智能体执行"。

Harness Engineering(驾驭工程)是在智能体优先的世界中构建软件的全新工程范式。工程师的主要工作不再是编写代码,而是: 设计环境、 明确意图和构建反馈回路。使 AI 智能体(如 Codex)能够可靠地自主工作

关键数据(OpenAI 内部实验):

指标 数据
时间跨度 5 个月
代码量 约 100 万行
人工编写代码 0 行
团队规模 3 人 → 7 人
Pull Request 数量 约 1,500 个
人均吞吐量 每天 3.5 个 PR
效率提升 约为手工编写的 1/10 时间

3、为什么会出现Harness Engineering?(why)

当然是解决痛点!!!

维度 传统软件工程痛点 Prompt/Context Engineering 痛点 Harness Engineering 解决方案
生产效率 人类每天工作≤8小时,手写代码速度慢 AI 生成快但需人工逐行审查,瓶颈在人类 智能体自主工作,人类睡眠时间也能运行(单次>6小时)
认知负荷 人类同时处理任务数量有限 需持续跟踪 AI 输出,精神消耗大 工程师设计环境,智能体自主闭环,人类只做关键决策
代码规模 大项目需数百人年,扩展性差 长任务易失控,无法维持万行以上代码 5 个月 100 万行代码,3-7 人团队即可完成
知识管理 文档分散(Google Docs/聊天记录),智能体无法访问 大型 AGENTS.md 立即腐烂,变成陈旧规则坟场 docs/ 结构化目录 + 渐进式披露 + doc-gardening 智能体自动维护
代码质量 人工 Code Review 耗时,标准不一致 幻觉严重,不良模式在代码库中传播数天/数周 自定义 linter + 品味不变式 + 黄金原则编码到系统中
技术债务 累积后痛苦一次性解决,像高息贷款 每周五花 20% 时间清理"AI 残渣",不可扩展 循环清理流程 + 后台 Codex 任务扫描偏差 + 自动发起重构 PR
架构约束 数百人团队才采用分层架构,小团队无规范 无约束导致架构漂移,速度随规模下降 早期强制分层架构(Types→Config→Repo→Service→Runtime→UI)
合并流程 严格阻塞合并门,等待成本低 测试失败无限期阻碍,智能体高吞吐量下等待成本高 减少阻塞,后续重跑解决,纠错成本低
可观测性 日志/指标需人工查询分析 智能体无法直接读取应用状态 本地可观测性堆栈,Codex 可用 LogQL/PromQL 直接查询
调试能力 人工复现 bug,录制演示视频耗时 智能体无法访问运行中应用 接入 Chrome DevTools 协议,处理 DOM 快照、截图,自动录制视频
反馈循环 发现问题→人工修复→再测试,周期长 单次交互,无持续反馈机制 智能体审查循环 + 自动化修复 + 仅在需要判断时交人工
人类角色 工程师=代码生产者,可替代性强 工程师=提示词调优师,技能碎片化 工程师=环境设计师,专注系统/架构/杠杆,价值放大

3.1 突破人类认知与体力极限

"我们唯一真正稀缺的资源:人类的时间和注意力"

传统软件工程中,人类是代码的生产者,受限于:

  • ⏱️ 工作时间(每天 8 小时)
  • 🧠 认知负荷(同时处理的任务数量有限)
  • ✍️ 编写速度(手写代码效率瓶颈)

Harness Engineering 让智能体在人类睡眠时间也能持续工作(单次运行超过 6 小时)。

3.2 传统工程规范失效

传统规范 智能体高吞吐量下的问题
严格合并门禁 等待成本高,纠错成本低
人工代码审查 人类 QA 能力成为瓶颈
文档存储在外部 智能体无法访问(Google Docs、聊天记录)
技术债务累积 漂移不可避免,需持续清理

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

3.3 解决熵增与代码漂移

智能体会复现代码库中已存在的模式------包括不均衡或不够理想的模式

问题

  • 😓 人类每周五花 20% 时间清理"AI 残渣"→ 不可扩展
  • 📉 不良模式在代码库中传播数天或数周

解决

  • 将"黄金原则"编码到代码库中
  • 建立循环清理流程(类似垃圾回收)
  • 每天发现并解决不良模式

3.4 规模化构建复杂软件

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

随着智能体在软件生命周期中占比增加,设计环境、反馈回路和控制系统变得越发重要。

4、 如何实现 Harness Engineering?(how)

OpenAI 的做法很像"把工程系统做成 agent 可读、可验证、可自我修正的机器"。具体包括:

  1. 用 Codex 从空仓库开始生成项目骨架;
  2. 把仓库知识作为系统事实来源;
  3. AGENTS.md、docs、CI、格式化规则、测试和观测一起工作;
  4. 要求 agent 先本地自审,再请求额外审查,再循环修正直到通过。

Martin Fowler 进一步把实现归为三类:上下文工程 (给对信息)、架构约束 (用规则和测试限制错误空间)、垃圾回收/熵管理(持续清理文档与结构的漂移)。

4.1 上下文工程:让系统对智能体"可读"

目标: 将知识转化为智能体可直接理解、验证和操作的系统事实。

核心实践:

1、从空仓库开始,构建结构化知识图谱

  • 用 Codex 生成项目骨架: 从空白 Git 仓库开始,通过 Codex 自动生成初始项目结构(如目录布局、基础代码、配置文件)。
  • 标准化知识存储:
    • docs/ 目录: 所有文档(如架构图、API 规范、业务规则)以机器可读格式(Markdown、代码注释、YAML)存储在仓库中,而非外部系统(如 Google Docs)。
    • AGENTS.md: 定义智能体的行为规则、权限、协作流程,作为智能体的"操作手册",持续更新并纳入版本控制。
    • 代码即文档: 将业务逻辑和"黄金原则"编码到代码库中(如常量、枚举、注释),而非依赖外部说明。

2、渐进式披露与情境绑定

  • 智能体仅访问当前任务所需的上下文(如相关文档、代码片段、历史 PR),避免信息过载。
  • 通过工具链将任务上下文自动注入智能体的执行环境。

效果: 智能体可自主定位、理解并验证任务所需的所有信息,无需人工解释。

4.2 架构约束:限制错误空间,确保"可验证"

目标: 通过规则和测试定义清晰边界,强制智能体在安全框架内操作。

核心实践:

  1. 分层架构与模块化设计
  • 强制采用分层架构(如 Types → Config → Repo → Service → Runtime → UI),每层定义明确的职责和接口。
  • 模块间通过契约(如类型定义、接口规范)通信,降低耦合性。
  1. 代码静态检查与动态验证
  • 自定义 Linter: 编写针对业务场景的静态代码检查规则(如命名规范、安全最佳实践、架构合规性)。
  • 品味不变式(Coding Taste Invariants): 将代码风格、设计模式等主观偏好编码为可自动验证的规则。
  • 单元测试 + 集成测试: 覆盖所有关键路径,确保智能体生成的代码不破坏现有功能。
  • 可观测性集成: 将 LogQL、PromQL 等查询能力嵌入系统,使智能体可实时访问应用状态和指标,验证结果正确性。
  1. 智能体操作权限控制
  • 定义智能体可修改的代码范围(如特定目录、文件类型)。
  • 关键操作(如数据库修改、生产环境部署)需人工审批。

效果: 通过规则和测试构建"安全区",智能体生成的代码必须经过验证才能合并,大幅降低错误风险。

4.3 熵管理:持续"自我修正",对抗系统漂移

目标: 主动检测和修复系统中的技术债务、知识陈旧、架构漂移问题,保持系统健康。

核心实践:

  1. 循环清理流程:
  • 后台 Codex 任务扫描: 定期运行 Codex 扫描代码库,自动检测:
    • 冗余代码、死代码。
    • 不符合"黄金原则"的代码模式(如反模式、低效实现)。
    • 文档与代码不一致问题。
  • 自动发起重构 PR: 对于可自动修复的问题(如格式问题、简单重构),直接由 Codex 提交 PR,多数在 1 分钟内即可由人类或另一智能体审查合并。
  1. 垃圾回收机制:
  • 文档治理(Doc Gardening): 智能体自动更新过时文档,清理无效注释,保持 docs/ 与代码同步。
  • 架构漂移检测: 持续监控代码依赖关系、分层架构合规性,发现违规立即触发修复任务。
  1. 智能体自我改进循环
  • 本地自审与循环修正:

i. 智能体生成代码后,先通过本地 Linter、单元测试进行自验证。

ii. 若未通过,根据反馈自动修正并重新验证,循环迭代直至通过。

iii. 若无法自修正,则提交初步结果并请求额外审查,人类提供指导后再次循环。

  • 从错误中学习: 记录智能体的失败案例,将其转化为新的验证规则或训练数据。

效果: 系统具备"自我清洁"能力,技术债务和架构问题在产生之初即被消除,避免累积爆发。

4.4 工作流闭环:智能体自主,人类掌舵

将上述机制整合为端到端流程:

  1. 任务接收
  • 人类定义高价值目标(如功能开发、bug 修复)。
  1. 智能体执行
  • 获取任务上下文 → 生成代码/修复方案 → 本地验证(测试、Linter)→ 自修正 → 提交 PR。
  1. 人类审查(仅关键节点)
  • 对高风险或复杂变更进行最终审批,提供战略方向或仲裁冲突。
  1. 系统反馈
  • 监控指标(如 PR 通过率、错误率),动态调整约束规则或上下文信息。
  1. 持续优化
  • 将人类反馈注入智能体模型,提升后续任务质量。

核心原则: 智能体负责"如何做",人类负责"做什么"和"何时干预"。

💡 总结: OpenAI 通过将系统构建为 "智能体可理解的自治机器" ,实现了从"人写代码"到"人设计系统,智能体进化系统"的范式转变。上下文工程 解决"理解"问题,架构约束 解决"正确性"问题,熵管理 解决"可持续性"问题,三者结合使智能体能够可靠、自主、持续地构建和维护复杂软件系统。

相关推荐
x2lab2 小时前
软考架构-软件工程【考什么,怎么考】
架构·软件工程·软考
爱思德学术1 天前
IEEE会议,录用率25.2%!CCF推荐学术会议(C)
计算机网络·算法·编程·软件工程·软件需求
AEIC学术交流中心1 天前
【快速EI检索 | ACM出版】第二届软件工程与计算机应用国际学术会议(SECA 2026)
计算机·软件工程
roman_日积跬步-终至千里1 天前
Harness Engineering:为什么你需要重新定义软件工程
软件工程
lpfasd1232 天前
Vercel 完全指南:从入门到精通
serverless·软件工程
雾江流2 天前
IDM 6.42.63 | 电脑最强多线程下载工具,支持断点续传和批量下载
软件工程·idm
twc8292 天前
不可言说的知识:AI时代软件工程的核心传递问题
java·人工智能·大模型·软件工程·知识工程
twc8292 天前
软件工程即知识工程:从知识传递视角重新理解研发过程
大模型·软件工程·知识工程
sensen_kiss2 天前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.1软件危机
学习·软件工程