Agent Harness 工程化实战:为什么生产瓶颈不在模型,而在线束层
Agent Harness 工程化实战:为什么生产瓶颈不在模型,而在线束层很多团队做 Agent 时,第一反应是换模型、补 Prompt、加 few-shot。原型阶段这样做通常有效,因为问题还停留在“答得对不对”。但一旦进入真实业务,问题很快变成另一类:一次任务会跨越十几步甚至几十步中间会调用数据库、浏览器、Shell、检索、审批流工具返回的数据量远大于模型真正需要看到的内容任务会超时、重试、被人工中断,也会在半路恢复成本、安全、审计开始和功能正确性同样重要这时真正限制系统的,不再是模型本身,而是包裹模型的执行系统。论文把这层称为Harness。如果借用后端工程师熟悉的类比,模型更像 CPU,Harness 更像操作系统和运行时:负责调度、隔离、I/O、状态恢复、权限边界和观测。这篇文章不打算把 ETCLOVG 七层重新念一遍,而是回答三个更接近上线前决策的问题:为什么很多 Agent 项目在 Demo 阶段顺利,到了生产环境却不稳定?ETCLOVG 七层里,哪些层会最先成为故障来源,应该按什么顺序补齐?如果你现在只有一个能跑起来的 Agent,什么时候该继续堆 Prompt,什么时候该投入 Harness 工程?一、真正把 Agent 拖垮的,通常不是推理能力先看一个典型场景。某类风控 Agent 在测试环境里表现很好:能读取工单、调用风控规则、查询交易明细,再给出处理建议。上线后却反复出现三种问题:工具返回的 JSON 太长,下一轮模型调用直接撞上上下文上限Agent 为了“确认结果”,反复读写同一批文件,形成失控循环某些高权限工具没有审批闸门,模型一旦误判就会执行危险操作如果只盯着模型,很容易得出错误结论:是不是模型不够聪明?是不是 Prompt 不够清楚?但这类事故往往有一个共同点:失败发生在模型之外。模型没有决定工具返回多少数据,也没有决定是否做上下文裁剪;模型不会天然拥有超时、重试、熔断和审批机制;模型更不会自己提供沙箱隔离和审计日志。它只是在 Harness 给定的边界里做推理。这也是论文提出Binding-Constraint Thesis的原因:在真实任务里,系统表现首先受限于“绑定层”和“约束层”,而不是只受限于模型参数规模。对工程团队来说,这个判断有两个直接含义:如果任务还是单轮问答,Harness 可以很薄如果任务已经进入“多步执行 + 外部副作用”,Harness 就不再是配套设施,而是主系统很多项目的问题不在于“还没上最强模型”,而在于“把需要系统工程解决的问题,交给了模型兜底”。二、从能回答问题,到能稳定做事,中间隔着一层 Harness论文把 Agent 工程的演进拆成了三个阶段,这个划分很有价值,因为它解释了为什么很多团队会在第二阶段和第三阶段之间卡住。Prompt Engineering - Context Engineering - Harness Engineering 问什么 让模型看到什么 让系统安全、稳定、可恢复地跑完这三个阶段并不是互斥关系,而是关注重点发生了变化。1. Prompt Engineering 解决的是“表达问题”这个阶段最关心的是:任务描述是否清楚输出格式是否稳定few-shot 是否覆盖了常见模式它适合单轮任务,也适合副作用很弱的轻量 Agent。问题在于,它默认执行环境是可靠的、工具是可控的、上下文是足够的,而生产环境恰恰不是这样。2. Context Engineering 解决的是“信息选择问题”当任务进入多轮交互后,团队会开始做:RAG 检索会话记忆历史摘要上下文裁剪这一步已经比 Prompt 工程更接近生产,但它仍然主要在解决“模型该看到什么”。如果系统需要长时间运行、调用高风险工具、支持恢复和审计,那么只做好上下文管理还不够。3. Harness Engineering 解决的是“执行系统问题”Harness 工程真正关心的是:任务在哪跑,出错后如何停工具怎么被约束、限流、路由和审批状态怎么持久化,进程挂了如何续跑任务为什么失败,成本花在哪里,谁对外部副作用负责这里需要区分一个常见误判:Context Engineering 仍然以“模型输入”为中心,Harness Engineering 则以“任务生命周期”为中心。只要任务会跨多步执行,并且工具调用会对外部世界产生副作用,系统就已经进入 Harness 问题域。三、ETCLOVG 不是名词表,而是一张故障来源地图论文提出的 ETCLOVG 七层分别是:E:Execution Environment,执行环境与沙箱T:Tool Interface Protocol,工具接口与协议C:Context Memory,上下文与记忆L:Lifecycle Orchestration,生命周期与编排O:Observability,可观测性V:Verification Evaluation,验证与评测G:Governance,治理与安全如果把它当成“分层架构图”,读完容易记不住;但如果把它当成“生产事故会从哪里冒出来的地图”,就容易理解得多。1. 最先出问题的通常是 E、T、C、L这四层直接决定任务能不能跑完。层最常见故障本质问题E命令失控、环境污染、权限越界没有隔离边界T工具超时、参数失真、错误重试没有稳定协议和调用约束C上下文爆炸、目标漂移、重要信息丢失没有做状态压缩和预算分配L任务半路失败、无法恢复、无限循环没有显式状态机和编排机制很多 Agent 原型可以“看起来能跑”,就是因为这四层暂时没有被压力打穿;但只要任务长度、工具数量、租户数量、权限等级任意一个上来,问题就会集中暴露。2. 真正拉开生产差距的往往是 O、V、G这三层不一定最早暴雷,但它们决定系统能不能长期运营。没有O,你知道任务失败了,却不知道到底卡在模型、工具、上下文还是沙箱没有V,你能看到输出,但不知道这次“完成任务”到底是正确完成还是侥幸完成没有G,系统规模越大,风险放大得越快,最后审批、审计、配额、合规都会变成补丁开源项目常常在 E/T/C/L 层做得很亮眼,因为这些层最容易体现“功能跑通”;而企业在真实环境里最终比拼的,往往是 O/V/G 能否让系统可控。四、生产环境里,七层不是平均建设,而是按故障链路补齐很多文章介绍 ETCLOVG 时,会按字母顺序一层层讲。但真实落地通常不是这样。团队不会同时建设七层,而是沿着“最先出事故的路径”补齐。更常见的演进顺序是:先补 E/T/C/L,确保任务可执行、可恢复 再补 O,确保问题可定位 再补 V/G,确保结果可信、边界可控下面按这个顺序看。E:先解决“Agent 到底在哪跑”执行环境最容易被低估,因为 Demo 通常只有一个进程、几个工具、一个测试目录。但生产环境一旦让 Agent 读写文件、执行命令、打开浏览器、访问网络,运行环境本身就成了业务边界的一部分。这里真正要做的不是选一个“最强沙箱”,而是回答两个问题:这个任务允许多大的副作用?为了这点副作用,能接受多高的启动延迟和运维成本?典型隔离方案的权衡大致如下:方案隔离强度启动开销更适合什么任务子进程 / WASM低到中很低纯计算、轻量脚本、无外网副作用Docker 容器中中标准工具链、代码修改、文件操作Firecracker microVM高中多租户、高权限工具、隔离要求高完整桌面 VM很高高浏览器自动化、GUI 测试、桌面软件控制这一步最容易犯的错是一步到位上最重的隔离。对低风险任务,这往往得不偿失。相反,更可行的做法是把任务按风险分级,再映射到不同运行时。下面这个配置示例展示的不是“万能答案”,而是一种生产上常见的思路:先把资源、回收和网络出口显式化。apiVersion:agent.harness.io/v1kind:SandboxPoolspec:runtime:firecrackerminIdle:10maxActive:200resources:cpu:"1"memory:"512Mi"disk:"2Gi"lifecycle:ttlSecondsAfterUsed:300resetStrategy:snapshotsecurity:allowedSyscalls:["read","write","open","close","exit"]networkPolicy:egress:["*.api.openai.com:443","internal-tools:443"]这个配置真正重要的不是firecracker这个单词,而是三件事:有预热池,避免每一步都冷启动有重置策略,避免上一个任务污染下一个任务有出口策略,避免“默认能访问所有东西”如果这三件事没有明确下来,沙箱本身再强,系统也不算真正可控。T:工具协议不是“能调通”就结束Agent 最大的工程复杂度,常常不在模型调用,而在工具调用。工具层容易出现四类问题:模型生成的参数不稳定,导致调用失败单个工具过慢,拖垮整条任务链路高价值工具没有限流和熔断,失败时形成雪崩工具返回内容过长,反过来污染上下文所以工具层真正需要的是“协议化”和“约束化”,而不是给模型多暴露几个 function schema。{"name":"execute_sql","version":"2.1.0","protocol":"mcp","endpoint":"grpc://sql-executor:9090","rateLimit":{"rpm":100,"concurrency":5},"timeout":"30s","schema":{"type":"object","properties":{"query":{"type":"string","maxLength":2000},"database":{"type":"string","enum":["prod_ro","staging"]}},"required":[

相关新闻

全息抗熵:复杂性科学的形式化宪理

全息抗熵:复杂性科学的形式化宪理

⚖️ Copyright © 2026 [孟凡淳/Grit Meng]. Licensed under CC BY-NC-ND 4.0. 导言 工业文明把世界拆成机器,数字文明要把世界种成有机体。 工业文明的底层逻辑是机械还原论——以为把汽车拆成零件、把工厂拆成车间、把企业拆成KPI,就能靠局部优化…

2026/7/20 20:34:33阅读更多 →
Cute Chess GUI深度解析:打造个性化国际象棋对战体验

Cute Chess GUI深度解析:打造个性化国际象棋对战体验

Cute Chess GUI深度解析:打造个性化国际象棋对战体验 【免费下载链接】cutechess Cute Chess is a graphical user interface, command-line interface and a library for playing chess. 项目地址: https://gitcode.com/gh_mirrors/cu/cutechess Cute Chess…

2026/7/21 21:59:16阅读更多 →
Fort Firewall:Windows平台上的开源网络访问控制解决方案

Fort Firewall:Windows平台上的开源网络访问控制解决方案

Fort Firewall:Windows平台上的开源网络访问控制解决方案 【免费下载链接】fort Fort Firewall for Windows 项目地址: https://gitcode.com/GitHub_Trending/fo/fort Fort Firewall是一款专为Windows 7及以上系统设计的开源防火墙软件,它通过内核…

2026/7/20 20:34:33阅读更多 →
信息安全系统访问控制

信息安全系统访问控制

文章目录 一、访问控制基本概念(必背) 1. 定义 2. 三元组(主体、客体、操作) 3. 核心目标 二、四大访问控制模型(重中之重,必考对比) 1. DAC 自主访问控制(Discretionary) 2. MAC 强制访问控制(Mandatory) 3. RBAC 基于角色的访问控制(Role-Based) 4. ABAC 基于属…

2026/7/21 23:00:50阅读更多 →
主权校验码技术解析:从加密算法到跨境应用

主权校验码技术解析:从加密算法到跨境应用

1. 主权校验码的技术本质与历史沿革主权校验码(Sovereign Verification Code)本质上是一种基于非对称加密算法的数字签名体系。这套系统最早可追溯到19世纪末的电报加密技术,当时各国使领馆就已开始使用类似机制验证外交电文的真实性。现代版…

2026/7/21 23:00:50阅读更多 →
国产化 ECU 刷写上位机(CAN FD)开发与实操指南

国产化 ECU 刷写上位机(CAN FD)开发与实操指南

一、前言 在汽车电子领域,ECU(电子控制单元)固件刷写是整车研发、生产及售后维护的核心环节。长期以来,行业内多依赖海外商用工具(如 CANoe、TS Master)完成刷写工作,存在授权成本高、定制化难…

2026/7/21 23:00:50阅读更多 →
异构联盟链跨链互通的工程实现:从中继架构到接入连接器

异构联盟链跨链互通的工程实现:从中继架构到接入连接器

多链并存已成联盟链落地的常态:政务链、金融链、行业链各自运行,跨链互通因此成为数据要素流通绕不开的工程问题。本文从工程视角梳理异构跨链的主流架构、验证方法与演进方向。三类跨链操作与异构难点。跨链要解决的不只是资产互换,工程上更…

2026/7/21 23:00:50阅读更多 →
RTX 5060Ti显卡评测:8GB显存与双风扇设计的性能平衡

RTX 5060Ti显卡评测:8GB显存与双风扇设计的性能平衡

1. 显卡定位与市场背景分析RTX 5060Ti作为NVIDIA 50系的中端主力型号,其8GB显存配置在当前2K分辨率游戏环境下引发了不少讨论。从实际应用场景来看,这个显存容量确实处于一个微妙的平衡点——对于主流电竞游戏(如《CS2》《Valorant》&#xf…

2026/7/21 23:00:50阅读更多 →
Node.js安全扫描Web界面:从可视化结果到高效修复的实战指南

Node.js安全扫描Web界面:从可视化结果到高效修复的实战指南

1. 项目概述:为什么需要一个清晰的Web界面来解读Node.js安全扫描结果?如果你和我一样,长期在Node.js项目里摸爬滚打,那你肯定对安全扫描工具不陌生。nodejsscan作为一款专门针对Node.js和JavaScript生态的静态应用安全测试工具&am…

2026/7/21 22:58:50阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →