当前位置: 首页 > article >正文

Harness Engineering实践,如何驾驭AI这匹野马

随着Harness Engineering驾驭工程这个词开始在 2026 年频繁刷屏很多人的第一反应恐怕又是“看又一个试图收割智商税的黑话Jargon出现了。” 的确教科书里的 Software Engineering 优雅如诗现实中却是群魔乱舞Clean Code 的守则详尽如法典却挡不住大家在“屎山”上精雕细琢。概念与落地之间隔着一条名为“平庸”的巨大鸿沟。这一次我不打算再堆砌苍白的定义而是带你潜入一个边缘云实战项目的深水区。我们要聊的不是玄学而是如何在落地 Harness Engineering 的过程中把 AI 研发从“碰运气”的 Vibe Coding驯化为一门过程可控、结果可信的系统性工程学科。1.我们的武器库工具与范式在进入代码深水区之前有必要先检阅一下本次实战所依赖的“重型装备”。在这个 AI 原生软件工程AI-Native SE的爆发年我们不再是在 IDE 里单打独斗而是在一套严密的工具链约束下进行“工业化生产”。1.1 OpenCodeAI 编程界的“Linux”作为 2026 年开发者生态的当红炸子鸡OpenCode 凭借 125K Star 的战绩确立了其 AI Coding Agent 的霸主地位。它的迷人之处在于其“不妥协”的开源精神不绑定任何模型厂商通吃主流 MaaS 平台且完美向下兼容 Claude Code 生态。在本项目中它是我们的“首席执行官”负责调动后端的 Glm-4.7 模型将逻辑转化为具体的二进制生产力。安装和使用请参考https://opencode.ai/docs/zh-cn/1.2 SDD是真理还是教条SDDSpec-Driven Development规格驱动开发提出了一个极具挑衅性的口号“文档即真理代码只是副产品”。 它的逻辑是通过高度结构化的功能定义强迫人类与 AI 在落子编码前达成“逻辑共振”从而降伏那些由于理解偏差导致的 Bug。虽然亚马逊的 Kiro 已经将这套流程推向了极致但我必须在此提前打个响指——我并不完全认同“文档即真理”这种激进的教条在后文中我会撕开这个优雅幻觉下的工程真相。1.3 OpenSpec连接意图与现实的铁轨如果说 OpenCode 是引擎那么 OpenSpec 就是铺就通往结果的铁轨。在 2026 年它已成为 AI 原生开发的事实标准。 它绝非一份躺在目录里落灰的 PDF而是一套将“人的模糊意图”硬化为“机器可执行约束”的规约协议。它构建了一个标准化的桥梁贯穿了从需求调研 (Explore)到方案提案 (Proposal)再到自动化实现 (Implementation)的全生命周期。更多OpenSpec的内容可以参考https://github.com/Fission-AI/OpenSpec/blob/main/docs/getting-started.md如下图所示只需一行openspec init我们便在项目根目录下构筑了一套钢铁般的工程约束。1.4 Harness Engineering给 AI 狂飙的马力套上“缰绳”Harness直译为“挽具”。想象一下你面对的是一匹拥有无穷爆发力的烈马如果没有缰绳、马鞍和踏板它只会在旷野中横冲直撞甚至把你掀翻在地。在 AI 时代模型算力就是这匹“马”而 Harness Engineering 就是你亲手打造的那套精密的控制系统。在工程语境下Harness 是你为 AI 搭建的整套数字化结界它是那份规定“非请勿入”的架构约束是那组时刻盯着逻辑漏洞的自动化校验脚本是动态扩容的上下文管理器也是出故障时能实现自愈的隔离沙箱。OpenAI 曾在那篇轰动业内的《Harness Engineering 实践》中透露其核心要义可以凝练为三根支柱过程可控、结果可信、反馈闭环。1. 过程可控终结 Vibe Coding 的玄学为了降伏那种“全靠感觉、随缘生成”的随机性我们必须给 AI 注入高度结构化的外部干预。这正是 SDD 以及 AWS Kiro 诞生的初衷——用确定的输入换取确定的逻辑。2. 结果可信以测试为终局类似于“AI 版的 TDD”。在 AI 还没落下第一行代码前我们就先构建出完备的测试用例和模拟运行环境。当绿灯亮起的那一刻功能的一致性不再需要靠人类肉眼复核而是由数学逻辑背书。3. 反馈闭环在磨合中进化构建 Harness 的初期往往是痛苦的“慢”因为你要像搞精益生产一样对 AI 每一个不符合预期的输出进行“追溯闭环”。该补规则补规则该加约束加约束。这种初期的“慢”是为了后续飞轮转起来后的“极速自演进”。Harness Engineering 正在粗暴地重定义“程序员”这个职业。OpenAI 的工程师们说得足够露骨他们的工作性质已经发生了基因突变。他们不再是代码的搬运工而是“代码工厂”的设计师。 他们的战场变成了定义架构约束、构建反馈闭环、维护文档系统、监控质量指标。一个顶级的 Harness Engineer其价值在于不断优化那套精密的控制旋钮。一旦自动化飞轮转过临界点他的杠杆率将彻底碾压任何所谓的手写代码天才——因为他设计的每一条规则、每一个机制都会在未来的千万次 Agent 运行中产生永恒的复利。需求设计从“模糊意图”到“钢铁蓝图”实战项目背景边缘云网络平面控制服务。 核心目标通过 Netconf 协议自动化配置交换机与服务器实现边缘租户 Underlay 网络的物理隔离。2.0 任务拆分确定性的作战序列不管传统软件工程还是Agentic软件工程我们都不会“一步到位”也拒绝“走一步看一步”。出于可控的SDD实现要求必须将宏大的愿景拆解为原子化的、具有依赖关系的 User Stories (US)。这不仅是为了给 AI 指路更是为了构建一个可追踪的项目进度闭环。阶段优先级US编号核心内容依赖关系1. 基础架构P0US-1: COLA 4.0 骨架搭建项目初始化无US-2: 核心领域 Spec 定义领域建模US-12. 通信适配P1US-3: Netconf 驱动集成Netconf实现US-1US-4: 站点初始化规格实现站点初始化US-33. 业务核心P2US-5: 租户网络平面创建分配 VLAN/VNIUS-2, US-4US-6: 裸机实例网络配置将裸机物理网卡接入对应的租户平面。US-54. 生命周期P3US-7: 租户平面销毁与回收实现配置的反向清理逻辑释放占US-5US-8: 配置一致性巡检定期比对物理设备US-3, US-52.1 需求探索Explore一场深度的“灵魂拷问”在使用OpenSpec进行需求探索的时候我们只需要在/openspec-explore命令后加上简单的需求描述即可针对上面的任务拆分首先我们要搭建项目的基础框架此处我想在搭建框架之外再实现一些基础功能实际是把US-1和US-2合并了因此我输入了如下的prompt/openspec-explore 创建一个新微服务管理租户在边缘云的underlay网络通过租户网络平面实现租户间网络隔离该服务通过Netconf协议统一管理边缘云站点的交换机配置支持站点初始化、租户网络平面创建/删除、裸机实例网络配置等核心功能。现在先搭建应用框架要求使用COLA四层架构MavenJDK21SpringBoot3OpenSpec 随后给我的反馈令人惊喜。在探索模式下它会发起一连串极具专业深度的互动澄清。这不仅是在对齐需求更是在用大模型海量的网络领域知识Underlay 知识库为我查漏补缺。这些“灵魂拷问”覆盖了从业务逻辑领域建模到应用架构的全维度1、业务领域深挖涉及到具体的租户网络隔离实现逻辑。2、部署拓扑与管理半径厘清服务与边缘站点的映射关系3、驱动层适配针对不同厂商交换机的适配策略4、架构选型决策关于 COLA 架构中 Layer-first 与 Feature-first 的权衡这是一个让我欣慰的问题经过这么多年对COLA的持续经营COLA已经变成大模型的背景知识关于Layer-first和Feature-first之间的权衡的确是个关键问题。大部分情况会选Layer-frist简单一点。2.2 创建提案Proposal纠偏 AI 的“教条主义”需求澄清后通过openspec-proposal生成的变动清单包含proposal.md,design.md,tasks.md就是我们即将实施的工程蓝图。作为 Harness Engineer此时必须开启严苛的 Spec Review 模式。 AI 有时会陷入某种“模式教条”。例如在本项目中AI 过于推崇 DDD 中的 Value Object值对象甚至将所有的业务 ID 都建模成了 VO。这显然增加了不必要的复杂度。我果断下达指令“取消 ID 的 VO 建模回归简单类型。”AI 随即根据反馈自动更新了所有设计文档和任务列表。这种“人类设定约束 - AI 调整蓝图 - 人类最终确认”的迭代过程确保了生成的任务列表tasks.md精准且不跑偏。以下是最终确定的部分 tasks.md 片段。这份结构化清单不仅是 AI 的行动指南更是我们拒绝“黑盒式开发”、实现过程可控的关键武器## 1. Project Setup- [] 1.1 Create Maven project with Spring Boot 3 parent, JDK 21- [] 1.2 Configure COLA layer package structure (adapter, app, domain, infrastructure)- [] 1.3 Add dependencies: Spring Web, Spring Data JPA, PostgreSQL driver, Liquibase- [] 1.4 Configure application.yml with database connection and Liquibase- [] 1.5 Create main Spring Boot application class## 2. Domain Layer - Value Objects- [] 2.1 Create Vlan value object with validation (100-4000)- [] 2.2 Create Vrf value object with naming convention (VRF001-VRF999)- [] 2.3 Create Vendor enum (HUAWEI, H3C)- [] 2.4 Create status enums (SiteStatus, TenantStatus, ServerStatus, SwitchStatus)- [] 2.5 Create domain eceptions (VrfEhaustedEception, VlanEhaustedEception, etc.)## 3. Domain Layer - Entities- [] 3.1 Create Site entity (id: String, name, switches, status)- [] 3.2 Create Switch entity (id: String, siteId: String, ipAddress, vendor, credentials, role, status)- [] 3.3 Create Tenant entity (id: String, siteId: String, vrf: Vrf, status)- [] 3.4 Create NetworkPlane entity (id: String, tenantId: String, vlan: Vlan, cidr)- [] 3.5 Create Server entity (id: String, networkPlaneId: String, switchId: String, portName, status)有了这份钢铁般坚实的任务清单代码实现阶段将不再是“猜谜游戏”而是一场精准的“外科手术”。代码实现警惕 AI 的“草稿陷阱”当proposal阶段的规格、设计与任务清单Spec, Design, Tasks最终对齐了我们的预期便可以祭出openspec-apply命令开启自动化的“火力全开”模式。但在这一阶段作为 Harness Engineer你必须保持清醒的审视目前的 AI 在实现层更像是一个“唯结果论”的平庸程序员。 它能极其高效地跑通逻辑分支却对代码的可读性、复用性以及架构的优雅感缺乏“灵魂级”的感知。它给你的感觉更像是为了赶进度而拼命堆砌功能丝毫不考虑未来的维护成本。因此在 Harness Engineering 的范式下我们必须达成一个共识AI 生成的代码绝非“成品”而是一份高完成度的“草稿”。从“草稿”到“作品”重构即升华在“古法编程”时代资深开发者往往也会写两遍代码第一遍快速实现功能草稿第二遍进行精细重构成品。那些更合理的抽象、更清晰的表达、更健壮的扩展性往往不是起笔时就能想透的而是在认知迭代的推敲中打磨出来的。 AI 帮我们省去了第一步的体力活但它也顺便丢给我们一堆需要“手术刀式重构”的半成品。**案例 A逻辑平铺与组合方法模式 (CMP)**本项目中最复杂的用例是“创建租户平面”。AI 最初生成的代码虽然功能达标且能跑通测试但数个业务步骤全部塞在一个大方法里读起来像是一篇毫无段落的流水账。我采用结构化思维利用CMP (Composed Method Pattern组合方法模式)对其进行了二次重构。重构后的逻辑如同一份清晰的业务清单public CreateTenantPlaneResp createTenantPlane(String siteId, CreateTenantPlaneReq req) { // 准备上下文环境包含站点ID和请求信息 Context ctx prepareContext(siteId, req); try { // 步骤1保存network信息状态为pending networkGateway.save(ctx.getNetwork()); vlanifGateway.save(ctx.getVlanif()); // 步骤2在核心交换机上创建VLAN接口并绑定VRF createVlanifAndBindVrfOnCoreSwitches(ctx.getCoreSwitches(), ctx.getVlanif(), ctx.getVlanId()); // 步骤3在核心交换机上发布路由信息 publishRoutesOnCoreSwitches(ctx.getCoreSwitches(), ctx.getVrf().getName(), ctx.getCidrs()); // 步骤4在核心下联端口上允许VLAN通过 switchConfigService.allowVlanOnPorts(ctx.getCoreSwitches(), ctx.getSite().getSiteId(), PortRole.DOWNLINK, ctx.getVlanId()); // 步骤5在TOR上联端口上允许VLAN通过 switchConfigService.allowVlanOnPorts(ctx.getTorSwitches(), ctx.getSite().getSiteId(), PortRole.UPLINK, ctx.getVlanId()); // 步骤6在核心交换机上创建租户BGP配置 createTenantBgpConfigOnCoreSwitches( ); // 步骤7设置网络状态为激活状态并保存 networkGateway.updateStatus(ctx.getNetwork().getId(), NetworkStatus.ACTIVE, ); return new CreateTenantPlaneResp() .setId(ctx.getNetwork().getId()) .setVrfId(ctx.getVrf().getId()) .setVlanifId(ctx.getVlanif().getId()); } catch (Exception e) { log.error(Create tenant plane failed, rolling back. networkId{}, ctx.getNetwork().getId(), e); // 回滚配置将上下文中的配置信息恢复到之前的状态 rollbackConfig(ctx); // 保存失败信息将请求、异常和上下文信息保存到失败记录中 saveFail(req, e, ctx); throw new VlanException(Create tenant plane failed: e.getMessage()); } }案例 B逻辑散落与领域能力下沉AI 经常会将业务逻辑散落在应用层Application Layer导致领域对象变得“贫血”。例如“从 CIDR 推断 Gateway IP”的逻辑AI 最初是直接写在 Service 里的。我将其下沉到了 Cidr 领域对象中// 领域能力下沉让对象自己“说话” public String getGatewayIp( ) { IPAddress addr new IPAddressString(this.cidr).getAddress(); if (addr null) { throw NetworkErrorDefine.INVALID_IP_FORMAT.render(Invalid CIDR format: this.cidr).toVlanException(); } return addr.toSequentialRange().getLower().increment(1).toString(); }3.2 将重构逻辑“硬化”为规则发现 AI 的“偷懒”倾向后真正高阶的 Harness Engineer 不会满足于只改这一次代码而是会尝试将这种审美偏好提炼为 Agent 的约束规则 (Rules)。例如你可以将“单方法长度禁止超过 30 行”设定为 Linter 规则。一旦 AI 生成了臃肿的长方法检查工具会直接报错并倒逼 AI 自动进行 CMP 重构直至达标。这就是 Harness Engineering 的精髓发现问题不要只修补结果要通过优化“挽具Harness”来闭环解决它。虽然我们可以设定重重规则但现阶段我们仍需扮演好“导师”的角色。积极 Review确保 AI 的每一次拆分和抽象都符合人类的架构品味。 总而言之你要做的是工厂的设计师而不是被工厂吞噬的零件。3.3 架构治理拒绝“软性祈求”拥抱“物理拦截”OpenAI 的 Harness Engineering 实践中有一个振聋发聩的观点架构约束不靠 Prompt靠 Linter。很多开发者试图通过写一长串 Prompt 来规约 AI“请注意模块 A 绝对不能调用模块 B。” 这种做法在实战中往往极其脆弱原因有二注意力稀释Attention Dilution随着任务复杂度的爆炸Prompt 会变得臃肿不堪。Agent 在处理核心逻辑时往往会“选择性忽略”这些边缘化的文字约束。软约束 vs 硬拦截Prompt 只是建议而 Linter 是物理法则。当 Agent 违反架构规则时Linter 的直接报错是一种“硬碰撞”。Agent 在面对报错时会由于“失败驱动”而被迫进入自修复路径直到代码完全符合规则。这种“报错-修正”的闭环比任何苦口婆心的 Prompt 都有效得多。实践案例用 ArchUnit “硬化” COLA 架构以本项目为例我们要捍卫 COLA 四层架构的纯净性确保Domain 层是绝对的核心不向 Infrastructure 或 App 层产生任何逆向依赖。我们没有在 Prompt 里反复唠叨而是直接编写了一份 ArchUnit 测试用例。这份代码就是我们架在代码仓上的“高压线”class ColaArchitectureTest { ArchTest static final ArchRule domain_should_not_depend_on_other_layers noClasses() .that().resideInAPackage(..domain..) .should().dependOnClassesThat() .resideInAnyPackage(..adapter.., ..app.., ..infrastructure..) .because(Domain layer should be the core and not depend on other layers);}这种机械硬约束的力量在于Agent 无论如何挣扎只要代码不达标Pipeline 就无法通过。同样对于方法长度超过 30 行、圈复杂度过高等质量红线我们全部将其硬化为 CodeCheck 的 Linter 规则。在 Harness Engineering 的世界里我们不相信 Agent 的“自觉”我们只相信制度化的“拦截”。 这种从“请按规则写”到“不按规则写就报错”的范式转变才是让 AI 研发从 Vibe Coding 走向精密工程的必经之路。迭代阵痛当“真理”遭遇变化在 AI 的精准辅助下我们确实消解了大量不确定性但需求变更这一“工程宿命”依然如期而至。在本项目的“租户平面创建”阶段底层逻辑发生了漂移BGP 配置改为在创建 VRF 时预置无需在平面创建时二次执行。修复这处变更在代码层面只需删除一行代码// 步骤6在核心交换机上创建租户BGP配置createTenantBgpConfigOnCoreSwitches( );然而这一行代码的删除却瞬间让之前的create-tenant-plane文档沦为刻舟求剑的废纸。AI 并不能豁免人类数十年来的工程宿命文档落后于代码是软件热力学第二定律式的必然。这正是我质疑 SDD规格驱动开发核心逻辑的根源。SDD 宣称“文档即真理代码是副产品”但在复杂的工程演进面前这不过是一个脆弱且优雅的幻觉。SDD 在初期确实能为 AI 提供结构化的导航但若据此宣称“自然语言编程时代已至”无异于指着一张精美的地图说我们已经征服了群山。记住代码从未骗人而文档时刻在撒谎。4.1 捍卫代码的 SSOT 权在 Harness Engineering 的体系中我始终坚持代码才是唯一的 SSOTSingle Source Of Truth单事实来源。如上图所示Spec 与 Code 的关系必须被重新定义Spec 只是辅助而非主导是阶段性的过程而非终极的目的。 针对不同场景我认为应采取灵活的Spec策略善用 Spec初始化阶段在项目冷启动或涉及重大架构变更时结构化的 Spec 是对齐 AI 认知的最高效手段也是团队 Review MR 背景的最佳凭证。绕过 Spec修补阶段进入迭代中后期对于局部的逻辑微调应直接通过 Agent 的 Plan - Execute 模式操作代码仓。即在“Plan 模式”下与 AI 讨论设计在“Build 模式”下直接降维打击执行代码变更。丢弃 Spec维护阶段不要执着于维持 Spec 与代码的强一致性。Spec 只是中间产物太多的陈旧文档反而会稀释 AI 的注意力。 在必要时必须果断清除过期的文件。4.2 文档的“垃圾回收”机制OpenAI 在其 Harness 实践中也引入了Garbage Collection垃圾回收的概念定期清理过时的文档防止其对 Agent 产生误导。这与我倡导的“丢弃中间 Spec”思想不谋而合。让 AI 直接探索代码Code Exploration往往比让它在过时的文档堆里“考古”要高效得多。一个优秀的 Harness Engineer 应该明白你的目标是交付运行的软件而不是维护一堆自我感动的文档。代码审视消减 AI 释放的“认知债”在 Agentic 时代代码生成的边际成本已近乎为零。生产不再是瓶颈审查才是。面对动辄上万行的代码提交MR如何提升可审查性Code Reviewability已成为决定软件工程成败的命脉。理论上Harness Engineering 越精密代码质量就越高Review 的压力就越小。但现实是我们尚未进入“无需理解代码”的乌托邦。AI 产出的速度远超人类消化的速度这直接导致了“认知债”的激增。如果不加节制地接受 AI 生成的逻辑今天飞涨的研发效率明天就会变成无法维护的泥潭。因此在 AI 原生的 PDLC软件开发生命周期中我强烈建议将战略重心向 Code Review 倾斜AI Review利用更强的模型对“平庸模型”生成的逻辑进行初步扫描。Human Review Group Review不仅仅是查 Bug更是为了理解、重构与优化。我们要主动通过人为的干预去对冲 AI 快速生产带来的复杂性熵增。代码测试构建坚不可摧的“反馈结界”软件测试特别是自动化测试始终是软件产业中最高耸的堡垒。即便进入了 2026 年依然有大量的 QA 沉溺于低效的手工点选这种模式在 Agent 时代将彻底崩塌。这正是 OpenAI 工程师在 Harness Engineering实践 实践中发出的终极警告“我们当前最棘手的挑战集中在设计环境、反馈回路和控制系统方面。”6.1 实验室级反馈从 UT 到集成测试在本项目中我们的反馈闭环主要依托单元测试UT。但对于边缘云这种复杂系统UT 的覆盖深度显然不足以支撑起“结果可信”。我探索出了一套基于UT的微服务集成测试办法利用内存中间件In-memory DB/Kafka/Redis以及 WireMock 模拟周边服务依赖。这种方案的优势在于它能在不启动整套笨重环境的前提下将集成测试也纳入 Harness 的反馈环。AI 每一行代码的变动都能在秒级得到准生产环境的验证。6.2 真实战场端到端E2E的环境博弈真正的工程挑战在于端到端测试的环境构建如何用 Docker 编排真实的中间件如何利用 Chrome DevTools 模拟用户行为这是一个极其残酷的平衡游戏。如果你构建的环境过于沉重AI 的运行会变得极其耗时且易碎导致研发过程频繁“卡壳”原本预想的效率飞轮会瞬间卡死。作为 Harness Engineer我们的核心使命是为 AI 构建一套“可运行、高韧性”的执行结界。以一个前后端分离的项目为例E2E 测试横跨页面、前端服务器与后端微服务。经过反复试错和尝试我终于找到一个构建相对稳定的E2E测试环境的方法这里的重点是要解决服务器端口冲突问题。为了让Agent操作浏览器我们首先要在opencode中注册chrome-devtools-mcp工具。即我们需要在~\.config\opencode\opencode.jsonc中添加以下信息mcp: { chrome-devtools: { type: local, command: [npx, -y, chrome-devtools-mcplatest] } }为了实现环境自愈我们在AGENTS.md中硬化了如下检测与拉起规约### E2E Test Runtime Guard (环境自愈守则)0. **存活与冲突校验** 禁止盲目启动。首先利用 netstat -ano | findstr LISTENING 精准探测后端(8080)与前端(3000)端口。 *若端口被无关进程占用后端需要销毁进程重新拉起前端可以保持不变*1. **后端防御性启动** 若 8080 端口离线触发冷启动序列。一次性拉起 powershell -Command Start-Process cmd -ArgumentList /k cd crm-backend mvn spring-boot:run -Dserver.port8080 -Dmaven.wagon.http.ssl.insecuretrue2. **前端动态挂载** 若 3000 端口离线自动进入前端开发目录执行热更新模式 powershell -Command Start-Process cmd -ArgumentList /k cd crm-frontend npm run dev3. **浏览器自动化执行** 在确认双端“心跳”正常后等待7秒方可驱动 Chrome DevTools 协议开启无头浏览器进行全链路回归。这套规约的意义在于它把原本需要人类手工排查的“环境玄学”转化为了 Agent 可以理解并执行的标准操作程序SOP。当 Agent 能够自主处理端口占用、依赖下载失败、服务拉起超时等工程杂讯时它才真正具备了在无人值守状态下大规模交付高质量代码的能力。6.3 成本平衡从“每改必测全量”到“按需召唤”然而现实是骨感的运行一次完整的 E2E 测试极其昂贵算力与时间成本。我们必须在“测试全面性”与“测试反馈速度”之间找到那个微妙的黄金分割点。我不希望 AI 的每一次微小改动都触发沉重的 E2E 流程这会稀释开发的专注度。更合理的工程实践是将环境规约封装为“可召唤的指令”。我们将上述逻辑抽象为命令下沉至.opencode/commands/e2e-test.md。这样开发者或 Agent 只有在关键里程碑节点通过键入\e2e-test才能激活这套重型武器。自动化环境构建与韧性测试是软件工程最后的“无人区”。 在这里没有现成的地图。你能否在复杂的分布式环境下为 Agent 维持一个稳定、快速、可重复的反馈闭环是衡量你是否真正具备“驾驭 AI 能力”的试金石。结语从“代码手艺人”到“软件工厂设计师”通过这场边缘云项目的实战洗礼我们清晰地看到Harness Engineering 绝非又一个转瞬即逝的黑话而是一场正在发生的软件生产力革命。在这个范式下OpenCode、OpenSpec 不再是单纯的辅助工具而是构筑新一代软件工程边界的基石。它们正将软件开发从“作坊式的手工打磨”推向“工业化的精密制造”。然而驾驭这股力量并非一蹴而就。回顾这段实战经历我们沉淀下了几条关乎成败的硬核经验拒绝“黑盒”锚定过程通过结构化的 OpenSpec 规约和颗粒度极细的 tasks.md我们将 AI 的产出强行锁死在预设轨道上。只有过程可控效率才有意义。以测试作为“逻辑准星”无论是 UT 还是复杂的集成测试它们不再仅仅是质量守门员而是整个反馈闭环的核心。代码的公信力应由自动化的数学逻辑背书而非人类的疲劳肉眼。构建自进化闭环发现 AI 的偷懒或偏差后不要只满足于修补代码。真正的 Harness Engineer 会将教训提炼为 Linter 规则或架构约束。这种“发现即闭环”的模式是飞轮转起来的动力源。警惕“认知债”严守 Review 阵地AI 释放了生产力也制造了认知负担。我们必须将战略重心向 Code Review 倾斜通过 AI 与人类的多重审视消减快速生产带来的复杂度熵增。捍卫代码的SSOT地位Spec 是地图Code 是领土。无论 SDD 的理念多么迷人我们必须时刻保持清醒代码从未骗人而文档时刻在撒谎。 保持代码的纯净与可维护性永远优于维护堆积如山的文档。合理的上下文管理在Context Engineering文中我们已经知道过大的Context会导致Context Rot问题《OpenAI Harness Engineering 实践》提到的让AGENTS.md成为简短的指南使用SubAgent渐进式披露更多内容同时保证主Agent的Clean将是一个不错的方案。Harness Engineering 的崛起标志着软件工程正在经历一场深刻的回归——回归到其“工程化”的本质。罗马不是一天建成的不要期望在一开始就能构建出一个功能强大完整的Harness每个项目的环境都不一样好的Harness Engineering都是迭代生长出来的。我们只有不断地调整、优化feedforward和feedback才能构建出强大的Harness。它不再寄希望于某个开发者当天的“Vibe感觉”或灵光现而是建立在一套可复制、可观测、可演进的精密控制系统之上。虽然“环境构建难、测试反馈慢”这些老掉牙的幽灵依然游荡但进化的方向已不可逆转。未来别再做一个单纯的“代码手艺人”去为 AI 构建那套足够精密的“挽具”吧。当你的 Harness 足够强大时澎湃的 AI 算力才会真正化作你手中无坚不摧的生产力。正如 OpenAI 团队所言一旦控制飞轮旋转起来其杠杆率将彻底重塑软件行业的格局。学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%免费】

相关文章:

Harness Engineering实践,如何驾驭AI这匹野马

随着 Harness Engineering(驾驭工程) 这个词开始在 2026 年频繁刷屏,很多人的第一反应恐怕又是:“看,又一个试图收割智商税的黑话(Jargon)出现了。” 的确,教科书里的 Software Engi…...

利益相关者中的期望管理与沟通协调

利益相关者管理中的期望与沟通艺术 在项目或组织运营中,利益相关者的期望管理与沟通协调是成功的关键。无论是客户、员工、供应商还是政府机构,他们的需求和预期直接影响项目的推进与成果。若缺乏有效管理,可能导致资源浪费、目标偏离甚至冲…...

升级 IntelliJ IDEA 编辑器到2026.1

提示升级。提示插件升级。右下角提示升级下载信息。遇到安装后提示试用期的问题;私信。...

Jmeter实战:如何用正则表达式提取登录cookie并跨线程组共享(附完整配置截图)

Jmeter实战:正则表达式提取登录Cookie与跨线程组共享的深度解析 在接口自动化测试中,Cookie管理一直是工程师们需要面对的典型挑战。想象这样一个场景:你需要测试一个电商平台的购物流程,从登录到浏览商品再到下单支付&#xff0c…...

MCP + Function Calling:让模型自主驱动工具链完成多步推理

标签:Java MCP Function Calling ReAct j-langchain ToolCall Agent 前置阅读:Java 实现 ReAct Agent:工具调用与推理循环 → Java Agent 集成 MCP 工具协议:让 AI 真正驱动企业系统 适合人群:已了解 MCP 基础用法&…...

手把手教你用pip download和--platform参数,提前备好Linux服务器离线Python环境

手把手教你用pip download和--platform参数,提前备好Linux服务器离线Python环境 在Linux服务器上部署Python应用时,最让人头疼的莫过于服务器无法访问外网。想象一下,当你兴冲冲地准备部署一个精心开发的应用,却因为依赖包无法下载…...

Agenda嵌入式调度库:抗溢出、协作式Arduino任务管理方案

1. Agenda调度库概述Agenda是一个专为Arduino平台设计的轻量级、非中断驱动型任务调度库,其核心目标是提供一种抗溢出(overflow-proof)、高可靠性且资源可配置的时间管理方案。该库由Giovanni Blu Mitolo于2013年开发,最初服务于高…...

守护数字隐私:Red Button 网络轨迹清理与数字指纹保护完全指南

在当今数字化时代,隐私保护已经成为每个人都需要关注的重要话题。我们在使用电脑和网络时,会留下大量的活动轨迹和数字痕迹。这些痕迹如果被不法分子获取,可能会导致隐私泄露、身份盗用等严重后果。 Red Button 作为一款功能全面的系统工具&…...

Neeshck-Z-lmage_LYX_v2企业应用:LoRA权重数字签名与版本溯源机制

Neeshck-Z-lmage_LYX_v2企业应用:LoRA权重数字签名与版本溯源机制 1. 引言:从工具到系统,企业级应用的新挑战 你可能已经体验过Neeshck-Z-lmage_LYX_v2这个轻量化绘画工具。它确实很方便——基于Z-Image底座模型,支持动态切换Lo…...

ANSYS APDL增材制造与焊接仿真专题:温度场、应力场及残余应力分析实例详解

ANSYS仿真焊接—切割—激光熔覆仿真、温度场、应力场、热应力、残余应力仿真 3D打印,增材制造,附带完整的APDL命令流代码与讲易与实例赠送apdl命令参考手册,多本焊接相关pdf版书籍适合本科生写毕设论文,或者研究生初学APDL增材制造…...

QT桌面应用开发:构建本地化的StructBERT文本查重客户端

QT桌面应用开发:构建本地化的StructBERT文本查重客户端 最近在整理一些文档和报告时,发现了一个挺头疼的问题:不同时期写的材料,或者不同同事提交的内容,经常会有一些段落或句子高度相似。手动去比对,不仅…...

ComfyUI工作流分享:一键生成社交媒体配图与头像壁纸

ComfyUI工作流分享:一键生成社交媒体配图与头像壁纸 1. ComfyUI简介与核心优势 ComfyUI是一款基于节点式工作流的AI图像生成工具,它通过可视化连接不同功能模块,让用户可以灵活定制图像生成流程。与传统的WebUI界面相比,ComfyUI…...

深信服aES升级后,别忘了检查这些客户端与规则库状态(从3.7.12升级到6.0.2R1实战复盘)

深信服aES 6.0.2R1升级后全维度健康检查指南 从EDR 3.7.12跨越到aES 6.0.2R1的升级过程只是开始,真正的挑战在于确保新系统所有组件无缝衔接。我曾亲历三次不同规模企业的升级项目,发现约40%的问题会在升级后48小时内暴露。这份清单将带您系统排查那些容…...

操作系统面试必问:FCFS、SJF、HRRN调度算法到底怎么算?一个例子讲透

操作系统面试必问:FCFS、SJF、HRRN调度算法实战解析 在计算机操作系统的面试中,进程调度算法几乎是必考的核心知识点。无论是校招笔试还是技术面谈,面试官都喜欢用"给定一组进程的到达时间和服务时间,请计算不同调度算法下的…...

科技向善:我们可以用技术为社会做些什么?

科技向善:我们可以用技术为社会做些什么? 在数字化浪潮席卷全球的今天,科技已不仅仅是提升效率的工具,更成为推动社会进步的重要力量。从人工智能到大数据,从区块链到物联网,技术的快速发展为人类生活带来…...

【Java Loom响应式转型终极指南】:20年架构师亲授3大性能跃迁关键点,错过再等5年?

第一章:Java Loom响应式转型的底层逻辑与时代必然性在高并发、低延迟、资源敏感型服务日益成为云原生基础设施标配的今天,Java传统线程模型正面临根本性挑战。每个 OS 线程默认占用 1MB 栈空间,且受限于内核调度粒度与上下文切换开销&#xf…...

PowerToys终极指南:5个技巧解决Windows效率工具常见问题

PowerToys终极指南:5个技巧解决Windows效率工具常见问题 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerTo…...

AgentCPM研报助手效果实测:生成高质量行业趋势分析

AgentCPM研报助手效果实测:生成高质量行业趋势分析 1. 引言:当AI遇见专业研报写作 在金融投资、市场研究和学术分析领域,撰写深度研究报告一直是一项耗时费力的工作。传统流程需要分析师花费数天时间收集数据、整理资料、分析趋势&#xff…...

StarUML 6.0.1 永久授权与汉化一体化解决方案(含自动补丁工具)

1. StarUML 6.0.1 永久授权与汉化方案概述 StarUML作为一款轻量级的UML建模工具,在6.0.1版本中引入了更完善的类型支持和性能优化。但对于国内用户而言,官方高昂的订阅费用和纯英文界面始终是两大使用门槛。本文将介绍一种通过Python脚本实现的一体化解决…...

如何通过智能数据分析实现工业级PID参数优化策略?

如何通过智能数据分析实现工业级PID参数优化策略? 【免费下载链接】PIDtoolbox PIDtoolbox is a set of graphical tools for analyzing blackbox log data 项目地址: https://gitcode.com/gh_mirrors/pi/PIDtoolbox 面对工业控制系统中PID参数整定的复杂挑战…...

3分钟从文档到演示文稿:PPTAgent智能生成完整指南

3分钟从文档到演示文稿:PPTAgent智能生成完整指南 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否还在为制作演示文稿而烦恼?PPTAgent是一款…...

CVPR 2024最佳学生论文Mip-Splatting:手把手教你从零配置环境到跑通第一个3D场景

CVPR 2024最佳学生论文Mip-Splatting:从零配置环境到跑通第一个3D场景 当3D Gaussian Splatting遇上抗锯齿技术,CVPR 2024最佳学生论文Mip-Splatting为实时神经渲染领域带来了突破性进展。不同于传统方法在视角变化时出现的走样问题,这项技术…...

黑苹果触摸板终极配置指南:从卡顿到流畅的完整解决方案

黑苹果触摸板终极配置指南:从卡顿到流畅的完整解决方案 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 还在为黑苹果触摸板的生硬操作而烦恼吗…...

Python爬虫新手必看:Image-Downloader搭配ChromeDriver的完整配置指南(附常见报错解决)

Python爬虫实战:Image-Downloader与ChromeDriver的深度配置手册 当你第一次尝试用Python爬取网页图片时,是否曾被各种环境配置问题搞得焦头烂额?作为过来人,我完全理解那种看着满屏报错信息却无从下手的挫败感。本文将带你深入理解…...

如何永久保存微信聊天记录?WeChatMsg数据自主管理完整指南

如何永久保存微信聊天记录?WeChatMsg数据自主管理完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...

高精度智慧校园安防场景图像识别 校园安全预警系统 校园安防设备智能化识别 深度学习YOLO与校园数字化智能化应用第10393期

数据集 README一、数据集核心信息项目详情类别数量及中文名称9 类(大型构件、门禁、应急门、一键报警、防撞设施、通讯工具、入侵检测、金属探测器、电视)数据总量7000 条数据集格式YOLO 格式最重要应用价值1. 支撑校园安防场景下的目标检测算法训练&…...

3个步骤实现Zotero笔记与Obsidian双向同步:告别手动复制粘贴

3个步骤实现Zotero笔记与Obsidian双向同步:告别手动复制粘贴 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes Zotero-Better-Notes的Markdown双向…...

Lumafly:空洞骑士模组管理器的完整使用指南与技巧分享

Lumafly:空洞骑士模组管理器的完整使用指南与技巧分享 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly Lumafly是一款专为《空洞骑士》玩家设计的跨平…...

Anthropic超级模型Mythos引发全球金融安全震荡

Mythos模型引发2万亿美元SaaS市场浩劫短短一年内,SaaS市场遭遇了一场前所未有的浩劫,近2万亿美元的财富凭空蒸发。这一切源于Anthropic发布的Claude Opus和一系列Agent工具,直接引发了企业软件股(SaaS)的暴跌。长期以来…...

Fish Speech 1.5实操手册:API返回JSON结构解析与错误码处理最佳实践

Fish Speech 1.5实操手册:API返回JSON结构解析与错误码处理最佳实践 1. 引言:为什么需要关注API返回结构? 当你第一次调用Fish Speech 1.5的API时,可能会遇到这样的困惑:返回的JSON数据里各个字段代表什么&#xff1…...