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 的技能发现是三阶段方法:
- 搜索索引:模型认识到自己需要一个能力,查询索引。技能搜索比单纯语义搜索更强大,因为它利用企业图信号来排序——基于创建者、使用量等
- 查看候选短列表和轻量描述:索引返回带名称、描述和执行提示的候选短列表。这是模型第一次看到这些能力的任何细节
- 在执行时加载完整 schema:只有当模型提交执行特定技能时,完整 schema 或 skill 定义才进入上下文
在 Glean,Agent 从不需要支付浏览完整能力表面的上下文税。描述只出现在模型主动搜索到的能力上。完整 schema 只出现在它即将执行的那一个上。每一层细节都在 Agent 需要时才披露。
总结:Harness 永远不会停止演进
Glean 的 harness 在扩展和管理上下文方面越来越出色,因为它更分布式了:
- Programmatic tool calling 允许复杂执行逻辑
- Sub-agents 隔离上下文
- Compaction 在卸载上下文时保留任务状态
- Skill discovery 让 Agent 专注于手头任务
每一代新的 AI 在工作场所都暴露了前一代的极限,harness 随之演进扩展,以满足 Agent 日益增长的需求,以及在企业规模下可靠结果所需的上下文。