别让你的 Coding Agent 瞎忙活,你最缺的可能是这套 Harness 规则

news2026/3/30 1:54:22
别让你的 Coding Agent 瞎忙活你最缺的可能是这套 Harness 规则团队把 Claude Code、Codex、Cursor 这类工具接进日常开发后最先暴露出的瓶颈通常在协作环节。一个简单的 bug fix 任务agent 可能会扩出十几个文件的改动。跑了一行测试它就已经在回消息里写下“问题已修复”。仓库里原本就很乱的模块它会毫无顾忌地顺着旧写法继续往下堆叠。这类情况多了大家最近开始频繁提到Harness Engineering。这个词讲的事情很具体项目要主动给 agent 准备一套能工作的配套环境。入口、规则、验证和反馈都在里面。什么是 Harness Engineering“Harness” 的字面本义是马具和缰绳。如果把大模型比作一匹能日行千里的马那 Harness 就是配套的马鞍和缰绳体系。在传统软件开发中这个词多数时候对应测试脚手架Test Harness是一套用来自动化跑输入、约束运行边界、验证结果的包裹环境。当 AI 接手项目里具体的编码任务时Harness Engineering 指的就是给 Agent 搭建的这层项目“外包围”结构。模型不管多聪明直接扔进一个有历史包袱的业务仓库里都很容易踩坑。为了让它踏实干活项目必须给它套上一层确定的工作环境明确指路告诉它该去哪找上下文哪些老旧文件动不得备好现成的验证脚本让它依靠真实的运行报错来改代码避免盲猜划定动作边界强制它在跨模块大改前必须停下来重新确认。Prompt 负责让大模型听懂你的意图Harness 负责让 Agent 在你的代码库里把事干对。先看一个极其常见的场景假设产品提了个小改动设置页里切换语言后顶部标题不会刷新很多 agent 接到这个任务后会做出这样的提交内容改了语言切换逻辑顺手调整了settingsStore.ts更换了i18n.ts里的旧接口再顺手把两个相关组件的 props 命名做了一遍统一规范最后看 diff一共改了 9 个文件。最麻烦的地方在于任务边界完全发散了你已经没法把它当成一个普通 bugfix 来做 code review。想管住这种发散靠口头嘱咐通常没用规则必须以具体形式落进项目里。最常见的做法是在AGENTS.md中写好For bug fixes: - Keep changes within the reported feature boundary. - Do not refactor nearby modules unless asked. - If you need more than 3 files, stop and explain why first. - Run: - pnpm test --filter settings - pnpm lint - pnpm typecheck这层设定非常具体上来就直接收住了 agent 的发散手脚。Harness 管的就是这些事项目全面引入 agent 后底下这几个环节就不该再依赖口头传达它该先查阅哪份指导文档平时高频跑的几个测试和检查命令是什么什么时候要先给计划再写代码提交完成前保底要过掉哪些检查仓库里哪些祖传代码目录绝不能碰触发什么条件必须直接停下等人类介入最终的验证结果依赖哪些指标不听凭它的主观回答仓库里这些要素越散agent 自由度越高猜错的几率也越大。规则只要能归拢到一个固定入口最终产出的可用度都会稳当很多。顶级团队已经靠它跑出了惊人产能如果觉得搭建这些环境太繁琐可以看看头部团队的真实数据。OpenAI 的研发团队在 2026 年初交出了一张靠 Harness 跑通的极端验证答卷他们花 5 个月构建出了一个包含内部工具和测试环节的商业应用总代码量级达到 100 万行但全组工程师没有手写过 1 行真正的逻辑代码。他们仅安排了 3 到 7 个工程师平均每人每天能吃下 3.5 个 Pull Request 的合并量。这种吞吐量的核心就是人类工程师完全调转了职能——大家不再当“语法打字员”而是全部转岗变成了“给 Agent 搭场子的人”。用他们的话说只要把环境切分、自动化跑测跟验收机制也就是 Harness架设得足够牢固Agent 便能在里面极其稳定地输出大体量代码。为什么大家开始认真聊这个前一波关于 AI 编程的探讨大部分围绕 prompt、context、RAG 和 memory。这些非常核心解决的是如何把上下文准确喂进模型里的问题。但现在的 agent 已经能处理很综合的操作读取和分析项目结构修改多个耦合模块调用外部接口自己跑测试验证接管一条独立的完整需求在这些复合动作下项目的本地环境直接决定了产出好坏。让同一个模型去改两个配置不同的仓库表现往往天差地别。差异通常出在这几个维度一边命令入口极其统一另一边靠 README、口头传达和碎块化的约定拼起来一边测试报错直观透明另一边遇到校验必须靠人工亲自去点页面测试一边明确了目录和模块的进出许可另一边连人类开发者都摸不清依赖关系遇到后面那种仓库不管大模型能力多强也只能依靠生猜。常见的三个坑1. 小任务扩成大重构你可能只提了一句简单的修一下订单页 total price 计算错误它交回来的作业却像在做全局重构修复了价格计算逻辑把格式化代码抽了出来变成formatPrice批量换了几个变量的混乱命名顺便清理了一些老旧的单测文件看起来每一步都很有道理但这一连串动作已经彻底脱离了最初的任务边界。对应的管束手段就是直接写死通用规则Bugfix tasks should prefer the smallest working change. Avoid refactoring unless the user asks for it. If the change grows, stop and summarize before continuing.这种硬性限制极其抗造对喜欢“过度重构”的 agent 非常管用。2. 谎报测试通过凡是用过 agent 的人都面对过它的“虚空汇报”已修复报错后端验证已通过界面调整完成但你一跑起来原来的问题照旧躺在原地。这通常是因为它的检查范围过于局限它只跑过了核心计算的单测并没顾及整体代码流程的集成问题它观测到调用响应是 200就笃定这块没问题彻底忽视了异常分支、容错处理和移动端的布局等边界情况项目里必须给它设定确切的完成指标pnpmtest--filterorderspnpmplaywrightteste2e/orders-total-price.spec.ts然后附加一条铁纪律Do not report completion until the targeted test passes. If you cannot run the browser flow, say so explicitly.压缩幻觉空间避免含糊其辞。3. 原样复刻老毛病很多工程师一开始没留意这个盲点agent 吸纳当前代码风格的学习能力极强。如果当前的模块充满了不规范设计它会原封不动地照着样子走随处粘贴复制的工具方法各自为营的新旧接口混用类型定义满仓库随机散落不具备统一结构的底层依赖继续堆叠Agent 很少并在这种时候跳出框外反问“是不是应该先把这些依赖规范”顺着烂摊子继续添砖加瓦就是它的默认机制。项目的基本面越乱agent 制造技术债的规模效应越惊人。优先补齐五件事引入 Harness 不需要搞大而全的方法论先落地最务实的几步。1. 设立固定的引导文档至少保证项目起步有这份清单一份AGENTS.md或者CLAUDE.md索引一套用着顺手的执行指令一个极其简单的开发工作流步骤这里的条款越少越精准越好只涵盖项目依赖及跑库跑通需要过哪些关测试或校验命令对应哪些快捷调用代码修改严厉禁止越线的那些深水区当大架构可能产生波及时要有什么申请动作示例Start: - pnpm install - pnpm dev Checks: - pnpm lint - pnpm typecheck - pnpm test Rules: - Do not edit /generated - Ask before changing shared schema - For UI bugs, run the related Playwright spec before reporting done这份核心指引确立了 agent 干活不可动摇的下限。2. 把常规嘱咐转换成硬 CI很多团队乐于把这些话大面积写进配置里注意考虑上下文兼容建议照顾代码命名的一致性多考虑补充相关的验证模块这类虚话对自动化修改的约束力极低。不如把口语要求转化成会亮红灯的 CI 校验命令{scripts:{check:pnpm lint pnpm typecheck pnpm test,check:settings:pnpm test --filter settings pnpm playwright test e2e/settings.spec.ts}}然后在对应的规范里只要求Before reporting completion, run the relevant check script.用强制的命令替代松散的话语。3. 及时透传运行反馈光看静态文件排查 bug 很容易歪曲原意。下面这些动态结果才是调试代码的核心依据Web UI 测试工具跑出来的验证过程DOM 组件报错对应的页面报错截图测试框架捕获抛出的 console error各类复杂的全链路后台日志表现解决渲染 bug别只让它死心眼地跟单测耗着。直观地喂一条看到效果的测试命令pnpmplaywrightteste2e/settings-language.spec.ts--reporterline让它真正借助反馈去打补丁输出水平能立刻上来。4. 用工具彻底截断重蹈覆辙一旦同一个 agent 在处理类似问题上接连踩空三四回别指望它自己变聪明。习惯性错引包地址、忘记类型同步排查、瞎改那些底层配置文件。这些情况就是固化防御规则的好时机。常见抓手包括设置严防死守的 pre-commit 勾子做强阻断的包限制权限收拢高频组合出来的集成 wrapper让跑飞的代码执行触发 fail-fast 尽早失败截停以常见的多包管理 monorepo 为例它非常容易跑在最上层直接发起耗时极长的全库校验。通过收拢命令去掐死这种无差别动作pnpmcheck:orders阻断它毫无意义的探索尝试自然就能降低后续不必要的人工盘查时间。5. 设立定期的“后台清道夫”面对 AI 极易产生的代码发散比如不知不觉间写乱的工具包、冗余的旧逻辑最前沿的解法是用魔法打败魔法建立后台 Garbage Collection垃圾回收机制。与其让工程师天天跟在 Agent 屁股后面修补烂代码不如直接专门起一个跑在后台的重构 Agent。只要明确了黄金规则给它设定固定的扫描频次让它专门拉分支去按节奏清理散落各处的偏离规范代码小步快跑地持续清还技术债。防范 Agent 制造屎山的最优解就是再给它套一个专门重整基建的 Harness。无法逃避的基建隐形成本做这些整顿并不能像交付一个光鲜功能那样收获快感主要心智都花在解决原有腐化问题上。补齐测试边界缺口、收敛零散冗长的代码脚手架、理顺那些年久失修的错误机制响应样样都是苦茬。但凡避开了这层基底隐形成本会快速体现在更长远的维护周期里。由于 agent 出库节奏远远大于人工打字连带带回的将是由它放大的批量返工排雷。退一万步讲Harness 工具仅仅是帮你管住了做事流程不失控。实际功能正不正确还得由具体的用例覆盖程度来最终买单。测试脚本测不到的长尾边缘问题agent 也一样会漏进线上系统。适用的边界如果业务场景对应以下画像Harness 工程基建越快铺完越舒服项目将会有大批日常小维护单扔给 agent 去扫尾内部存在高度重叠与密集的研发交互协作节点严格配备着严谨审核要求与完备流程闭环规范的仓库失误带来的代价极其敏感沉重的系统代码模块尝试通过这些智能机器去消化大量长周期宽边界的繁杂开发相对的仅仅是随手写验证脚本的实验文件、没有长臂约束的一波流独立原型小应用。不需要生搬硬套挂设枷锁。体量过小一两个人花三五分钟手动看两眼反而还更容易。现汇的一个检验办法单纯地跟跑一两个测试数据集模型的准确率百分比说服力已经严重贬损了。当各家公司接连让 AI 接管真正的产线任务业务包里遗留的标准、命令统一的集中度、校验反馈链的通畅率甚至是极其基础的代码整洁程度已经实质上决定了你能通过智能获得什么水平的回报率。大白话讲这依然是场实打实的传统软件防跑偏工作。如果你的业务仓库已经接连透出这样的危险信号处理一个小调整被发散拉扯到了多条核心主线链路变动界面上的回复永远光彩照人下个场直接启动测试立卡成麻代码评审时面对它发散过头的提交比起人工写出的错误更感觉心力交瘁仓库内过去沉淀下来的不良祖传规范成了它大规模复制的标尺那其实就在表明这套代码环境已经包不住 agent 干活的负外溢了。赶紧先把项目的 Harness 篱笆扎起来吧。参考文章OpenAI: Harness engineering: leveraging Codex in an agent-first worldWhat Is Harness Engineering? Complete Guide for AI Agent Development (2026)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463393.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…