LLM爆火背后的“隐藏引擎“——Agent Harness
你的 AI 为什么总在演示时掉链子?
你做过一个聊天机器人。也许还接上了几个工具,跑个 ReAct 循环。演示的时候一切正常。
然后你尝试把它做成生产级产品,轮子就开始掉了:模型三步之后就忘了自己干了什么,工具调用悄无声息地失败,上下文窗口里塞满了垃圾数据。
问题不在你的模型。问题在模型周围的一切。
LangChain 证明了这一点:他们只改了 LLM 外围的基础设施(同样的模型,同样的参数),排名就从 TerminalBench 2.0 的前 30 名之外一路飙升到第 5 名。还有一个研究项目,让 LLM 自己优化基础设施,最终达到 76.4% 的通过率,超过了手工设计的系统。
这套基础设施,现在有个专门的名字:Agent Harness。
什么是 Agent Harness?
这个术语是 2026 年初正式提出的,但概念早就存在了。Harness 是包裹 LLM 的完整软件基础设施:编排循环、工具、记忆、上下文管理、状态持久化、错误处理和防护机制。
Anthropic 的 Claude Code 文档说得很直白:SDK 就是"驱动 Claude Code 的 Agent Harness"。OpenAI 的 Codex 团队用同样的框架,明确把"Agent"和"Harness"等同起来,指的都是让 LLM 有用的非模型基础设施。

我很喜欢 LangChain 的 Vivek Trivedy 那句经典公式:“如果你不是模型,那你就是 Harness。”
这里有个容易混淆的区别。“Agent"是涌现出来的行为——那个有目标导向、会使用工具、能自我纠正的实体,是用户实际交互的对象。Harness 是产生这种行为背后的 machinery。当有人说"我做了个 Agent”,他们的意思是"我做了个 Harness,然后接了个模型"。
Beren Millidge 在 2023 年的文章里把这个类比讲得更精确。他把原始 LLM 比作一台只有 CPU、没有内存、没有硬盘、没有输入输出设备的计算机。上下文窗口充当内存(快但容量有限),外部数据库充当硬盘存储(容量大但慢),工具集成充当设备驱动。Harness 就是操作系统。
正如 Millidge 写的:“我们重新发明了冯·诺依曼架构”,因为这对任何计算系统来说都是自然的抽象。
工程三层论
围绕着模型,有三个同心圆式的工程层次:
- • 提示工程:雕琢模型收到的指令
- • 上下文工程:管理模型能看到什么、什么时候看到
- • Harness 工程:涵盖以上两者,再加上整个应用基础设施——工具编排、状态持久化、错误恢复、验证循环、安全执行和生命周期管理
Harness 不是提示的包装器。它是让自主 Agent 行为成为可能的完整系统。
生产级 Harness 的 11 个核心组件
综合 Anthropic、OpenAI、LangChain 和更广泛的实践社区,一个生产级的 Agent Harness 有 12 个不同的组件。
1. 编排循环
这是心脏跳动。它实现了思想 - 行动 - 观察(TAO)循环,也叫 ReAct 循环。循环跑起来:组装提示 → 调用 LLM → 解析输出 → 执行工具调用 → 把结果喂回去 → 重复直到完成。
机械上,它通常只是个 while 循环。复杂性在于循环管理的一切,而不是循环本身。Anthropic 把他们的运行时描述为"傻瓜循环"——所有智能都住在模型里,Harness 只是管理回合。
生活化比喻:编排循环就像厨师炒菜的过程——看一眼菜谱(提示),切一刀菜(行动),尝一口味道(观察),再调整火候,重复直到出锅。循环本身简单,难的是管理好每一道工序。
2. 工具
工具是 Agent 的手。它们被定义为模式(名称、描述、参数类型),注入 LLM 的上下文中,让模型知道有什么可用。工具层处理注册、模式验证、参数提取、沙箱执行、结果捕获,以及把结果格式化回 LLM 可读的观察。
Claude Code 提供六大类工具:文件操作、搜索、执行、网页访问、代码智能和子 Agent 生成。OpenAI 的 Agents SDK 支持函数工具、托管工具(网页搜索、代码解释器、文件搜索)和 MCP 服务器工具。
生活化比喻:工具就像瑞士军刀上的各个刀片——每个都有特定用途,用的时候抽出来,用完收回去。Agent 知道什么时候该用哪把刀,但前提是这些刀得摆在它够得着的地方。
3. 记忆
记忆在多时间尺度上运作。短期记忆是单次会话中的对话历史。长期记忆跨会话持久化:Anthropic 使用 CLAUDE.md 项目文件和自动生成的 MEMORY.md 文件;LangGraph 使用命名空间组织的 JSON Store;OpenAI 支持基于 SQLite 或 Redis 的会话。
Claude Code 实现了三层层级:轻量级索引(每条约 150 字符,始终加载)、详细主题文件(按需拉取)、原始转录(仅通过搜索访问)。一个关键设计原则:Agent 把自己的记忆当作"提示",在行动前会对照实际状态验证。
生活化比喻:记忆系统就像人的大脑——短期记忆是工作记忆,记住刚才说了什么;长期记忆是笔记本,记下重要决策和待办事项;而原始对话记录就像录音笔,需要时再回去翻。
4. 上下文管理
这里是很多 Agent 悄无声息失败的地方。核心问题是上下文腐烂:当关键内容掉进窗口中间位置时,模型性能下降超过 30%(Chroma 研究证实了斯坦福"Lost in the Middle"的发现)。即使是百万 token 窗口,随着上下文增长,指令遵循也会退化。
生产级策略包括:
- • 压缩:接近限制时总结对话历史(Claude Code 保留架构决策和未解决的 bug,丢弃冗余的工具输出)
- • 观察掩码:JetBrains 的 Junie 隐藏旧工具输出,但保持工具调用可见
- • 即时检索:维护轻量级标识符,动态加载数据(Claude Code 用 grep、glob、head、tail 而不是加载完整文件)
- • 子 Agent 委托:每个子 Agent 广泛探索,但只返回 1000-2000 token 的浓缩摘要
Anthropic 的上下文工程指南说得很清楚:目标是最小化高信号 token 的集合,最大化期望结果的概率。
生活化比喻:上下文管理就像整理办公桌——重要的文件放在手边(窗口两端),用过的文件收进抽屉(压缩),需要时再查(即时检索),太乱的桌面定期清理(掩码)。桌子就那么大,关键是要让最重要的东西永远在最顺手的位置。
5. 提示构建
这一步组装模型在每一步实际看到的内容。它是分层的:系统提示、工具定义、记忆文件、对话历史,以及当前用户消息。
OpenAI 的 Codex 使用严格的优先级栈:服务器控制的系统消息(最高优先级)、工具定义、开发者指令、用户指令(级联 AGENTS.md 文件,32 KiB 限制),然后是对话历史。
生活化比喻:提示构建就像给领导准备汇报材料——最上面是核心结论(系统提示),下面是数据支撑(工具定义),再下面是背景资料(记忆文件),最后是之前的讨论记录(对话历史)。领导时间有限,所以要把最重要的放最上面。
6. 输出解析
现代 Harness 依赖原生工具调用——模型返回结构化的 tool_calls 对象,而不是需要解析的自由文本。Harness 检查:有工具调用吗?执行它们并循环。没有工具调用?那就是最终答案。
对于结构化输出,OpenAI 和 LangChain 都支持通过 Pydantic 模型的模式约束响应。遗留方法如 RetryWithErrorOutputParser(把原始提示、失败的完成和解析错误一起喂回模型)仍然可用于边缘情况。
生活化比喻:输出解析就像海关检查——结构化通关(原生工具调用)直接放行,自由文本得开箱检查(解析),有问题的打回去重来(重试解析)。
7. 状态管理
LangGraph 将状态建模为类型字典,流经图节点,reducer 合并更新。检查点发生在超步边界,支持中断后恢复和时间旅行调试。OpenAI 提供四种互斥策略:应用内存、SDK 会话、服务器端对话 API,或轻量级 previous_response_id 链。Claude Code 采用不同方法:git 提交作为检查点,进度文件作为结构化草稿。
生活化比喻:状态管理就像游戏存档——可以随时读档(恢复),回退到之前的关卡(时间旅行),或者用快速存档链(response_id)继续玩。
8. 错误处理
这里有个关键数字:10 步流程,每步 99% 成功率,端到端成功率只有约 90.4%。错误会快速累积。
LangGraph 区分四种错误类型:瞬态错误(指数退避重试)、LLM 可恢复错误(作为 ToolMessage 返回让模型调整)、用户可修复错误(中断等待人工输入)、意外错误(冒泡上报用于调试)。Anthropic 在工具处理器内捕获失败,作为错误结果返回以保持循环运行。Stripe 的生产 Harness 将重试次数上限设为两次。
生活化比喻:错误处理就像餐厅服务——上菜慢了等一等(瞬态重试),客人说太咸了换一道(LLM 可恢复),客人对食材过敏等他自己决定(用户可修复),厨房着火直接找店长(意外上报)。
9. 防护机制和安全
OpenAI 的 SDK 实现三个层级:输入防护(在第一个 Agent 上运行)、输出防护(在最终输出上运行)、工具防护(在每次工具调用时运行)。"触发线"机制在被触发时立即停止 Agent。
Anthropic 在架构上分离权限执行和模型推理。模型决定尝试什么,工具系统决定允许什么。Claude Code 独立控制约 40 个离散工具能力,分三个阶段:项目加载时建立信任、每次工具调用前检查权限、高风险操作需要显式用户确认。
生活化比喻:防护机制就像公司门禁——员工卡能刷开哪些门(工具权限),能带什么东西进出(输入输出防护),危险操作需要领导审批(用户确认)。
10. 验证循环
这是区分玩具演示和生产级 Agent 的关键。Anthropic 推荐三种方法:基于规则的反馈(测试、linter、类型检查器)、视觉反馈(通过 Playwright 截图用于 UI 任务)、LLM 作为评委(单独子 Agent 评估输出)。
Claude Code 创始人 Boris Cherny 指出,给模型一种验证自己工作的方式可以将质量提高 2 到 3 倍。
生活化比喻:验证循环就像考试交卷前的检查——用计算器验算(规则验证),看看卷面整洁度(视觉验证),或者让同学帮忙看一下(LLM 评委)。
11. 子 Agent 编排
Claude Code 支持三种执行模型:Fork(父上下文的字节级复制)、Teammate(独立终端窗口,基于文件的邮箱通信)、Worktree(自己的 git 工作树,每个 Agent 独立分支)。OpenAI 的 SDK 支持 Agent 即工具(专家处理有界子任务)和交接(专家接管完全控制)。LangGraph 将子 Agent 实现为嵌套状态图。
生活化比喻:子 Agent 就像外包团队——Fork 是把完整项目资料复制一份给外包,Teammate 是同一办公室不同工位,Worktree 是外包在自己的场地独立开发。
循环运转:一步步 walkthrough
现在你知道组件了,让我们追踪它们如何在单个循环中协作。
第 1 步(提示组装):Harness 构建完整输入——系统提示 + 工具模式 + 记忆文件 + 对话历史 + 当前用户消息。重要上下文被放置在提示的开头和结尾("Lost in the Middle"发现)。
第 2 步(LLM 推理):组装好的提示发送到模型 API。模型生成输出 token:文本、工具调用请求,或两者。
第 3 步(输出分类):如果模型产生文本且没有工具调用,循环结束。如果有工具调用,继续执行。如果请求交接,更新当前 Agent 并重启。
第 4 步(工具执行):对于每个工具调用,Harness 验证参数、检查权限、在沙箱环境中执行、捕获结果。只读操作可以并发运行;变更操作串行运行。
第 5 步(结果打包):工具结果格式化为 LLM 可读的消息。错误被捕获并作为错误结果返回,让模型可以自我纠正。
第 6 步(上下文更新):结果附加到对话历史。如果接近上下文窗口限制,Harness 触发压缩。
第 7 步(循环):回到第 1 步。重复直到终止。
终止条件是多层的:模型产生无工具调用的响应、超过最大回合限制、token 预算耗尽、防护触发线触发、用户中断,或返回安全拒绝。简单问题可能只需 1-2 回合。复杂重构任务可以在多个回合中链式调用数十个工具。
对于跨越多个上下文窗口的长运行任务,Anthropic 开发了两阶段"Ralph Loop"模式:初始化 Agent 设置环境(初始化脚本、进度文件、功能列表、初始 git 提交),然后每个后续会话中的编码 Agent 读取 git 日志和进度文件定位自己,选择优先级最高的未完成功能,完成它,提交,并写入摘要。文件系统提供了跨上下文窗口的连续性。
真实框架如何实现这个模式
Anthropic 的 Claude Agent SDK 通过单个 query() 函数暴露 Harness,创建 Agent 循环并返回流式消息的异步迭代器。运行时是"傻瓜循环",所有智能都在模型里。Claude Code 使用 Gather-Act-Verify 循环:收集上下文(搜索文件、阅读代码)→ 采取行动(编辑文件、运行命令)→ 验证结果(运行测试、检查输出)→ 重复。
OpenAI 的 Agents SDK 通过 Runner 类实现 Harness,有三种模式:异步、同步和流式。SDK 是"代码优先":工作流逻辑用原生 Python 表达,而不是图 DSL。Codex Harness 扩展为三层架构:Codex Core(Agent 代码 + 运行时)、应用服务器(双向 JSON-RPC API)、客户端界面(CLI、VS Code、Web 应用)。所有界面共享同一个 Harness,这就是为什么"Codex 模型在 Codex 界面上感觉比通用聊天窗口更好"。
LangGraph 将 Harness 建模为显式状态图。两个节点(llm_call 和 tool_node)通过条件边连接:如果有工具调用,路由到 tool_node;如果没有,路由到 END。LangGraph 从 LangChain 的 AgentExecutor 演变而来,后者在 v0.2 被弃用,因为它难以扩展且不支持多 Agent。LangChain 的 Deep Agents 明确使用"Agent Harness"术语:内置工具、规划(write_todos 工具)、用于上下文管理的文件系统、子 Agent 生成和持久化记忆。
CrewAI 实现基于角色的多 Agent 架构:Agent(围绕 LLM 的 Harness,由角色、目标、背景和工具定义)、Task(工作单元)、Crew(Agent 集合)。CrewAI 的 Flows 层添加"确定性骨干网,智能放在需要的地方",管理路由和验证,而 Crew 处理自主协作。
AutoGen(演变为 Microsoft Agent Framework)开创了对话驱动的编排。它的三层架构(Core、AgentChat、Extensions)支持五种编排模式:顺序、并发(扇出/扇入)、群聊、交接和磁控(管理 Agent 维护动态任务分类账协调专家)。
脚手架比喻
脚手架比喻不是装饰性的。它是精确的。建筑脚手架是临时基础设施,让工人能建造他们 otherwise 够不到的结构。它不做施工。但没有它,工人够不到上层。
关键洞察:建筑完成时脚手架会被拆除。随着模型改进,Harness 复杂性应该降低。Manus 在六个月内重建了五次,每次重构都移除复杂性。复杂的工具定义变成了通用 shell 执行。"管理 Agent"变成了简单的结构化交接。
这指向共同进化原则:模型现在用特定的 Harness 进行后训练。Claude Code 的模型学会了使用它被训练的具体 Harness。改变工具实现可能会降低性能,因为这种紧密耦合。
"未来证明测试"用于 Harness 设计:如果性能随着更强大模型扩展而提升,且不增加 Harness 复杂性,设计就是合理的。
定义每个 Harness 的七个决策
每个 Harness 架构师面临七个选择:
1. 单 Agent vs. 多 Agent
Anthropic 和 OpenAI 都说:先最大化单个 Agent。多 Agent 系统增加开销(路由的额外 LLM 调用、交接时的上下文丢失)。只有当工具过载超过约 10 个重叠工具,或存在明显分离的任务域时才拆分。
2. ReAct vs. 计划 - 执行
ReAct 在每一步交错推理和行动(灵活但每步成本更高)。计划 - 执行将规划与执行分离。LLMCompiler 报告比顺序 ReAct 快 3.6 倍。
3. 上下文窗口管理策略
五种生产方法:基于时间的清除、对话总结、观察掩码、结构化笔记、子 Agent 委托。ACON 研究显示,通过优先处理推理轨迹而非原始工具输出,token 减少 26% 至 54%,同时保持 95% 以上的准确率。
4. 验证循环设计
计算验证(测试、linter)提供确定性基础真值。推理验证(LLM 作为评委)捕捉语义问题但增加延迟。Martin Fowler 的 Thoughtworks 团队将此框架化为引导者(前馈,行动前引导)与传感器(反馈,行动后观察)。
5. 权限和安全架构
宽松(快但危险,自动批准大多数操作)vs. 限制(安全但慢,每个操作需要批准)。选择取决于部署上下文。
6. 工具范围策略
更多工具通常意味着更差性能。Vercel 从 v0 移除了 80% 的工具,得到更好结果。Claude Code 通过延迟加载实现 95% 上下文减少。原则:暴露当前步骤所需的最小工具集。
7. Harness 厚度
多少逻辑住在 Harness 里 vs. 模型里。Anthropic 押注薄 Harness 和模型改进。基于图的框架押注显式控制。Anthropic 定期从 Claude Code 的 Harness 中删除规划步骤,因为新模型版本内化了这种能力。
Harness 才是产品
两个使用相同模型的产品,仅基于 Harness 设计就可以有巨大性能差异。TerminalBench 证据很明确:只改变 Harness 就让 Agent 移动了 20 多个排名位置。
Harness 不是已解决的问题,也不是商品层。它是艰难工程所在的地方:把上下文管理为稀缺资源、设计在失败累积前捕获它们的验证循环、构建提供连续性而不产生幻觉的记忆系统,以及在构建多少脚手架与留给模型多少之间做出架构赌注。
随着模型改进,这个领域正朝着更薄的 Harness 发展。但 Harness 本身不会消失。即使是最有能力的模型,也需要东西来管理它的上下文窗口、执行工具调用、持久化状态,以及验证工作。
下次你的 Agent 失败时,不要怪模型。看看 Harness。
结语:抓住大模型时代的职业机遇
AI大模型的发展不是“替代人类”,而是“重塑职业价值”——它淘汰的是重复性、低附加值的工作,却催生了更多需要“技术+业务”交叉能力的高端岗位。对于求职者而言,想要在这波浪潮中立足,不仅需要掌握Python、TensorFlow/PyTorch等技术工具,更要深入理解目标行业的业务逻辑(如金融的风险控制、医疗的临床需求),成为“懂技术、懂业务”的复合型人才。
无论是技术研发岗(如算法工程师、研究员),还是业务落地岗(如产品经理、应用工程师),大模型都为不同背景的职场人提供了广阔的发展空间。只要保持学习热情,紧跟技术趋势,就能在AI大模型时代找到属于自己的职业新蓝海。
最近两年大模型发展很迅速,在理论研究方面得到很大的拓展,基础模型的能力也取得重大突破,大模型现在正在积极探索落地的方向,如果与各行各业结合起来是未来落地的一个重大研究方向
大模型应用工程师年包50w+属于中等水平,如果想要入门大模型,那现在正是最佳时机
2025年Agent的元年,2026年将会百花齐放,相应的应用将覆盖文本,视频,语音,图像等全模态
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
扫描下方csdn官方合作二维码获取哦!

给大家推荐一个大模型应用学习路线
这个学习路线的具体内容如下:
第一节:提示词工程
提示词是用于与AI模型沟通交流的,这一部分主要介绍基本概念和相应的实践,高级的提示词工程来实现模型最佳效果,以现实案例为基础进行案例讲解,在企业中除了微调之外,最喜欢的就是用提示词工程技术来实现模型性能的提升

第二节:检索增强生成(RAG)
可能大家经常会看见RAG这个名词,这个就是将向量数据库与大模型结合的技术,通过外部知识来增强改进提升大模型的回答结果,这一部分主要介绍RAG架构与组件,从零开始搭建RAG系统,生成部署RAG,性能优化等

第三节:微调
预训练之后的模型想要在具体任务上进行适配,那就需要通过微调来提升模型的性能,能满足定制化的需求,这一部分主要介绍微调的基础,模型适配技术,最佳实践的案例,以及资源优化等内容

第四节:模型部署
想要把预训练或者微调之后的模型应用于生产实践,那就需要部署,模型部署分为云端部署和本地部署,部署的过程中需要考虑硬件支持,服务器性能,以及对性能进行优化,使用过程中的监控维护等

第五节:人工智能系统和项目
这一部分主要介绍自主人工智能系统,包括代理框架,决策框架,多智能体系统,以及实际应用,然后通过实践项目应用前面学习到的知识,包括端到端的实现,行业相关情景等

学完上面的大模型应用技术,就可以去做一些开源的项目,大模型领域现在非常注重项目的落地,后续可以学习一些Agent框架等内容
上面的资料做了一些整理,有需要的同学可以下方添加二维码获取(仅供学习使用)

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)