文章总结: 本文深入解析了智能体Harness的概念与架构,指出其不同于LangGraph等框架,是一种自下而上、开箱即用的智能体设计。核心架构包括外层迭代循环、上下文管理、技能工具管理、子智能体管理、内置预封装技能、会话持久化、系统提示词组装、生命周期钩子和权限安全层。Harness通过让模型基于反馈行动、采取操作并扩展技能,将语言模型转化为真正的智能体,解决了原始REACT循环的局限性。 综合评分: 86 文章分类: AI安全,安全开发,安全意识,解决方案,其他
什么是智能体 Harness
Aparna Aparna
ThinkInAI社区
2026年7月10日 08:28 上海
在小说阅读器读本章
去阅读
⬆️关注 ThinkInAI 星科社区,最及时最干货的AI内容分享
上周在一个黑客活动上,有人问我:“到底有没有人能真正说清楚 harness 是什么?”这句话带着很真实的怀疑。那种怀疑的意思是:我们整个行业都在用 “Harness” 这个词,但其实没人真正知道它是什么。
这是个合理的问题。让我试着回答一下。
Harness 不是什么
我非常尊重 @akshay_pachaar(https://x.com/@akshay_pachaar),但我非常不同意他的那篇帖子。我认为他的帖子会让整个行业感到困惑,因为他把 LangGraph 称为 harness。
LangChain 不是 harness。LangGraph 也不是 harness。
这些是为人类构建智能体而设计的框架。它们给你抽象、配置选项,以及大量可以“把自己绕进去”的空间。你把链路连接起来,定义状态图,选择检索器,配置记忆。几十个旋钮。几十种出错方式。
其根本假设是:会有一位人类架构师把这些组件正确地配置好。
Aksay 的帖子:https://x.com/akshay_pachaar/status/2041146899319971922
为了继续拱火,Akshay 引用了 LangChain 团队的话:“If you’re not the model, you’re the harness.”
这到底是什么意思?
这是一个很薄弱的论点,试图用新的 harness 术语来包装早期的 1.0 智能体框架。
Harness 是什么
Harness 是从相反方向出发的。
现代 harness 并不是从抽象自上而下设计出来的。它是从编码智能体中自下而上诞生的,是在用可工作的智能体解决现实世界问题的过程中产生的。Cursor、Claude Code、Windsurf 和 Codex 都是 harness。这些产品一开始面对的是一个具体问题:让 LLM 在真实代码仓库中编写和编辑真实代码。在解决这个问题的过程中,它们各自独立地收敛到了惊人相似的架构。一个调用工具的 while 循环。一个压缩历史的上下文管理器。一个保证安全的权限层。同样的模式,被一次又一次独立发现。过去两年里,我们在构建 Alyx——我们用于 Arize Ax Observability 和 Evals 平台的产品内智能体(也将进入我们的开源项目 Arize Phoenix)——时,也得出了许多类似的架构决策。领域不同,骨架相同。
Harness 架构
有两点让 harness 从根本上不同于框架。
第一,harness 开箱即用。你不是通过配置把一个 harness“配置出来”。它交付时就是一个拥有固定架构的可工作智能体:迭代循环、上下文管理、工具注册表和权限层。所有东西都已经连接好,已经在运行。没有组装步骤。
第二,也是更深层的转变:harness 不是为人类构建智能体而设计的。harness 是为了让智能体完成几乎任何任务而设计的。模型读取指令文件并学习你的项目。它发现可用工具并组合使用它们。它编写自己的技能来扩展自己的能力。当任务变得太大时,它会生成子智能体。人类提供目标。剩下的由 harness 解决。
现代 harness 的组成部分
就像计算机架构在 80 年代走向成熟一样,我们预计 harness 架构会在接下来几年中成熟起来。Harness 1.0 架构的组件包括以下几个方面:
- 外层迭代循环
- 上下文管理与上下文压缩
- 技能/工具管理
- 子智能体管理
- 内置预封装技能
- 会话持久化与恢复
- 系统提示词组装 / 项目上下文注入
- 生命周期钩子
- 权限与安全层
外层迭代循环
现代 harness 的核心架构基础是 while 循环。它的工作方式是:模型根据系统提示词,并基于数据决定要调用哪些工具。它会持续迭代调用工具,直到任务完成。while 循环是 Harness 1.0 架构的核心基础。
核心 While 循环
LLM 会在系统提示词的引导下,寻找可用工具来完成任务。它会把这些工具组合起来,一个工具接一个工具,一次执行接一次执行,直到任务完成。
Harness 的主要核心架构组件,是一个围绕工具循环、试图完成任何任务的循环;而这并不是 LangGraph 背后的核心思想。LangGraph 是一个由人类配置的状态图。
上下文管理与上下文压缩
你如何决定把什么拉入上下文?你如何决定在上下文中简化或压缩什么内容?你如何决定用简化的方式表示大规模数据?这些都属于上下文管理。
上下文管理
其他挑战还包括:如何把数据传递给技能或工具调用,这些技能或工具调用可以访问哪些数据,以及这些技能和工具调用返回的数据如何进入上下文并被使用。
技能/工具管理
技能和工具管理是一组结构,允许团队构建技能、管理可用技能、添加新技能并执行技能。
每个 harness 都会自带一个内置工具注册表:读取文件、编辑文件、运行 shell 命令、搜索代码。这些是基础原语。Harness 需要知道有哪些工具存在,每个工具需要什么权限,以及如何把模型发出的工具调用分派到正确的执行路径。当模型说“我想运行 grep”时,harness 会查找该工具的规格说明,检查权限,执行它,并把结果反馈回上下文。
技能是工具之上的一层。Harness 会从约定好的目录中发现这些技能文件,模型可以按名称调用它们。组织知识就是在这里被编码进去的。工具是通用的。技能则特定于你的团队和工作流。
子智能体管理
到某个时刻,任务会变得对单个对话线程来说太大,或过于并行化。子智能体管理就是 harness 生成在隔离环境中工作的子智能体,并让它们把结果汇报回来的方式。
子智能体管理
每个子智能体都有自己的对话会话、自己受限制的一组工具,以及一个聚焦的系统提示词,说明“你是一个后台智能体,正在处理这个特定任务”。父智能体进行委派,子智能体开展工作,结果通过内存或磁盘上的清单文件返回。关键的架构决策是隔离:子智能体不应该能够破坏父智能体的上下文,也不应该能够运行父智能体未授权的工具。
今天,大多数 harness 以线程形式运行子智能体,并使用隔离会话。明天,我们预计子智能体会运行在完全隔离的沙箱中,甚至运行在不同机器上。不管哪种方式,模式都是一样的:生成、限制、执行、收集结果。
内置预封装技能
每个 harness 都会自带一组开箱即用的基础能力。文件操作(读取、写入、编辑、搜索)。Shell 执行。代码导航(grep、glob、语义搜索)。这些是不可妥协的。如果一个智能体不能读取和编辑文件,它就不是编码智能体。
技能与工具
除了基础原语之外,harness 越来越多地自带更高层级的内置技能:如何创建 git commit,如何创建 pull request,如何运行测试并解释输出。这些是 harness 厂商已经摸索清楚的技能,因此团队不必自己再做一遍。如今,这些内置技能的质量是不同 harness 之间的重要差异化因素。
会话持久化与恢复
一个长时间运行的智能体会话是有状态的。如果进程崩溃,除非 harness 把会话状态持久化到磁盘,否则你会丢失一切。现代 harness 会增量写入会话数据,通常是作为只追加的 JSONL 文件:每条消息、每个工具结果、每次压缩事件都会占一行。这意味着你可以从离开的地方精确恢复会话。
系统提示词组装 / 项目上下文注入
系统提示词是 harness 告诉模型它是谁、它能做什么、它正在处理什么的方式。这不是一个静态字符串。现代 harness 会从多个来源动态组装系统提示词。
系统提示词组装
Harness 会沿着上级目录查找指令文件(例如 CLAUDE.md 或 AGENTS.md),注入当前 git 状态和最近提交,添加环境元数据(操作系统、日期、工作目录),并附加可用工具列表及其权限。所有这些内容都会在字符/token 预算内拼接起来,这样系统提示词不会在对话开始前就撑爆上下文窗口。
生命周期钩子
钩子是 harness 的可扩展接缝。它们允许组织在工具执行前后注入自定义逻辑,而不需要 fork harness 本身。
工具前置钩子会在智能体运行工具之前触发。它接收工具名称和输入,并可以允许、拒绝或修改这次执行。工具后置钩子会在执行后触发,并可以检查结果。钩子通过结构化协议通信:stdin 上的 JSON,以及表示允许/拒绝的退出码。这意味着钩子可以用任何语言编写,并可以执行任意策略:“永远不要运行 rm -rf”,“把所有文件写入记录到我们的审计系统”,“任何触及生产环境的 bash 命令都必须获得批准”。
钩子是企业采用 harness 的方式。Harness 厂商提供架构。钩子让每个组织能够在其之上叠加自己的安全、合规和工作流规则。
权限与安全层
这是决定一个工具是有用还是危险的组件。权限层定义智能体被允许做什么,并在每次工具执行时强制执行这些边界。
权限层
现代 harness 定义了一套权限模式层级:只读、工作区写入和完全访问。每个工具都会声明它所需的最低权限级别。Harness 会在分派时强制执行这一点,也就是在工具真正运行之前。对于 bash 这类工具,harness 甚至会动态分类命令:“ls” 是只读,“rm” 需要完全访问,而 harness 可以通过解析命令字符串来判断这一点。
在静态权限之上,harness 支持交互式审批。在提示模式下,智能体会在执行任何危险操作前暂停,并询问人类“我应该运行这个吗?”配置文件中的声明式允许/拒绝规则让团队能够预授权已知安全的模式,并阻止已知危险的模式。正是这一层,让我们能够把真实工具交给 LLM,同时晚上还能睡得着。
结论
这九个组件不是愿望清单。它们是每一个成功 harness 都独立收敛出来的东西。这种收敛本身就是信号。
更深层的模式在于决策发生在哪里。早期 harness 把一切都硬编码:固定的截断限制、静态权限规则、预先确定的上下文预算。而现在胜出的 harness 会把决策推给模型。不确定上下文中该保留什么?让 LLM 决定。不确定哪些文件重要?让 LLM 搜索。不确定什么时候该压缩?让 LLM 管理自己的记忆。
Harness 提供反馈脚手架,让智能能够与模型配合起来。没有 harness,模型是开环的;有了 harness,模型就可以基于反馈行动、采取操作并扩展自己的技能。它的设计方式是真正可工作的,而原始的 REACT 循环并没有做到这一点。
模型本身只是一个一次性的文本生成器。它回答,然后停止。处于 harness 中的模型可以读取文件、编辑文件、运行测试、看到测试失败、读取错误、修复代码,然后再次运行测试。这个闭环——行动、观察、调整——正是把语言模型变成智能体的东西。Harness 让模型能够基于它所知道的内容采取行动,看到后果,并持续推进,直到问题真正被解决。
加入ThinkInAI社区
#
如果你也对AI充满兴趣,欢迎加入我们的ThinkInAI社区,在这里,你可以:
- 获取最新AI工具资讯
- 参与实战经验分享
- 结识志同道合的伙伴
- 共同探讨AI应用方向
扫描文末二维码,加入ThinkInAI社区,一起拥抱AI新时代!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:ThinkInAI社区 Aparna Aparna《什么是智能体 Harness》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论