news 2026/10/23 2:57:32

Agent Harness 深度解析:模型决定下限,骨架决定上限

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent Harness 深度解析:模型决定下限,骨架决定上限

这是「近五年 AI 技术演进」系列深挖的最后一篇,第十三篇。前十二篇各拆了一个零件——提示词、检索、工具、协议、编排、技能、规矩、记忆、沙箱。这一篇不再拆新零件,而是把它们装回去:为什么这些零件必须长在一起,才叫一个 Agent。全文约 6000 字,含三张表(模块全景、五年时间线、学习路径)、一段最小 Harness 骨架代码和五张原创信息图。

一、先纠正一个说法:模型不是 Agent

同一个模型,在两个产品里表现得像两个东西。

在网页对话框里,你让它修 bug,它给你一段看起来对的代码,说「请替换进去」。在终端里用同一个模型,它能自己找文件、改三处、跑测试、看报错、再改一遍。

模型是同一个,差别在模型外面那一圈东西。

2026 年 2 月,这圈东西终于有了名字。2 月 5 日,HashiCorp 创始人 Mitchell Hashimoto 写了一篇《My AI Adoption Journey》,里面有句话被反复引用:任何时候你发现 agent 犯了一个错,就花时间工程化一个方案,让它永远不再犯这个错。他把这个习惯叫 engineer the harness。六天后,OpenAI 发布了一份 Codex 团队的报告,标题直接叫《Harness engineering》:三个工程师、五个月、约一百万行代码、约 1500 个 PR,没有一行是手写的。他们的工作全部变成了设计环境。两个月内,这个词从个人博客变成了行业黑话。

模型到底是什么

把一次调用写成伪代码,只有一行:

next_tokens = model(context_tokens) # 文本进,文本出,仅此而已

它没有手——不能执行任何东西;没有眼睛——看不到执行结果;没有记忆——每次调用都从零开始(详见本系列第 11 篇);没有时钟——不知道自己已经跑了四十分钟;没有边界——不知道什么事不能做;也没有钱包——不知道这一轮花了多少钱。

做一个思想实验:把目前最强的模型放进一个只有输入框的窗口。它能把「这个 bug 该怎么修」讲得比任何资深工程师都清楚。

然后 bug 还在那里。

说对和做成之间,隔着一整个工程。这个工程就是 Harness:包裹模型的运行循环、工具、记忆、上下文、环境、护栏、协作和知识注入。一句话定位——它是给推理能力配的那副身体。

三个词,别再混着用

2026 年之后,讨论 agent 至少要分清三层:

词是什么类比换一个的代价
模型权重,文本进文本出发动机改一个参数
框架(LangGraph、CrewAI)造 harness 的零件箱零件目录改一批代码
Harness装好、调好、能上路跑的整套系统整车重做工程

再往下切一刀,还有个常用区分:scaffold 是开场前搭好的(系统提示、工具定义、规则文件、仓库索引),harness 是每一步运行时做的(解析输出、派发工具、回填结果、压缩上下文、查权限、重试)。很多人争论「提示词重要还是工具重要」,其实是把这两层混在一起谈了——它们的失效方式完全不同:用错文件通常是 scaffold 的问题,第 30 轮忘了规则通常是 harness 的问题。

所以那个流行的公式要读准:Agent = Model + Harness。它的重点不是加法,是那句潜台词——模型不在 harness 里面。harness 是「除模型之外的一切」。

二、引擎与整车:为什么同一台发动机跑出不同成绩

把大模型想成发动机,很多事一下就通了。

马力是单步推理能力,排量是上下文窗口,油耗是 token 成本。参数漂亮,账面好看。

但发动机不能直接驱动车轮。它每分钟几千转地空转,中间必须过一个变速箱,把转速变成轮胎上能用的扭矩。模型也一样:它的输出是 token,不是动作。从 token 到「世界真的变了」,中间要过五道工序——解析意图、检查权限、执行、观察结果、回填上下文,然后回到模型再判断一次。

这套传动系统,就是运行循环。

再往下配:

  • 方向盘是工具选择。往哪打,取决于工具描述写得清不清楚——模型只能靠那几行字决定用不用你;
  • 刹车是护栏。危险操作要人点头、成本有上限、超时要掐断;
  • 底盘是沙箱与运行时。决定这车能在什么路上跑,也决定翻车时是人受伤还是车报废;
  • 仪表盘是可观测性。没有它,你只能靠猜;
  • 线束是上下文工程。把电送到该去的地方,送错了全车失灵。

三个推论,每个都能解释一批真实事故。

第一,换发动机不等于换整车。很多团队升级了模型,agent 依旧在第 12 步崩掉。因为崩的原因从来不是「不够聪明」,而是上下文太脏、工具返回值太吵、没有检查点。

第二,同一台发动机装在不同整车上,成绩能差好几倍。2026 年初 LangChain 团队公开过一个实验:同一个模型在 Terminal Bench 2.0 上得分 52.8%,排在前 30 之外。他们没换模型,只改了 harness——启动时先给一张目录地图,强制它对着任务说明自查而不是重读自己的代码,把推理预算多分给规划和验证、少分给实现,加了循环检测,提前告知验收方式。几周后 66.5%,进了前 5。13.7 个百分点,比大多数模型换代带来的提升还大。

第三,没有刹车的车不能上路。demo 和产品的分界线不是智力,是「最坏情况下会怎样」。

顺便说个词源。harness 的本义是马具——缰绳、马鞍、嚼子、马蹄铁。马具不让马更强,它让马的力量可用、可控、可停。这比「骨架」更狠:骨架是支撑,塌了散架;马具是驾驭,松了马会冲进人群。

三、七个模块,一个横切面

把 Harness 拆开,是七个模块加一个横切面。这张表建议存下来,它是整个系列的目录:

模块对应篇目解决的问题一句话实现
运行循环 Loop第 3、6 篇一次推理构不成一个任务while:思考、行动、观察,带终止条件
工具层 Tools + MCP第 3、4、5 篇模型碰不到外部世界结构化 schema,加上统一协议
记忆 Memory第 11 篇每轮都从零开始短期对话,工作状态,长期结论
上下文工程第 1、2、9、10、11 篇窗口有限,注意力会稀释预算分配,压缩,按需加载
执行环境 Sandbox第 12 篇代码有破坏力容器隔离,只读根,断网,限额
护栏 Guardrails第 4 篇它会做不该做的事权限分级,人工确认,输出校验,预算上限
编排 Orchestrator + A2A第 7、8 篇单 agent 撞上下文墙拆任务,上下文隔离,协议互通
知识注入第 2、9、10 篇不懂领域,不懂这个项目事实、方法、规矩,三种知识分开装

最后两行严格说是四样东西,按「协作」和「知识」归成两类。而上下文工程不在任何位置上——它在所有模块之间流动,所以叫横切面。

3.1 运行循环:整个 harness 的心脏

一句话:一个 while。四个动作反复做——装配上下文、模型推理、执行动作、观察回填。三个必须有的东西:终止条件(模型说完了、任务达成、步数用完)、预算(token、时间、钱)、检查点(每步存档,崩了能续)。

2023 年 AutoGPT 的失败不是想法错,是这三样一个都没有:它不知道什么时候该停,不知道自己花了多少,也不知道自己走到哪了(详见本系列第 3 篇)。后来 LangGraph 做的事情,本质就是把这个 while 和里面的 if 变成可画、可存、可恢复的图(第 6 篇)。

3.2 工具层:模型唯一能改变世界的通道

工具描述不是注释,是接口文档。模型只能靠 description 判断「什么时候用我、什么时候别用我」,所以写工具的 description 应该像写产品文案,而不是像写函数注释(第 4 篇)。

MCP 解决的是另一个问题:接十个系统要写十套适配器,接一百个要写一百套。它把 N×M 收敛成 N+M(第 5 篇)。一个判断标准:如果一个工具需要模型读三遍说明才会用,那不是模型笨,是工具设计错了。

3.3 记忆:三层容器,三条搬运规则

短期装原话,快满了就压缩;工作装状态,用代码显式读写,抗压缩抗崩溃;长期装结论,带作用域、带时间戳、按需召回(第 11 篇)。

从 harness 的视角看,记忆的难点不在「存」,在什么时候取、取多少。取多了稀释注意力,取少了重犯错误。所以记忆系统的质量不看存了多少条,看召回时的命中率。

3.4 上下文工程:横切在每一层之间

窗口是稀缺资源,按 token 计费,而且每一轮都要重付。给一个能落地的预算:系统提示加工具定义别超过 20%,历史对话和工具结果占 40%,检索与记忆召回占 20%,剩下 20% 留给输出和意外。

超了就要压缩。压缩不是把全文摘要一遍,是保留决策和结论,丢掉原始过程——「决定用方案 B,因为 A 在 CI 上会挂」这一句,比前面 3000 token 的讨论都值钱。

还有一条反直觉的规律:Lost in the Middle 那条 U 形曲线说明,塞在上下文中间的信息召回率最低(第 11 篇)。所以重要的东西要放头尾——开头是任务和规则,结尾是当前状态和下一步。Skill 的渐进式披露(第 9 篇)也是同一个道理:不是所有东西都该进上下文。

3.5 沙箱:决定爆炸半径

一旦模型能执行代码,它就拥有了破坏力(第 12 篇)。沙箱不是防模型变坏,是防「不可预测」。四档隔离、八项检查这里不重复,只强调一句:沙箱决定 blast radius。有沙箱,你可以让它放开跑;没沙箱,你只能让它什么都别碰。

3.6 护栏:能用代码拦住的,别用提示词劝

四个动作:

  • 权限分级:读、写、删、转账、发布,越危险,人介入越深;
  • 危险操作确认:不可逆的动作,让人点一下头;
  • 输出校验:schema、单测、lint、类型检查——用确定性的东西校验概率性的输出;
  • 成本上限:单任务 token、单用户日总额、最大循环次数。

再加两样常被忘的:超时防挂死,审计防说不清。

原则一句话:提示词是建议,代码是物理定律。你在提示里写十遍「不要删生产库」,不如在工具层把那个函数直接拿掉。

3.7 编排:单 agent 撞墙之后再拆

单 agent 迟早撞上四堵墙:上下文、工具数量、职责混杂、定位模糊(第 7 篇)。拆开以后,每个子 agent 只带自己那几份材料,token 能从十几万降到几万。

跨组织就靠 A2A:一张 AgentCard、一个 Task 状态机、一套 JSON-RPC 报文,给 agent 之间定了套 HTTP(第 8 篇)。它和 MCP 是一横一纵,不冲突。

但请记住顺序:能单 agent 解决就别拆,拆是成本不是成就。

3.8 知识注入:三种知识,三个容器

装错容器是最常见的浪费:

  • 事实(文档、制度、API 手册)→ RAG。检索得到就行(第 2 篇);
  • 方法(这类活该怎么干)→ Skill。检索得到但执行不了,就该用 Skill(第 9 篇);
  • 规矩(这个项目里怎么干)→ AGENTS.md。每个仓库一份,进版本库,可 review(第 10 篇)。

把方法塞进 RAG,你会得到一堆「说得对但做不对」的回答;把项目规矩塞进系统提示,你会得到每个项目复制一遍的噩梦。

四、把七个模块装进一百行

概念讲完,看代码。下面这段是能跑的最小骨架,七个模块都在里面:

# harness.py —— 最小可用 Agent Harness(约 100 行) import json, time from dataclasses import dataclass, field from typing import Callable # ---------- 护栏:权限分级与预算 ---------- LEVEL = {"read": 0, "write": 1, "danger": 2} # 0 自动,1 记日志,2 要人确认 @dataclass class Budget: max_steps: int = 30 max_tokens: int = 200_000 max_seconds: int = 600 used: int = 0 started: float = field(default_factory=time.time) def spend(self, n: int): self.used += n if self.used > self.max_tokens: raise RuntimeError("token 预算耗尽") if time.time() - self.started > self.max_seconds: raise RuntimeError("时间预算耗尽") def guard(tool, args) -> bool: """危险操作必须人来点头""" if LEVEL[tool.level] < LEVEL["danger"]: return True print(f"[需确认] {tool.name} {args}") return input("执行?(y/N) ").strip().lower() == "y" # ---------- 工具层:schema、执行、错误收敛 ---------- @dataclass class Tool: name: str desc: str # 写给模型看的,决定它什么时候用你 schema: dict level: str # read / write / danger run: Callable # 真正干活,跑在沙箱里 TOOLS = {t.name: t for t in [read_file, write_file, run_tests, shell]} # 实现从略 # ---------- 记忆:短期 / 工作 / 长期 ---------- class Memory: def __init__(self): self.messages = [] # 短期:原始对话 self.state = {} # 工作:显式状态,抗压缩 self.long_term = [] # 长期:结论,带 scope def checkpoint(self, path="run.json"): json.dump({"messages": self.messages[-20:], "state": self.state}, open(path, "w"), ensure_ascii=False) # 崩了能续 def recall(self, query, k=3): # 生产环境换成向量 + 关键词双路召回(第 11 篇) return [m for m in self.long_term if query in m["text"]][:k] # ---------- 上下文工程:按预算装配 ---------- def build_context(task, mem, tools): rules = open("AGENTS.md").read()[:4000] # 规矩放头部 tool_doc = "\n".join(f"- {t.name}: {t.desc}" for t in tools.values()) recalled = [{"role": "system", "content": f"相关记忆:{m['text']}"} for m in mem.recall(task)] # 长期记忆,按需 return [ {"role": "system", "content": f"{rules}\n\n可用工具:\n{tool_doc}"}, *recalled, *mem.messages[-12:], # 最近历史,靠尾部 {"role": "user", "content": task}, ] # ---------- 主循环:思考、行动、观察 ---------- def run(task, model): mem, budget, trace = Memory(), Budget(), [] for step in range(budget.max_steps): resp = model.chat(build_context(task, mem, TOOLS), tools=[t.schema for t in TOOLS.values()]) budget.spend(resp.usage.total_tokens) if not resp.tool_calls: # 终止:模型说完了 mem.long_term.append({"text": resp.content[:500], "scope": task}) break for call in resp.tool_calls: tool = TOOLS[call.name] if not guard(tool, call.args): # 护栏:人否决 mem.messages.append({"role": "tool", "content": "用户拒绝执行"}) continue try: result = tool.run(**call.args) # 沙箱里执行 except Exception as e: result = f"工具失败:{type(e).__name__}: {e}" # 失败也要回填 result = str(result)[:8000] # 截断,别撑爆窗口 trace.append({"step": step, "tool": call.name, "args": call.args, "result": result[:200]}) mem.messages.append({"role": "tool", "content": result}) mem.checkpoint() # 每步存档 else: trace.append({"step": "budget", "note": "步数用完,交还给人"}) print(json.dumps(trace, ensure_ascii=False, indent=2)) # 仪表盘 return mem.state

一百行里,最值钱的是四行:

  • if not resp.tool_calls—— 终止条件。没有它,就是 AutoGPT;
  • result[:8000]—— 截断。没有它,第 5 步一个ls -R就能撑爆窗口;
  • guard()—— 人审。没有它,就是删库那次事故;
  • mem.checkpoint()—— 可恢复。没有它,跑 40 分钟崩在第 39 步,全部重来。

其余部分都是在给这四行铺路。你手写过一遍,再看任何框架都知道它在哪一层加东西:LangGraph 给它加了图和持久化(第 6 篇),Claude Code 给它加了终端交互和权限 UI,云厂商把它做成了两次 API 调用。

五、核心论点:模型决定下限,Harness 决定上限

这句话值得拆开看,因为它解释了为什么「换个更强的模型」经常没用。

模型决定下限:单步能力。给它一段代码问「这里有什么问题」,能不能看出来——这是模型的事,harness 帮不上。

Harness 决定上限:能连续做多少步而不崩。

中间是一道乘法题。单步成功率 p,任务需要 n 步,端到端就是 p 的 n 次方:

  • p = 0.95,n = 20 → 36%
  • p = 0.99,n = 20 → 82%
  • p = 0.95,n = 50 → 7.7%

所以长任务不是「难一点」,是指数衰减。这也解释了那个老现象:demo 个个惊艳,产品个个难用——demo 是 3 步,产品是 50 步。

Harness 在这里有两个杠杆,而且都不需要换模型:

  1. 抬高 p:上下文干净、工具好用、规则明确。每样都能把 p 从 0.95 抬到 0.98;
  2. 让失败可恢复:重试、回滚、检查点、人审。p 没变,但一次失败不再等于任务失败。

前者把 36% 抬到 55%,后者让它变成「八成成功,两成停下来问人」。这个差别,就是能不能上线的差别。

三个具体的倍数效应,前面都拆过:工具描述重写,同一模型选错工具的概率显著下降(第 4 篇);上下文从 3 万压到 6 千,注意力不再被稀释(第 9、11 篇);开工先读 AGENTS.md,少三轮探索(第 10 篇)。每一件的投入都是一两天,收益却常超过一次模型升级。

但边界要说清,否则这个论点会变成万金油:

  • Harness 不能把能力不够的模型救成前沿模型。下限是硬约束,8B 就是 8B;
  • Harness 不能替代评测。没有 eval,改 harness 全靠感觉;有 eval,改一行提示都能验证;
  • 一句话:模型决定你能做多好,harness 决定你能不能稳定做到。

最后一层是资产视角,可能对团队最重要:模型是租的,harness 是自己造的。模型每 6 到 12 个月换一次,价格还在跌;换的时候,工具、规则、记忆、护栏绝大部分能留下。真正的护城河不是「我们用了哪个模型」,而是「我们这套环境,让任何模型进来都能干活」。

六、为什么模型越强,Harness 反而越重要

这是最反直觉的一节。直觉是:模型越来越聪明,外面那圈脚手架应该越来越薄才对。

方向没错——手写的「聪明编排」确实该变薄,2024 年那些精心设计的流程分支,2026 年的模型一句提示就能覆盖。但 harness 整体不是变薄,是变重,因为三件事同时发生了。

第一,动作半径变大。模型弱的时候,它最多把话说错;模型强的时候,它能真的删库、真的发邮件、真的花钱下单。能力越强,一次错误的代价越大,边界就必须越硬。

第二,任务长度变长。弱模型只能接 3 步的活,你不需要检查点;强模型能接 200 步的活,第 137 步崩了,你必须有存档。任务长度是被模型能力撑开的,而管理长度的是 harness。

第三,人的兜底变少。以前你盯着它一步步点,现在你让它跑 40 分钟回来看结果。没人盯着,就必须有日志、有校验、有回滚。

换个说法:模型弱的时候,你只需要一个输入框;模型强的时候,你才需要一整套制度。就像刚入职的实习生,你只让他复印文件;等他成了能签字的人,就需要印章管理、审批流和审计日志——不是因为他变坏了,是因为他的动作开始有后果了。

行业侧的证据也很直接:2026 年 4 月,AWS 把 harness 做成了托管能力(AgentCore harness,6 月正式可用),两次 API 调用就能定义一个 agent,沙箱、记忆、身份、可观测性全归平台。当云厂商开始卖 harness,说明它已经是标准件,不再是手艺。OpenAI 那边流传最广的一句话则是:Agents aren't hard; the Harness is hard.

另一个数字可作参照:2026 年多份报告估计,企业 agent 真正进入生产的比例在 5% 到 12% 之间。死在 demo 到生产路上的那些,绝大多数不是模型不行。

由此得出一条给工程团队的方法论:harness 要薄、要可换、要与模型无关。判断标准很土但很好用——换一个模型,你需要改几行?改得越少,harness 越健康。

七、五年回望:五个阶段

把十三篇连起来看,这五年其实是五个阶段,每个阶段解决一个卡点,也留下一种资产。

阶段一,2022 到 2023,Prompt 时代。卡点是「模型不听话」,资产是话术。ChatGPT 让自然语言成了编程接口,Few-shot 和思维链教会大家怎么问(第 1 篇)。

阶段二,2023 到 2024,工具时代。卡点是「不知道、也做不到」,资产是适配器。RAG 让模型开卷考试,Function Calling 让意图和执行分离,Tool 给了它手脚(第 2、3、4 篇)。

阶段三,2024 到 2025,协议时代。卡点是「接得太贵、连不起来」,资产是标准接口。MCP 统一工具层,A2A 打通 agent 之间,AGENTS.md 和 Skill 把规矩和方法也变成了可分发的东西(第 5、8、9、10 篇)。

阶段四,2025,编排时代。卡点是「单 agent 撞墙」,资产是图与状态。LangGraph 把循环画成图,Orchestrator 把任务拆开(第 6、7 篇)。

阶段五,2025 到 2026,系统化时代。卡点是「不稳定、不敢上生产」,资产是 harness 本身。记忆、沙箱、护栏、可观测性从高级功能变成基础设施(第 11、12 篇和本篇)。

一条主线贯穿这五步:人的工作,从优化输入,到扩展能力,到标准化连接,到组织协作,最后到设计环境。每一步都把上一层的经验固化成基础设施,再把人的注意力往上推一层。

完整时间线:

时间事件阶段本系列
2022.10LangChain 开源,链式编排出现一、Prompt第 1 篇
2022.11ChatGPT 发布,自然语言成为编程接口一、Prompt第 1 篇
2023.03AutoGPT 爆火又退潮,第一波 agent 泡沫一、Prompt第 3 篇
2023.06OpenAI 推出 Function Calling二、工具第 3 篇
2023 下半年RAG 成为企业落地 LLM 的第一选择二、工具第 2 篇
2024.10LangGraph 开源,把循环画成图四、编排第 6 篇
2024.11Anthropic 发布 MCP三、协议第 5 篇
2025.04Google 发布 A2A,agent 之间开始互通三、协议第 8 篇
2025.06A2A 捐赠给 Linux 基金会三、协议第 8 篇
2025.08AGENTS.md 随 Codex 进入代码仓库三、协议第 10 篇
2025.10Agent Skills 发布,方法可以打包分发三、协议第 9 篇
2025.10LangGraph 1.0 发布,编排框架进入稳定期四、编排第 6 篇
2025.12MCP 捐赠 AAIF,协议走向中立三、协议第 5 篇
2026.02Harness 被正式命名:Hashimoto 博文与 OpenAI 报告五、系统化第 13 篇
2026.03A2A v1.0 发布,150 多个组织采用三、协议第 8 篇
2026.06AWS AgentCore harness 正式可用,harness 成为托管标准件五、系统化第 13 篇

八、给开发者的行动建议

前面都是认知。这一节是动作,按优先级排。

8.1 学习顺序:从下往上,别跳

顺序学什么为什么放在这一层投入
第 0 层Prompt,加手写一个 while 循环(不引框架)所有框架都是它的变体一个周末
第 1 层工具设计、上下文预算、一层文件记忆决定 80% 的使用体验两周
第 2 层护栏(权限、确认、预算、审计)加 Docker 沙箱决定敢不敢上生产一个月
第 3 层多 agent 编排、MCP、A2A撞墙之后再上按需

8.2 小团队和个人最值得先做的三件事

第一件:用 200 行裸循环跑通 3 个真实工具。不引任何框架,就while加requests加subprocess。验收标准:能读文件、能跑测试、能根据测试输出改代码,完成一个真实的小任务。做完这一步,你再看 LangGraph 的文档会突然变简单,因为你知道它在包装什么。

第二件:把工具描述当产品文案写。写清四件事:什么时候用、什么时候别用、返回什么格式、失败长什么样。验收标准:拿 5 个真实需求去测,模型第一次就选对工具的比例超过 80%。这是投入产出比最高的一件事——改几行字,可能顶一次模型升级。

第三件:加三道最便宜的护栏。危险操作白名单(删除、发布、转账必须先问人)、单任务 token 上限、全链路 trace(每一步的输入、工具、参数、结果、耗时)。一天工作量。验收标准:故意让它删一个重要文件,它会停下来问你;任务跑飞了,你能从 trace 里指出第几步开始错。

这三件事有个共同点:都不用换模型,都不用买服务,当天就能动手。

8.3 看起来重要、其实可以先跳过的

  • 多 agent 编排。单 agent 加好工具能覆盖大部分场景。先撞墙(上下文爆、职责混)再拆,否则只是把一个问题拆成五个问题;
  • 复杂 RAG。「它不懂这个项目」这类问题,AGENTS.md 加目录树加 grep 往往比向量库更准,而且可解释。向量库留给文档量真大、查询语义真模糊的场景;
  • 自建 MCP server。先用官方和社区现成的;等同一类集成的需求出现三次,再自己写;
  • 微调。永远是最后一步:格式话术用 Prompt,知识问题用 RAG,能力问题才考虑微调。

8.4 未来一到两年值得关注

  1. 上下文从「截断」走向「换页」。虚拟上下文、按需换入换出,像操作系统管内存一样管窗口;
  2. 记忆的标准化与可迁移。现在记忆锁在各家产品里,接下来会出现「跟着人走」的记忆格式;
  3. 评测成为 harness 的一等公民。没有 eval 的 harness 无法迭代,趋势是把线上 trace 直接变成测试用例;
  4. agent 自己的身份与权限。最小权限、可审计的委托链、agent 专用的 OAuth——这块现在最原始,也最容易出事故;
  5. 长任务的可恢复性与成本工程。检查点、人审节点、断点续跑会成为默认配置;模型级联与按任务分配推理预算会成为常规优化项。

九、结语:这场变革的本质

十三篇走完,如果只留一句话:

AI 工程的重心,从「怎么让模型说得好」,移到了「怎么让系统做得成」。

这句话背后是五次重心的平移:优化输入、扩展能力、标准化连接、组织协作,最后到设计环境。每一层都把上一层的经验沉淀成基础设施,再把人的注意力往上推一层。

所以「模型会越来越强,harness 会不会不重要」这个问题,答案正好相反。模型越强,它替你把「想」做得越好,剩下的全是「做」的工程;而「做」的工程,永远需要人来定边界。

给这个系列收个尾。十二个零件,一句话各归其位:

Prompt 是话说清楚,RAG 是资料递对,Function Calling 是意图与执行分离,Tool 是手脚,MCP 是接口,LangGraph 是循环的图纸,Orchestrator 是分工,A2A 是跨公司的握手,Skill 是方法,AGENTS.md 是规矩,Memory 是记性,Sandbox 是边界。

而 Harness,是让这十二样同时成立的那个整体。

最后留一个问题,建议每个做 agent 的人都答一遍:

如果让它自己跑 40 分钟,最坏情况下它能弄坏什么?

答得出来,你就可以放心地让它跑得更久。答不出来,先把护栏补上,再谈能力。

能力决定它能做什么,边界决定你敢让它做什么。用户真正放心把活交出去的那一刻,通常不是模型变聪明了,而是他知道——最坏的情况,有上限。


参考资料

  • Mitchell Hashimoto,My AI Adoption Journey(2026 年 2 月),harness engineering 的命名出处:My AI Adoption Journey – Mitchell Hashimoto
  • OpenAI,Harness engineering: leveraging Codex in an agent-first world(2026 年 2 月)
  • Amazon Web Services,Amazon Bedrock AgentCore harness is now generally available:Amazon Bedrock AgentCore harness is now generally available: Go from idea to production-grade agent in minutes | Artificial Intelligence
  • Birgitta Böckeler / Martin Fowler, 关于 harness engineering 的评述(2026 年 2 月)
  • Anthropic,Building effective agents(2024 年 12 月):Building Effective AI Agents \ Anthropic
  • Anthropic,Effective context engineering for AI agents:Effective context engineering for AI agents \ Anthropic
  • Liu et al.,Lost in the Middle: How Language Models Use Long Contexts(TACL 2024):[2307.03172] Lost in the Middle: How Language Models Use Long Contexts
  • LangChain, Terminal Bench 2.0 上的 harness 改进实验记录(2026 年初)

文中数据以各家公开材料为准,会随版本更新。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 2:56:44

门店收款码的三种模式,选哪种取决于两件事

收银台上贴的那张收款码&#xff0c;顾客扫码时看不出任何区别。但这张码背后绑的是谁的商户号&#xff0c;决定了三件很实际的事&#xff1a;钱进谁的账户、退款从哪个账户出、发票由谁开。不少品牌在门店开到十几家之后才发现&#xff0c;这三件事一开始就没想过。收款码常见…

作者头像 李华
网站建设 2026/10/23 2:55:09

第 4 讲 直流电源与电子负载深度实战:原理・参数・测试方法・自动化测试全解析

专栏:《电路故障诊断与性能测试从入门到精通:工具・参数・公式・实战》 本文为付费专栏第 4 篇,全文约 9500 字,从电源核心参数的底层推导到电子负载反馈原理,从标准化测试流程到 Python 自动化测试系统,彻底讲透电源性能测试的完整方法论。 1. 开篇:为什么你的电源总是…

作者头像 李华
网站建设 2026/10/23 2:54:04

RHCSA复习

1.基础文件和目录操作(1). 在用户主目录下创建一个名为test_dir的目录&#xff0c;并在该目录中创建一个名为test_file.txt的空文本文件。[rootserver]# mkdir /text_dir [rootserver]# touch /test_dir/test_file.txt(2). 将test_file.txt文件复制到/tmp目录下&#xff0c;并将…

作者头像 李华
网站建设 2026/10/23 2:53:14

1TOPS+WiFi6双频+千兆PHY,兼容树莓派CM4/CM5引脚|触觉智能SOM6208核心板

过去一年&#xff0c;树莓派 CM4/CM5 的交期与价格&#xff0c;逼着不少做工业设备的团队做了同一个动作&#xff1a;改板。然而随之而来的Layout、打样、EMC、老化、量产验证&#xff0c;一轮下来少则两三个月&#xff0c;多则半年——成本不止一颗芯片。触觉智能 RK3562核心板…

作者头像 李华
网站建设 2026/10/23 2:53:13

TLT153 工控机:Docker 环境部署与容器开发实践(下)

4 下载镜像并运行容器下载镜像前&#xff0c;需要先开启Docker相关服务&#xff0c;并确保存储驱动配置正确。&#xff08;1&#xff09;配置Docker存储驱动不同系统环境可能导致Docker默认存储驱动&#xff08;overlayfs/overlay2&#xff09;不一致&#xff0c;执行以下命令&…

作者头像 李华