找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2300

积分

0

好友

308

主题
发表于 2 小时前 | 查看: 4| 回复: 0

"在过去五个月里,我们交付了一款产品的内部测试版,其中没有一行代码是人工编写的。"
—— Ryan Lopopolo,OpenAI技术人员

当你还在为一个Bug调试到深夜,当你还在为代码Review而焦头烂额时,OpenAI的工程师们已经完成了一项颠覆性的实验:完全依靠AI智能体,从零构建了一个功能完整的软件产品,代码量超百万行,却没有一行由人类直接编写。

更关键的是,他们将开发周期缩短到了传统方式的十分之一。这并非科幻,而是2026年2月OpenAI工程博客上披露的真实案例。他们将这套全新的工程方法论命名为 “Harness Engineering”(驾驭工程)。这标志着软件开发模式可能正迎来一个根本性的转折点。

一、什么是Harness Engineering?

“Harness”一词源于马术,指的是套在马匹身上、用于引导和控制其力量的“挽具”。马的力量固然强大,但若无挽具,则难以被有效利用,更无法完成拉车等复杂任务。

OpenAI正是借用了这个精妙的比喻,来形容他们与AI的新型协作关系。在他们的定义中:

AI模型(如Codex)就像一匹强壮的骏马,而Harness Engineering就是那套精心设计的挽具。它不是限制AI的枷锁,而是让AI能够可靠、高效地完成复杂软件工程任务的完整系统。

这套“挽具”具体包含哪些组件呢?

  • 📁 精心设计的代码仓库结构与规范
  • 📝 清晰、结构化、AI可读的文档与架构指南
  • 🔧 自动化的工具、脚本与验证机制
  • ✅ 严格的、可执行的工程约束
  • 🔄 持续运行的反馈与优化循环

二、一次颠覆性的开发实验

2.1 从空白仓库起步

时间回到2025年8月底,一切从一个空白的Git仓库开始。三名工程师设定了一个极具挑战性的目标:完全使用AI智能体来构建一个真实的软件产品,并严格遵守 “不手动编写任何代码” 的规则。

项目的初始架构——包括代码仓库结构、CI/CD配置、代码格式化规则、包管理器设置和应用框架——全部是在少量现有模板的指导下,由AI结合GPT-5的能力生成的。

甚至指导AI智能体如何在代码仓库中工作的核心文件 AGENTS.md,其内容本身也是由AI编写的。

2.2 五个月后的惊人成果

经过五个月的开发,项目的关键数据如下:

指标 数据
代码行数 约100万行
Pull Request 数量 约1500个
核心工程师人数 从3人增至7人
人均每日处理的PR数量 3.5个
开发时间 传统方式的 1/10
人工编写的代码 0行

这个完全由AI生成的产品,如今已有数百名内测用户每日使用,并经历了完整的交付、部署、故障发现与修复的全生命周期。这项实验的成功,为开源实战提供了极具前瞻性的参考案例。

三、工程师角色的根本性转变

这可能将是影响所有开发者的核心部分。

3.1 从“编码者”到“环境设计师”

在传统的软件开发模式中,工程师的核心工作循环是:理解需求、设计方案、编写代码、调试、进行代码审查,最后部署上线。

而在Harness Engineering的世界里,工程师的工作重心发生了根本转变:

设计环境、明确意图、构建反馈回路——让AI智能体能够可靠、自主地完成编码工作。

用一个比喻来理解:

  • 传统工程师如同亲自下厨的厨师,需要完成从切菜到装盘的每一道工序。
  • Harness工程师则像是厨房设计师主厨培训师。他们的工作是:
    1. 设计一个高效、符合人体工学的厨房(代码仓库结构);
    2. 规划好所有工具和原材料的摆放位置(创建工具与抽象层);
    3. 编写清晰、可执行的操作手册(文档与指南);
    4. 设立明确的质量检查标准(自动化测试与验证);
    5. 培训AI助手,使其能够熟练运用上述一切。

3.2 当进展受阻时

OpenAI团队在实验中得出了一个关键洞见:

当AI智能体无法取得进展时,解决方案几乎从来不是“让它再努力一点”或“重新生成指令”。

取得突破的唯一途径是 “让环境变得更清晰”。此时,人类工程师需要思考的是:

“究竟还需要赋予AI什么样的能力?我们又该如何让这种能力对智能体来说既清晰可读,又可被自动化地强制执行?”

这是一种思维范式的彻底转变:从“我如何解决这个问题”变为“我如何设计一个能让AI解决此类问题的系统”。

四、代码仓库:AI唯一的“记录系统”

4.1 文档为何前所未有地重要?

在Harness Engineering中,代码仓库的角色被重新定义——它不再仅仅是存放代码的地方,更是AI智能体所能感知和理解的唯一信息来源

从AI的视角来看,它在运行时无法访问的任何内容,都等同于“不存在”。

这意味着:

  • 存储在Google Docs中的设计决策?AI看不到。
  • Slack或Teams上的架构讨论?AI看不到。
  • 团队成员脑中默认的共识或“潜规则”?AI更看不到。

只有那些提交到代码仓库本地的、已版本化的内容(代码、Markdown文档、架构图、执行计划等),才是AI能够理解并据此行动的全部世界。

4.2 “单一巨型文件”的失败尝试

最初,OpenAI团队尝试了一种看似简单直接的方法:将所有指导信息都堆砌在一个庞大的 AGENTS.md 文件中。

结果证明这是灾难性的。

问题主要体现在以下几个方面:

问题 后果
难以验证 单个大文件无法进行自动化检查,无法追踪规则覆盖率、时效性。
快速腐烂 庞杂的手册迅速过时,变成了陈旧规则的“坟场”。
过度指导 当所有规则都标为“重要”时,AI反而难以分辨真正的重点。
挤占上下文 巨大的指令文件会占用宝贵的模型上下文窗口,挤占分析实际任务和代码的空间。

4.3 正确实践:提供“地图”,而非“百科全书”

OpenAI最终的解决方案是:AGENTS.md 视为一个“目录”或“地图”,而非包罗万象的“百科全书”

他们建立了一个结构化的文档体系:

AGENTS.md              # 约100行的“总地图”,仅指向深层内容
ARCHITECTURE.md        # 架构概览
docs/
├── design-docs/       # 设计文档
│   ├── index.md
│   ├── core-beliefs.md
│   └── ...
├── exec-plans/        # 执行计划
│   ├── active/
│   ├── completed/
│   └── tech-debt-tracker.md
├── product-specs/     # 产品规格
├── references/        # 参考资料
├── DESIGN.md
├── FRONTEND.md
├── QUALITY_SCORE.md
└── SECURITY.md

其核心理念是 “渐进式披露”:AI从一个简洁、稳定的切入点(AGENTS.md)开始,根据指引去相应的深层文档中查找详细信息,而不是一开始就被海量信息淹没。这种方法极大地提升了AI处理复杂任务的效率和准确性。

五、架构约束:为AI设置清晰的“护栏”

5.1 约束何以带来自由?

这听起来有些矛盾,但OpenAI的实践表明:

AI智能体在具有严格边界和可预测结构的环境中,表现最佳,创造力也能得到更有效的发挥。

他们围绕一个严格的架构模型来构建应用。例如,每个业务域都可能被划分为固定的层次,如:

Types → Config → Repo → Service → Runtime → UI

并且依赖方向经过严格定义和验证,只允许特定方向的调用。

5.2 机械化地执行约束

这些约束并非依靠人工代码审查来维护,而是通过自动化工具强制执行

  • 🔍 自定义Linter:静态分析代码,检测违反架构规则的模式。
  • 结构化测试:在CI流水线中自动验证模块间的依赖关系是否正确。
  • 🔧 CI门禁:在代码合并前,自动运行所有约束检查。

更有趣的是,这些用于检查约束的Linter和测试工具,其代码本身也是由AI(如Codex)生成的。当AI提交的代码违反规则时,错误信息会直接包含清晰的修复建议,使得AI能够自主理解和修复问题。

5.3 将“工程品味”编码化

OpenAI团队甚至将开发团队的“工程品味”和最佳实践编码到了系统中:

  • 📊 结构化日志:必须使用特定格式,方便解析和查询。
  • 📛 命名约定:数据模式、类型、函数命名必须遵循统一规范。
  • 📏 文件大小限制:防止单个文件膨胀,保持可维护性。
  • 🛡️ 可靠性模式:强制使用特定的错误处理和重试机制。

在传统开发中,这些规则可能显得繁琐。但对AI而言,它们是不可或缺的效率倍增器——一旦被编码为规则,就能无差别、无疲劳地应用于所有代码。

六、可观察性:赋予AI“运行时视野”

6.1 AI的职责不限于编码

在Harness Engineering范式下,AI智能体的职责从编码延伸到了软件的全生命周期:

  • 🐛 复现用户报告的Bug
  • 验证修复是否有效
  • 📊 监控应用性能指标
  • 🔍 分析日志以定位问题根源

为此,OpenAI团队投入了大量精力来 “让应用程序的运行时状态对AI可读”

6.2 具体实现方案

1. 独立的测试实例
每次AI尝试修改代码时,系统会为该次更改启动一个完全隔离的应用程序测试实例。AI可以在这个沙箱环境中自由测试自己的修改,而不会影响主版本或其他人的工作。

2. 浏览器自动化能力
他们将Chrome DevTools协议集成到AI的运行时环境中,使AI具备了处理DOM快照、截取屏幕截图和模拟用户导航的能力。AI可以像真实用户一样与Web界面交互。

3. 直接访问日志与指标
AI被授予权限,可以直接使用LogQL查询应用日志,使用PromQL查询性能指标。拥有了这些上下文后,对AI下达如下指令就变得可行且有效:

“确保服务启动时间控制在800毫秒以内。”
“验证这四个核心用户流程中的任何步骤耗时都不超过两秒。”

6.3 展现出的高度自主性

得益于上述强大的基础设施,AI已经能够执行完整的端到端功能开发与维护流程:

1.  验证代码库的当前状态。
2.  复现已被报告的Bug。
3.  录制展示故障现象的视频。
4.  分析原因并实施修复。
5.  启动应用,验证修复是否成功。
6.  录制展示解决方案的视频。
7.  创建并提交Pull Request。
8.  回应代码审查中的反馈意见。
9.  检测并修复可能引起的构建失败。
10. 最终将更改合并到主分支。

OpenAI团队经常观察到,单个AI智能体可以为一个复杂任务持续工作超过6小时——这个过程通常发生在人类工程师下班或休息的时间。

七、应对熵增:自动化的“技术债垃圾回收”

7.1 AI也会积累技术债

完全自主的AI开发带来了一个新问题:AI会学习和复现代码库中已存在的模式——无论这些模式是优良的还是糟糕的

随着时间的推移,代码中不理想模式的微小复制和扩散,必然导致架构漂移和技术债务的累积。最初,团队每周需要花费约20%的时间手动清理这些“AI残渣”,但这显然不可持续。

7.2 建立自动化清理循环

他们的解决方案是建立一个自动化的、循环执行的“垃圾收集”流程

  1. 📜 编码“黄金法则”:将团队认可的最佳实践,直接编写成可执行的规则或模板,存入代码库。
  2. 🤖 后台智能体任务:定期运行一个后台AI任务,扫描整个代码库,识别与“黄金法则”存在偏差的模式。
  3. 📈 自动化质量评分:根据扫描结果,自动更新代码质量等级或技术债务追踪器。
  4. 🔄 自动生成重构PR:针对发现的问题,自动创建精准的、小范围的重构Pull Request。

这类似于编程语言中的垃圾回收机制:

技术债务就像高息贷款。通过自动化流程持续地、小额度地“偿还”,远比让债务累积到不得不进行一场痛苦的大型重构要好得多。

八、对普通开发者的启示

8.1 工程师会失业吗?

这是许多人最关心的问题。基于OpenAI的实验,答案很明确:不会,但工程师的角色和能力要求将发生根本性演变。

实验证明,构建高质量软件依然需要深厚的工程“纪律”,但纪律的重心已从“编写完美的代码”转移到了“设计完美的支撑环境”上。

未来工程师的技能矩阵将发生显著变化:

传统核心技能 新兴核心技能
编写业务逻辑代码 设计高效的AI工作环境与流程
手动调试与修复Bug 构建自动化的验证、诊断与修复系统
人工代码审查 设计并编码可执行的工程约束与规则
阅读人类文档 编写结构清晰、AI可读的文档与指南
理解系统架构 将架构理念转化为可自动化验证的约束模型

8.2 我们现在能做什么?

即使你尚未使用如Codex般高级的AIGC编程工具,Harness Engineering的许多理念依然可以立即应用到当前的工作中:

1. 像设计API一样设计你的文档

  • 采用“渐进式披露”结构,提供清晰的导航。
  • 将文档视为你与未来AI协作者(以及新队友)的契约。
  • 使用工具确保文档与代码同步更新。

2. 将隐性约束转化为显性规则

  • 把代码规范(命名、格式、结构)编写成Linter规则。
  • 在CI/CD流水线中加入架构边界验证。
  • 编写错误信息时,思考如何包含“可行动的修复建议”。

3. 增强系统的可观察性

  • 推行结构化日志,而非自由文本。
  • 定义有业务意义的性能指标。
  • 确保错误信息包含足够上下文,便于定位问题。

4. 从现在开始为AI协作做准备

  • 避免将关键的设计决策仅存放在即时通讯工具或独立的文档服务中。
  • 重要的讨论结论和设计思路,应记录在代码仓库的READMEdocs/目录下。
  • 坚持使用版本控制系统来管理所有项目相关的设计文档。

九、OpenAI仍在探索的领域

即使是这个领域的先行者,OpenAI也坦诚他们仍在学习过程中:

“我们尚不清楚的是,在一个完全由AI生成的系统中,长期的架构连贯性将如何演变。我们仍在探索,人类的专业判断力在哪些环节能发挥最大作用,以及如何将这种判断力有效地编码到系统中。”

他们当前的研究和挑战主要集中在:

  • 🎯 环境设计:如何设计出最能激发AI创造力与效率的“工作空间”?
  • 🔄 反馈回路:如何建立更精准、更及时的反馈机制来训练和优化AI智能体?
  • 🎮 控制系统:如何在赋予AI自主性的同时,确保人类对系统发展方向和质量的最终控制?

他们的终极目标是:帮助AI智能体具备大规模构建并长期维护复杂、可靠、可演化软件系统的能力。

十、结语

Harness Engineering不仅仅是一种新的工具链或工作流,它更代表了软件工程范式的一个重要演进方向。

它跳出了“AI是否会取代程序员”的二元争论,指向了一个更富建设性的未来:人与AI的深度协同,各自发挥其不可替代的优势。

如同历史上的工业革命改变了“工匠”的角色而非消灭了“工作”一样,AI的普及也必将重新定义“程序员”的工作内涵。

未来的顶尖工程师,很可能正是那些最擅长设计“挽具”的人——他们深谙软件工程的本质,并能将这些原理转化为AI可理解、可执行的系统,从而驾驭AI这股磅礴的计算之力,在正确的道路上创造更大的价值。

💡 用一句话总结Harness Engineering的精髓:
人类负责战略、设计与环境构建;AI负责战术、执行与持续优化。(Human designs. Agent executes.)

这种人与AI智能体协同开发的新模式,无疑是开发者需要关注的重要趋势。想了解更多前沿技术动态与深度讨论,欢迎来到云栈社区开发者广场板块,与其他极客一起交流探索。




上一篇:Unity URP重构,听障叙事游戏《桂花落》4年开发心路
下一篇:比亚迪发布即量产二代刀片电池及闪充技术,充电如加油终结油电之争
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-12 11:41 , Processed in 0.569420 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表