返回 FEED
AGENT2026-04-30

Harness 是分布式上下文管理系统:Glean 第三代架构复盘

Glean 的 Tony Gentilcore 分享了企业级 Agent harness 设计的四次核心演进。

Harness(围绕模型的执行逻辑)正在整个行业产生显著的长期运行 Agent 性能提升。LangChain 仅通过 harness 改进就提升了 +13.7 分,Vercel 减少 50% 令牌使用量的同时在 3.5 倍更低延迟下实现了更高可靠性。在这些案例里,性能差距来自 harness,不是模型。

背景:为什么 harness 正在被重建

不只是因为模型变得更强大。Harness 被重建是因为我们给 Agent 更多的工作,而更多工作意味着更多上下文。每一个额外的工具调用、技能调用、搜索结果和执行输出都在增加上下文窗口。这正是 Glean 长期面临的挑战——他们的根基是企业搜索,核心问题一直是把庞大的信息空间缩窄到精确的上下文,刚好够准确完成工作。

随着流经 Agent 的工作量和种类增加,上下文管理成为核心工程问题。Harness 本质上是一个分布式上下文管理系统。

Glean 已经到了第三代 harness,每次重建都反映了模型能力、技术和整个企业使用 AI 方式的最新变化。

四次核心演进

1. Programmatic Tool Calling(PTC)

代码正在成为 Agent 的主要执行原语。当工作变得更复杂,Agent 需要迭代结果集、分支条件、过滤和连接数据、排序证据、批量操作和并行化独立步骤。代码比一系列对话式工具调用更自然地表达这种逻辑——在每次轮次中模型都要从聊天历史重新推导它的计划。

Glean 用 PTC 把工作流逻辑移入沙箱执行环境。工具作为 Python 可调用函数暴露,模型写一个小程序,在一个执行而不是几十个对话轮次中检索、过滤、分支、循环、写入磁盘和执行操作。20 个工具调用可以发生在一次沙箱运行里,编排器只看到返回的摘要和结构化元数据。中间数据留在 Python 变量和文件里。

PTC 带来的具体收益:

  • 延迟:独立操作可以在单次代码运行中批量并行化,而不是跨 LLM 轮次序列化
  • 可靠性:循环、过滤器、连接和条件分支在代码中比在脆弱的聊天链中更稳健,模型也有堆栈跟踪可以检查,更容易从错误中恢复
  • 一致性:脚本可以存为 skills,使企业和个人级别的常见任务更容易执行相同的工具调用序列
  • 规模化上下文效率:只有摘要或最终输出返回编排器,不是每个中间产物,这意味着更大的分析、批量操作和需要分页、存储、计算和恢复状态的长时任务变得可行

2. Sub-agents

Sub-agents 对 Glean 的 harness 不新鲜,但 PTC 扩大了它们的规模和可靠性。编排器 Agent 可以写代码来编程式启动并行的 sub-agents。

当编排器 Agent 需要对大量独立项目应用同等水平的分析时,sub-agents 变得尤其强大——比如研究数百个客户或分析数千个支持工单。每个 sub-agent 可以独立执行自己的任务,有自己的上下文窗口和令牌预算,而编排器 Agent 通过 prompt 模板或编程式任务定义提供共享指令。每个 sub-agent 可以专注于上下文和工作而不分心。

这让系统能够规模化可重复推理,而不使单个上下文窗口过载。

3. Compaction(压缩)

Sub-agents 帮助在工作空间上分布任务,但无法解决单个 Agent 内上下文随时间积累的问题。Glean 观察到约 5% 的查询达到了上下文窗口限制。

Compaction 设计的目的是保留对话状态中对持续执行有承重作用的部分:用户意图、到目前为止的决定、失败的方案、计划的下一步,以及最近的高信号工具输出。其他所有内容都被摘要化或移出上下文窗口进入文件系统。目标是创建任务的压缩但语义完整的表示,让 Agent 在多轮之后从中断的地方继续。

两层技术实现:

  • 对话压缩:把早期轮次的原始来回浓缩成用户问了什么、Agent 尝试了什么、什么有效、什么无效、下一步计划
  • 工具输出压缩:大工具输出写入沙箱文件系统的文件,减缩为带文件路径的摘要

Compaction 和 Sub-agents 相互强化:

  • Sub-agents 通过在隔离上下文里保留中间工作,减少编排器看到的无关细节
  • Compaction 处理编排器自己历史中剩余的部分,跨时间保持任务连贯性
  • 一个在空间上管理上下文,一个在时间上管理上下文积累

4. Search-first Skill Discovery

Skills 正在成为打包可复用专业知识的开放标准。这种方法有好处,包括渐进式披露——Agent 预加载技能名称和描述,只在任务真正需要时才获取完整 payload。

Glean 发现,在企业规模下,渐进式披露本身还不够深入。让 Agent 浏览数百个工具或技能,即使每个条目只有一行描述,也会积累噪声。Glean 的方案是在所有 skills 上引入索引,只把相关 skills 加载到上下文。

Glean 的技能发现是三阶段方法:

  1. 搜索索引:模型认识到自己需要一个能力,查询索引。技能搜索比单纯语义搜索更强大,因为它利用企业图信号来排序——基于创建者、使用量等
  2. 查看候选短列表和轻量描述:索引返回带名称、描述和执行提示的候选短列表。这是模型第一次看到这些能力的任何细节
  3. 在执行时加载完整 schema:只有当模型提交执行特定技能时,完整 schema 或 skill 定义才进入上下文

在 Glean,Agent 从不需要支付浏览完整能力表面的上下文税。描述只出现在模型主动搜索到的能力上。完整 schema 只出现在它即将执行的那一个上。每一层细节都在 Agent 需要时才披露。

总结:Harness 永远不会停止演进

Glean 的 harness 在扩展和管理上下文方面越来越出色,因为它更分布式了:

  • Programmatic tool calling 允许复杂执行逻辑
  • Sub-agents 隔离上下文
  • Compaction 在卸载上下文时保留任务状态
  • Skill discovery 让 Agent 专注于手头任务

每一代新的 AI 在工作场所都暴露了前一代的极限,harness 随之演进扩展,以满足 Agent 日益增长的需求,以及在企业规模下可靠结果所需的上下文。