什么是Harness Engineering?——最小的Agent Harness
Harness Engineering 背景介绍1. 概念起源Harness套具/挽具 这个词最早来自领域含义马具控制马的装备让马的力量被正确引导电气工程测试套具Test Harness- 连接被测系统与测试设备的中间层软件测试自动测试框架负责执行测试用例并收集结果在 AI Agent 领域Harness 沿用了同样的隐喻Harness 控制 AI 能力的挽具让 AI 的输出被正确引导和执行2. 发展脉络阶段一纯 API 调用2022-2023用户 → LLM API → 返回文本 → 结束模型直接输出结果无法执行真实操作应用场景有限阶段二工具调用 Function Calling2023用户 → LLM API → 决定调用工具 → Harness 执行 → 返回结果 → 结束模型开始具备调用工具的能力但缺乏循环和状态管理阶段三完整 Agent Harness2023-至今用户 → [模型思考 → Harness 执行 → 模型思考 → Harness 执行 → ...] → 完成循环直到任务完成完整的上下文管理多工具协作错误恢复机制为什么需要 Harness核心问题模型不是万能的模型能做的模型实际不能做的理解自然语言真正读取你的文件生成代码真正运行代码推理和规划真正访问互联网写回答真正修改数据库Harness 的价值 把说和做分离模型负责决策Harness 负责执行。模型只负责思考和决策Harness 负责真正执行、管理上下文、控制循环。┌─────────────────────────────────────────────────────────────┐ │ Harness │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 工具注册表 (TOOL_FUNCTIONS) │ │ │ │ - read_file() - calculate() - ... │ │ │ └─────────────────────────────────────────────────────┘ │ │ ▲ │ │ │ 调用工具 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Agent Loop (循环) │ │ │ │ 1. 发消息给模型 │ │ │ │ 2. 模型决定: 调用工具 or 给出答案 │ │ │ │ 3. 如果调用工具 → Harness 执行 → 返回结果 │ │ │ │ 4. 循环回到第1步 │ │ │ └─────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────┐ │ AI Model │ │ (Claude) │ │ 思考和决策 │ └───────────────┘以下是代码示例 最小 Agent Harness 示例 核心思想:模型只负责思考和决定调用什么工具, harness 负责真正执行工具、管理上下文、控制循环。 import json from anthropic import Anthropic client Anthropic() # 需要设置 ANTHROPIC_API_KEY 环境变量 # ---------- 1. 工具定义 ---------- # harness 里真正干活的函数。模型自己不能读文件、不能算数, # 它只能请求harness 帮它做,这就是工具存在的意义。 def read_file(path: str) - str: 读取一个文本文件的内容。 try: with open(path, r, encodingutf-8) as f: return f.read() except Exception as e: return f读取失败: {e} def calculate(expression: str) - str: 计算一个数学表达式,比如 2 * (3 4)。 try: # 生产环境别用 eval,这里只是演示。用 ast 或专用库更安全。 result eval(expression, {__builtins__: {}}, {}) return str(result) except Exception as e: return f计算失败: {e} # 工具的注册表:把函数名映射到真正的 Python 函数 TOOL_FUNCTIONS { read_file: read_file, calculate: calculate, } # 工具的 schema:告诉模型有哪些工具、怎么调用、参数是什么。 # 这段描述写得好不好,直接影响模型用不用得对工具。 TOOL_SCHEMAS [ { name: read_file, description: 读取指定路径的文本文件内容, input_schema: { type: object, properties: { path: {type: string, description: 文件路径} }, required: [path], }, }, { name: calculate, description: 计算一个数学表达式并返回结果, input_schema: { type: object, properties: { expression: { type: string, description: 要计算的表达式,如 2 * (3 4), } }, required: [expression], }, }, ] # ---------- 2. Agent Loop ---------- # 这是 harness 的心脏。 def run_agent(user_task: str, max_turns: int 10) - str: # messages 就是上下文。harness 的核心工作之一 # 就是决定这个列表里放什么、怎么增长。 messages [{role: user, content: user_task}] for turn in range(max_turns): # (a) 把当前上下文 工具列表发给模型,让它决定下一步 response client.messages.create( modelclaude-sonnet-4-20250514, max_tokens1024, toolsTOOL_SCHEMAS, messagesmessages, ) # (b) 把模型这一轮的输出加回上下文(关键:保持对话连续) messages.append({role: assistant, content: response.content}) # (c) 判断模型是想调用工具,还是已经给出最终答案 if response.stop_reason ! tool_use: # 模型没有要求调工具 → 认为任务完成,返回文本 final_text .join( block.text for block in response.content if block.type text ) return final_text # (d) 模型要求调用一个或多个工具 → harness 真正执行它们 tool_results [] for block in response.content: if block.type tool_use: fn TOOL_FUNCTIONS[block.name] print(f [调用工具] {block.name}({block.input})) result fn(**block.input) # 真正执行 tool_results.append({ type: tool_result, tool_use_id: block.id, # 对应上模型的请求 id content: result, }) # (e) 把工具执行结果作为一条 user 消息喂回去,进入下一轮 messages.append({role: user, content: tool_results}) return 达到最大轮次,未完成任务。 # ---------- 3. 跑起来 ---------- if __name__ __main__: answer run_agent(帮我算一下 (128 256) * 3 等于多少) print(\n最终回答:, answer)1. 工具定义Lines 13-70TOOL_FUNCTIONS { read_file: read_file, calculate: calculate, }为什么需要工具模型本身不能真正读取文件、做计算它只能请求Harness 帮它做工具 模型与真实世界交互的桥梁TOOL_SCHEMAS [ { name: read_file, description: 读取指定路径的文本文件内容, input_schema: {...} }, ... ]Schema 的重要性 描述写得越好模型用工具越准确。2. Agent LoopLines 73-118这是 Harness 的心脏for turn in range(max_turns): # (a) 发消息给模型让它决定下一步 response client.messages.create(...) # (b) 把模型输出加回上下文 messages.append({role: assistant, content: response.content}) # (c) 判断是调用工具还是给出答案 if response.stop_reason ! tool_use: return final_text # 完成 # (d) Harness 真正执行工具 for block in response.content: if block.type tool_use: result fn(**block.input) # 执行 # (e) 把结果喂回去进入下一轮 messages.append({role: user, content: tool_results})3. 运行示例Lines 122-125answer run_agent(帮我算一下 (128 256) * 3 等于多少)执行流程 模型收到任务 → 我需要调用 calculate 工具 Harness 执行 → calculate((128 256) * 3) → 1152 模型收到结果 → 给出最终回答答案是 1152总结Harness Engineering 的兴起是 LLM 应用成熟的必然结果从玩具到生产力 - LLM 需要真正做事而不只是说话安全与可控 - 把危险操作隔离在 Harness 层可靠性保障 - 模型可能出错Harness 需要兜底工程化需求 - 可测试、可监控、可迭代

相关新闻

博容安可4G定位室内实测:地下车库、电梯、隧道求救信号能发出吗?

博容安可4G定位室内实测:地下车库、电梯、隧道求救信号能发出吗?

摘要:卫星定位在室内、地下车库等场景常失效。本文解析博容安可多模定位技术的补盲机制,验证其在卫星信号盲区内的求救可靠性。一、卫星定位的物理局限GPS与北斗卫星信号强度仅为手机信号的万分之一,无法穿透钢筋混凝土建筑、金属电梯轿厢与山…

2026/8/3 6:11:02 阅读更多 →
山西人做阳光房,别再拿南方货凑数了!

山西人做阳光房,别再拿南方货凑数了!

你是不是也曾憧憬过一个阳光房? 冬日暖阳洒满全身,夏夜抬头就是星空,喝茶、养花、发呆,好不惬意。 可真装完才发现,理想有多丰满,现实就有多骨感 —— 冬天,冰得像露天阳台,型材凉得…

2026/8/3 3:11:21 阅读更多 →
ChatGPT写单元测试,从入门到上线:覆盖Spring Boot/React/Python三大生态,附13个生产级可复用测试片段

ChatGPT写单元测试,从入门到上线:覆盖Spring Boot/React/Python三大生态,附13个生产级可复用测试片段

更多请点击: https://kaifayun.com 第一章:ChatGPT写单元测试:认知跃迁与工程价值重定义 传统单元测试编写长期被视作“必要但低效”的负担——开发者需在功能实现后回溯设计用例、构造边界条件、维护断言逻辑,耗时且易遗漏。而当…

2026/8/2 0:21:47 阅读更多 →

最新新闻

跑了5场校友对接会,跨圈合作最实在的还得是中英EMBA

跑了5场校友对接会,跨圈合作最实在的还得是中英EMBA

跑了5场不同类型的EMBA校友对接会后不难发现,中英EMBA项目搭建的跨文化、跨行业校友网络,是高管群体拓展国际视野、落地跨国商业合作的高价值渠道,其中香港科技大学EMBA中英双语课程是不少参与对接会的高管反复提及的选择。当前全球商业链路的…

2026/8/3 6:10:58 阅读更多 →
MeteoInfo:气象数据处理的“瑞士军刀“——一个开源GIS与科学计算平台如何改变气象工作流

MeteoInfo:气象数据处理的“瑞士军刀“——一个开源GIS与科学计算平台如何改变气象工作流

MeteoInfo:气象数据处理的"瑞士军刀"——一个开源GIS与科学计算平台如何改变气象工作流 【免费下载链接】MeteoInfo MeteoInfo: GIS, scientific computation and visualization environment. 项目地址: https://gitcode.com/gh_mirrors/me/MeteoInfo …

2026/8/3 6:10:58 阅读更多 →
Math in CS组队学习招募中

Math in CS组队学习招募中

有想要学习计算机数学的同学们可以加入一起学习呀!可关注Yibo老师BliBli账号Yibohere一起学习吧。 #Yibo翊博#yibohere #YiboPython #GitHub:vibohere #qitlink:翊博在这里

2026/8/3 6:10:58 阅读更多 →
分时数据深度挖掘:用Python构建日内T+0交易信号系统

分时数据深度挖掘:用Python构建日内T+0交易信号系统

分时数据深度挖掘:用Python构建日内T0交易信号系统 做日内T0交易,分时数据是最核心的数据源。但大部分人只是看个分时图的白线黄线,很多有价值的细节信息都被忽略了。去年我搭建了一个分时数据深度挖掘系统,用Python从分钟级K线和…

2026/8/3 6:10:58 阅读更多 →
并行草稿模型与因果修正:大语言模型推理加速实践指南

并行草稿模型与因果修正:大语言模型推理加速实践指南

这次我们来看一个在推理加速领域备受关注的技术方案:并行草稿模型的最佳因果修正方案。这个方案的核心目标很直接——在保持生成质量的前提下,大幅提升大语言模型(LLM)的推理速度。它不是一个新的基础模型,而是一种高效…

2026/8/3 6:10:58 阅读更多 →
COMSOL多物理场耦合在光学系统仿真中的应用与优化

COMSOL多物理场耦合在光学系统仿真中的应用与优化

1. COMSOL在光学系统仿真中的核心价值作为一名长期从事光学系统设计的工程师,我深刻理解传统设计流程中面临的挑战。在实验室里反复试错、调整参数、等待加工测试的日子已经一去不复返了。COMSOL Multiphysics的出现,彻底改变了我们设计和验证光学系统的…

2026/8/3 6:09:58 阅读更多 →

日新闻

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:47 阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:47 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →