← 文章 / AI技术
AI大模型观察站 4小时前 · 2026-09-26 13:13:41 · 4 阅读

AgentHarness 完整指南:AIAgent的基础设施层如何工作

关于理解 Agent Harness,基本上这篇文章涵盖了你需要知道的一切!

早在 2023 年我们开始与 LLM 交互时,一切都很简单。我们只需要提出问题,然后得到答案。像我这样的程序员通常会提出这样的问题:“用 Python 编写一个对数字数组进行排序的函数”。我们几乎可以实时得到答案,而模型也不会进入_思考_模式!因为当时的模型只是基础的 LLM,还没有如今 agentic 系统中的各种复杂能力。

我们在 2023 年开始使用 LLM 时的基础示例。

我所说的各种复杂能力,指的是 tools、memory、skills 以及更多在 2026 年已经不可或缺的能力。正是这些附加组件,让一个简单的 LLM 变成了 AI agent。

一边是 Agentic 竞赛

在 2023 年和 2024 年,竞争的焦点是模型。OpenAI 拥有最优秀的通用模型之一,而 Anthropic 则拥有最优秀的 coding 模型之一。竞争者不断构建模型,以在 MMLU、SWE-bench 等标准 benchmark 中击败其他模型。

模型竞赛开始趋于饱和,reasoning 和 context 等能力开始出现。当我们提出问题时,聊天 UI 中开始出现类似“thinking...”的提示。人们开始好奇,当 UI 中出现“thinking...”时,底层究竟发生了什么。

Agent 竞赛开始了……

另一边是用户的野心

随着模型变得更加复杂,我们作为用户也变得更加有野心。我们不再只是提出问题,而是开始分配任务。为了回答用户的问题,这些任务需要 agent 设定目标、使用 browser 等外部工具、从 memory 中回忆过去的对话和事实,以及执行更多操作。

我至今仍清楚地记得,自己曾经截取 Amazon landing page 的屏幕截图,将其作为输入提供给一个 coding model,并要求它构建一个模仿该截图的网站(一次完成全部工作)!它确实生成了一个相似的 UI,但想象一下,一个用户实际上希望 UI、backend、infrastructure 以及周边的一切都能一次性完成配置。

这就是我们在 2026 年所处的位置!

所以如今,我会输入这样的 prompt:“解决 GitHub issue #122 中报告的 bug”。这样的 prompt 要求 LLM 执行更多操作。这个看似简单的 prompt 中其实包含了多个步骤。2023 年的 LLM 可能会回答:“抱歉,我无法访问你的 GitHub repo。”

随着用户变得更有野心,prompt 正逐渐变成任务。我们需要复杂的 agent 来应对用户的需求。

然而,一个拥有良好 Agent Harness 的 LLM 则会进入_思考_模式。它会经历 reasoning → planning → choose tool/action → execute tool → observe result → repeat or stop。

我明白了,但 Agent Harness 到底是什么?

如果我们在 LLM 外围封装了 context、tools、memory 等如此多的附加组件,那么就应该有一种高效的方式来_工程化_这些组件与 LLM 的交互。而 Agent Harness 就是对这种机制的称呼。正式定义如下:

Agent harness 是包裹、控制、测试、监控和评估 AI agent 的基础设施层。

简单来说,它就是围绕 LLM 构建的“操作系统”。

作为包裹在 LLM 外围的基础设施层,harness 由 agent architecture、用于编排 harness 内多个 sub-agent 的 orchestration framework、用于评估 agent 输出的 evaluation system、runtime infrastructure、security、governance,以及最后但同样重要的 observability 组成。

为什么需要 agent harness?

随着我们为 AI agent 设定越来越大的目标,AI agent 执行这些任务所需的时间也在不断增加。下面这张来自 Anthropic 的有趣图表清楚地说明了这一点。

Anthropic 的数据显示,agent 的执行时间正在呈指数增长!

就在 2025 年,也就是一年前,agent 执行一项给定任务通常需要大约一小时。但如今,这个时间已经徘徊在 12 小时左右!这些 long-horizon 任务会带来一些问题。它们可能无限循环、幻觉式地调用工具、破坏 agent state、超出 token budget、丢失 context、重试错误操作、静默失败、滥用权限,甚至忘记目标。

这些都是代价高昂的问题。想象一下,一个 AI agent 进入了 12 小时的无限循环。这个循环消耗的 token 和 compute 将会非常庞大。我们可以在 harness 中为任意给定任务设置 budget,从而解决这个问题!这个 budget 可以是时间、token 或 compute budget。

更严重的是安全问题。想象一下,LLM 选择使用了一个具有破坏性的工具,例如删除文件系统中所有文件的工具。通过 harness,我们可以对 LLM 能够访问的内容进行细粒度控制!

简而言之,正是 harness 让你能够控制 agent,从而让你确信 agent 正在执行你希望它执行的操作!

Agent harness 的组件

无论我们如何称呼一个 harness,它都应该属于以下组件之一。

  • Agent state。 回答这样的问题:我现在在哪里? 它会跟踪当前任务、步骤、观察结果、决策等信息。例如,如果 agent 的计划中包含 4 个步骤来完成某个目标,那么 state 会跟踪哪些步骤已经完成、当前状态是什么,以及还有哪些工作需要完成。

  • Tools。 回答这样的问题:我能做什么? 它为 agent 提供 code execution、browser、APIs、databases、shell 等能力。在所有组件中,tools 是最直观的组件。例如,对于 coding agent 而言,read_file function 可以是最基本的工具之一。

  • Planning。 回答这样的问题:我应该做什么? 它决定_接下来应该发生什么_,并创建或修订计划。在 coding task 中,planning component 可以提出一个包含 4–5 个步骤的序列,这些步骤需要按顺序完成,才能结束任务。

  • Memory。 回答这样的问题:我知道或记得什么? 它会跨步骤或 session 存储和检索信息。每当我们从 Vector DB 中检索一些信息并放入 context 时,可能都值得对这些内容进行总结,以优化 context,进而优化 working memory。这些工作需要由 harness 的 memory component 负责管理。

  • Orchestration。 回答这样的问题:_我该如何执行这个过程?_它控制 execution loop、tool calls、retries、sub-agents、parallelism、handoffs 等。例如,假设 agent 正在处理一个购买任务。可以调用一个 payment sub-agent,同时由 inventory agent 并行执行更新库存等其余操作。或者,inventory agent 也可以在 payment agent 成功完成任务后,按照顺序执行。

  • Context Management。 回答这样的问题:LLM 现在应该看到什么? **** 它决定在每个步骤中将哪些信息放入 LLM 的 context window。

  • Safety & Governance。 回答这样的问题:我被允许做什么? Permissions、sandboxing、approval gates、policies、limits、authentication 等都属于这一组件。即使模型可以使用一个非常强大的工具,它究竟能够执行到什么程度?例如,即使允许模型在 coding task 中编辑文件,也应该确保它不能删除文件系统中的全部或部分文件。

  • Observability & Evaluation。 回答这样的问题:它真的成功了吗?它会追踪发生了什么,并衡量 agent 是成功、失败,还是违反了约束。模型完成给定任务所付出的各种代价都会在 observability 中被跟踪。例如,模型可能只需要使用 10 个工具中的 3 个就能完成任务。跟踪这些工具的使用方式是有价值的。如果它们失败了,原因是模型缺少其工具集合中的某些工具,还是因为 context 中缺少某些数据?

而 harness engineering 则是一门新兴学科,研究如何设计、实现和执行上述组件,使 agent 发挥最佳表现。

一个实际的 coding agent 示例

现在我们已经了解了不同的组件,接下来看看这些组件如何在一个简单的 coding task 中相互交互。

假设我们已经为一个 coding agent 实现了 harness。用户发送了以下 prompt:

解决 github issue #122 中的 bug

请注意,这并不是一个简单的“向我解释……”类型的 prompt,而是真正的任务。要完成这个任务,我们需要 planning、tool use、memory 以及更多 agentic 能力。

下面是实现该 harness 的一种合理方式:

  • 首先,用户的输入会进入 context。模型开始进行 reasoning,并提出一个目标。在目标完成之前,它会一直保留在 context 中。

  • 然后,它决定对任务的执行进行“plan”。它提出了如下计划:检查相关 bug、修复正确的文件、编译并测试、运行 test cases,以及更新 memory。

  • 在执行的第一步中,harness 会从 Vector DB 中检索一些 memory,其中包含与当前任务相关的历史 bug 详情。它找到与 authentication 相关的信息,并将其作为最匹配的结果放入 context。

  • 然后,模型利用 context 中的信息,决定退出 auth.py 文件以修复 authentication bug。不过,这需要使用 read_file 和 write_file tools。模型使用这些 tools 编辑文件并保存。

  • 模型决定通过 terminal 测试代码变更。现在需要使用 terminal tool,而该工具位于模型可用的 tools 集合中。(harness 确保模型拥有访问 terminal 和文件的适当权限)

  • 模型继续执行计划中的下一步,并运行 test cases。为此,它需要访问更多 tools。此外还要注意,整个过程中每一步都会更新 context,以确保模型能够跟踪当前所在位置以及剩余的工作。

  • 在整个过程中,observability component 会确保所有内容都被记录下来。日志包括所使用的 tools、任务耗时、使用的 memory、中途发生的任何失败等。

  • 请注意,我们还没有涉及 evaluation,而 evaluation 本身就是一个庞大的主题。它不只是衡量准确性,还可以根据 agent 的实际行为涵盖多个指标。

那么,我们将走向何方?

如今 agentic AI 面临的最大挑战之一是 long-horizon reliability。随着运行数小时、甚至数天的 agent 成为现实,我们需要确保运行过程绝对可靠。如果 agent 陷入无限循环或进入某种损坏的 state,我们最终可能会浪费资源并危及安全。

接下来,随着我们围绕模型构建更加复杂的 harness,evaluation 也会变得相当困难。每项任务都会留下包含大量数据的 traces,例如使用的 memory;我是否应该更换模型,还是改进 harness?我是否应该添加更多 tools,还是修复现有 tools?

随着社区积极构建复杂的 harness,这些问题正在不断出现。

让我们拭目以待,看看接下来会走向何方。下一篇文章再见……




原始来源: AI大模型观察站

评论 (0)