Agent 时代的控制论:Harness Engineering 深度解析(深度硬核),从入门到精通,收藏这一篇就够了!

news2026/4/23 0:00:58
今年 2 月OpenAI 发布了一篇文章Harness engineering: leveraging Codex in an agent-first world描述了一种新的工作方式工程师不再直接编写代码而是设计环境、制定规则让 agent 在其中完成编码。这篇文章很快在技术圈引发了广泛讨论。有人认为这是软件工程的终结也有人觉得不过是新的炒作。事实上围绕 AI coding 的叙事一直在演化从最早的 prompt engineering到 context engineering再到如今的 harness engineering工程师的关注点逐渐从“如何与模型对话”转向“如何构建一个能够持续运行的系统”。不过把视野再拉远一点这种演变其实也并不新鲜。从瓦特的离心调速器到 Kubernetes 的控制器工程师的角色早已多次完成类似的转变从亲手操作系统变成设计让系统自动运转的机制。1948 年Norbert Wiener 将这种模式命名为控制论cybernetics。因此真正值得追问的问题或许不是“AI 会不会取代程序员”而是当反馈回路终于能够在“架构决策”这一层闭合时工程师需要做什么才能让这套机制真正运转起来01.同一个模式出现了三次我读完 OpenAI 那篇关于 harness engineering 的文章后心里一直有种说不清楚的感觉。直到某一刻我突然想通了这个模式我已经见过了而且见过不只一次是三次。第一次是在 18 世纪 80 年代。詹姆斯·瓦特James Watt发明了离心调速器Centrifugal governor。在这之前工人得一直守在蒸汽机旁边用手不停地调节阀门。有了调速器之后一套带飞球的机械装置会自动感知转速、自动调节阀门。工人没有因此消失只是工作内容变了从亲手拧阀门变成设计调速器本身。离心调速器Centrifugal governor是一种利用离心力自动调节发动机转速的机械装置。1788 年James Watt 对这一装置进行了改进并将其用于蒸汽机的自动速度控制。第二次是在 Kubernetes 出现之后。使用 Kubernetes 的时候你只需要声明目标状态比如运行三个副本、用这个镜像、分配这些资源。控制器controller会持续监测系统的实际状态一旦实际状态和目标状态出现偏差控制器就会自动介入修正重启崩溃的 Pod调整副本数量回滚出问题的部署。工程师的工作也随之改变从手动重启服务变成编写系统需要对齐的目标 spec。Kubernetes 是一个开源的容器编排平台用于自动化部署、扩展和管理容器化应用例如基于 Docker 的应用。它最初由 Google 设计并开源现在由 Cloud Native Computing Foundation 维护是现代云原生基础设施的核心组件之一。第三次就是现在。OpenAI 在文章中描述了这样一批工程师他们不再亲手写代码而是负责设计运行环境、构建反馈回路、把架构约束转化成可执行的规则然后让 agent 去完成实际的编码工作。他们用五个月生成了约一百万行代码没有一行是人手写的。OpenAI 把这种工作方式叫做“harness engineering”。每一次变化的背后其实都是同一个模式。诺伯特·维纳Norbert Wiener在 1948 年给这个模式命名为控制论cybernetics。这个词来自希腊语 κυβερνήτης意思是舵手Kubernetes 这个名字也来自同一个词根。本质含义都是一样的你不再需要亲手拧阀门而是开始掌舵。Norbert Wiener1894–1964是美国数学家被认为是控制论的奠基人之一在Cybernetics: Or Control and Communication in the Animal and the Machine中提出信息、控制与反馈的理论框架。这个模式每次出现背后都有同一个原因有人造出了足够强大的传感器和执行器能够在那个层面上把反馈回路闭合起来。02.为什么代码库是最后被攻克的领域代码库并不是没有反馈回路feedback loop只是这些回路都存在于底层。•编译器Compilers在语法层面闭合回路•测试套件在行为层面闭合回路•Linter 在代码风格层面闭合回路。这些机制虽是真实的控制论回路但仅能处理可机械检验的问题比如代码能编译吗测试能通过吗格式符合规范吗再往上一层就没有任何自动化机制了比如这个改动符合系统的整体架构吗这个技术方案是对的吗这个抽象层随着代码库不断增长将来会不会出问题这些问题既没有传感器来感知也没有执行器来修正。只有人能在这个层面上工作而且两端都需要人来完成一端是判断质量好坏另一端是动手写出修复方案。而 LLM 同时改变了上述这两端。LLM能像人一样判断代码质量和进行改动重构一个模块重新设计接口不一致的地方围绕真正重要的约束条件重写整套测试。这是第一次反馈回路可能在真正关键的决策层面闭合。但是闭合回路只是必要条件还不是充分条件。瓦特的调速器需要仔细调校才能正常工作Kubernetes 的控制器需要一份正确的 spec 才能对齐目标而在代码库里工作的 LLM则需要一样更难提供的东西。03.如何校准传感器和执行器事实上让 agent 能够执行测试、CI 能产出可解析的结果、报错信息能指向具体修复方向这样的基础反馈循环运行起来仅仅是最低门槛。Carlini 曾经做过一个演示他让 16 个 agent 并行协作一起构建一个 C 编译器。他用的 prompt 极其简单但测试基础设施的设计却非常精心。他事后说“我大部分的精力都花在设计 Claude 周围的环境上也就是测试、运行环境和反馈机制。”Nicholas Carlini 是美国计算机科学家专注于 AI 安全与对抗性攻击adversarial attacks的研究。也就是说真正困难的问题在于如何基于你对自己系统的认知来校准这套传感器和执行器。大多数人就卡在这一步然后把问题归结于 agent 本身“它一直在做错误的事情它根本不理解我们的代码库。”这种诊断几乎总是错的。Agent 失败不是因为它的能力不够而是因为它需要的那些知识比如对你的系统来说什么叫做“好”、你的架构鼓励哪些模式、又刻意回避哪些模式这些知识全都锁在你自己的脑子里你从来没有把它们写出来。Agent 不会自主学习进化。如果你不把这些知识写下来agent 第一百次犯的错会和第一次一模一样。因此真正需要做的工作是把你的判断标准变成机器可以读懂的形式写一份描述真实分层结构和依赖方向的架构文档配置一套内置了修复指引的自定义 Linter整理一套把团队审美和品味编码进去的黄金原则。OpenAI 也发现了这一点他们曾经每周五花 20% 的时间专门清理“AI slop”后来他们把自己的标准直接编进了 harness 本身问题才得到根本解决。04.唯一的出路文档、自动化测试、编码成规则的架构决策、快速的反馈回路这些本来就是正确的工程实践。过去三十年几乎每一本软件工程的书都在推荐这些。但大多数人选择跳过因为跳过的代价来得很慢、散得很开代码质量缓慢下滑但新人上手越来越痛苦技术债在不知不觉中积累。Agentic engineering 让这个代价变得极端。**•**如果你跳过了文档agent 就会无视你所有的规范而且不是在某一个 PR 上出问题而是在每一个 PR 上都出问题并以机器的速度全天候不间断地重复同样的错误。**•**如果你跳过了测试反馈回路就根本无法闭合。**•**如果你跳过了架构约束代码漂移的速度会远远快过你手动修复的速度。代码漂移Code Drift指的是软件项目中代码随时间逐渐偏离最初设计目标或规范的现象可能表现为架构不一致、功能冗余等。这种漂移会增加维护成本、降低代码可读性和可靠性。•更糟糕的是如果 agent 不知道什么叫做整洁的代码你就没有办法用 agent 来收拾这个烂摊子。也就是说没有经过校准的 agent制造出了问题也解决不了问题。该做的事情从来没有变过。只是不做这些事情的代价已经变得无法承受。正因如此我们必须关注生成之外的验证环节。生成答案和验证答案之间存在明显的不对称性也就是 P vs NP 问题的核心直觉通常验证一个答案比生成一个正确答案要容易得多。Cobbe 等研究者已经在 LLM 上通过实验验证了这一点。这个不对称性给出了明确的方向你不必在编写代码上比机器更快只要你能知道怎么高效地评估它的产出。也就是说你需要能够定义什么是“正确”识别输出结果偏离目标的地方并判断整体方向是否正确。P vs NP 问题是计算机科学中一个未解难题每个能被快速验证的问题NP 类问题是否也能被快速求解 P 类问题。Karl Cobbe 等人在 2021 年 10 月 27 日 在 arXiv 发布了 Training Verifiers to Solve Math Word Problems实验证明在 LLM 上训练“验证器”用于判断答案正确性要比直接生成正确答案任务更容易验证方法显著提高了模型在数学应用题上的表现。那些当年设计了瓦特调速器的工人后来没有回去拧阀门。不是因为他们不会拧而是因为回去拧阀门这件事已经没有任何意义了。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2424163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…