Recursive Agent Harnesses:将代码优先的 Agent 递归推向长上下文推理
- 关联论文:2606.13643
- 作者:Tom
- 更新:2026-07-22
一句话结论
RAH 将递归 LLM(RLM)中"模型调用递归"拓展为"完整 Agent harness 递归"——父 Agent 生成并运行可执行脚本,脚本内并行 spawn 子 Agent harness,在 Oolong-Synthetic 上以 GPT-5 为 backbone 将基线从 71.75% 提升至 81.36%,用更强的 backbone(Claude Sonnet 4.5)更进一步达到 89.77%。
解决什么真问题
长上下文推理(long-context reasoning)是当前 LLM 能力的一个关键瓶颈:当上下文长度超过一定阈值( often 128K–1M tokens)后,模型性能普遍下降,且计算成本急剧上升。
两条独立的研究路线试图解决这个问题:
- Recursive Language Models(RLM):通过在模型调用层面实现递归——让 LLM 生成"继续思考"的特殊 token,触发下一轮模型调用,形成链式递归。核心递归单元是单个模型调用(无工具)。
- 生产级 Coding Agent(如 Anthropic Claude 的 Workflows):在代码中直接 spawn 子 agent 处理子任务,递归粒度是完整 Agent(含工具)。
这两条路线在各自的维度上有效,但存在一个中间地带未被充分研究:如果递归单元不是"裸模型调用"也不是"完整应用层 Agent",而是"具备文件系统、代码执行和规划能力的 Agent harness",效果如何?
RAH 正是对这一问题的系统性命名与研究。
核心方法
概念命名:Harness Recursion
论文将 RLM 的"模型调用递归"扩展为harness recursion——其递归单元是一个完整的 Agent harness,包含:
- 文件系统工具(读/写文件)
- 代码执行工具(运行脚本、获取输出)
- 规划能力(子目标分解、任务调度)
父 Agent 生成一个可执行脚本,该脚本负责在运行时动态创建和调度子 Agent harness:
Parent Agent
↓ 生成
Executable Script (spawns sub-harnesses in parallel)
↓
Sub-harness 1 (fine-grained sub-task A)
Sub-harness 2 (fine-grained sub-task B)
↓ results
Parent Agent (aggregates + continues)
与 RLM 的关键区别
| 维度 | RLM | RAH |
|---|---|---|
| 递归单元 | 单个 LLM call(无工具) | 完整 Agent harness(含工具) |
| 并行化 | 主要链式 | 主要并行(parallel sub-harnesses) |
| 粒度 | 模型调用级 | 工作流级(workload-level) |
| 适用任务 | 长链推理(逻辑链) | 多路并行推理(分支探索) |
工作负载分配策略
RAH 的设计哲学是:让父 Agent 做高层次的规划与合成,子 harness 做细粒度的执行。
- 小而多的子任务:通过结构化 function calling 分配给子 harness;
- 大而独立的并行任务:spawn 多个子 harness 实例并行处理,利用硬件并行性;
- 结果汇总:子 harness 的输出由父 Agent 汇总,形成最终答案。
关键实验与数据
评测基准:Oolong-Synthetic(199 samples,13 个 context-length bucket,最高至 4M tokens)
评测设置:backbone 模型固定,公平比较 harness 设计本身带来的增益。
| Backbone | Baseline | RAH | Gain |
|---|---|---|---|
| GPT-5 | 71.75% | 81.36% | +9.61 pp |
| Claude Sonnet 4.5 | 原文未给出基线 | 89.77% | — |
关键claim:增益完全来自 harness 设计本身,而非来自更强的基础模型(backbone 在所有配置中保持一致)。
⚠️ 原文未明确:Oolong-Synthetic 的具体任务类型(是 synthetic 推理还是真实长文档 QA?)、Claude Sonnet 4.5 的 baseline 数字、以及 RAH 在其他标准 benchmarks(如 RULER、InfiniteBench)上的结果。
亮点与局限
亮点
- 概念创新:首次命名并系统研究了"harness recursion"这一中间粒度——它填补了"模型调用递归"与"应用层 Agent 递归"之间的空白;
- 实验控制严谨:明确将模型能力与 harness 设计解耦,证明了 harness 本身的价值;
- 揭示了 scaling 方向:在更强的 backbone(Claude Sonnet 4.5)上,RAH 设计依然有效,表明该架构具有可扩展性;
- 并行化优势明确:多路并行 harness 的设计对 GPU 利用率和延迟都有正向价值。
局限
- 评测范围有限:仅在 Oolong-Synthetic 一个 synthetic benchmark 上验证,缺乏在真实长上下文任务(如长文档问答、代码库分析)上的结果;
- 子 harness 之间的协调机制未深入:当子 harness 的结果相互冲突时,父 Agent 如何裁决?论文未充分讨论;
- 开销分析缺失:并行 spawn 多个 harness 的计算开销是否值得?论文未与串行方案做 cost-performance 权衡分析;
- 通用性待验证:RAH 在 coding agent 场景优势明显,但对于非代码类任务(如纯文本推理)的适用性尚未充分探索;
- 归属问题:Oolong 基准由本文提出,官方数字由 RAH 论文给出,存在一定自评风险,需独立复现。
对工程落地的启发
适合哪些团队:
- 正在构建复杂代码生成/分析 Agent(如自动化测试生成、代码审查、PR 分析)的团队;
- 需要处理超长上下文(>1M tokens)的 agent 系统开发者;
- 关注多路并行推理以降低延迟的在线服务团队。
可借鉴的设计思路:
- 父子分工的 Agent 架构:父 Agent 专注高层规划,子 Agent 专注细粒度执行,这是复杂任务分解的自然延伸;
- Harness 作为一等公民:不只考虑"用哪个 LLM",而是考虑"用哪个 harness 配置"——工具集、执行环境的差异对性能有显著影响;
- Synthetic benchmark 的价值:Oolong-Synthetic 通过控制 context length buckets,系统性地揭示了长上下文场景下的问题分布,这套方法论值得借鉴。
待验证的工程假设:
- 子 harness 数量 vs. 任务质量的拐点(多少个并行 harness 是最优的);
- 不同工具集配置(有无代码执行、有无文件访问)对 harness 递归效果的影响;
- RAH 在生产环境中的延迟和成本是否可接受。
与同方向工作的关系
| 工作 | 与 RAH 的关系 |
|---|---|
| Recursive Language Models (RLM) | RAH 将 RLM 的"model recursion"扩展为"harness recursion",是后者的代码优先版本 |
| Anthropic Claude Workflows | 同样是生产级 agent 递归,但 RAH 提供了系统性的框架和分析 |
| Code Agent (Claude Agent, GPT Agent) | RAH 在这些系统的基础上研究了 sub-agent 并行化问题 |
| Long-context LLMs (Gemini, GPT-4o) | RAH 提供了一种在模型能力受限情况下的工程解决方案, orthogonal to 模型侧的长上下文优化 |
| Tree-of-Thought (ToT) | ToT 通过显式树结构探索解空间,RAH 通过 harness 递归实现类似的探索能力,但机制不同 |
适合谁读
- Agent 系统工程师:正在设计复杂多步任务的多层分解方案,RAH 提供了父子 harness 分工的具体框架;
- LLM 推理效率研究者:关注如何在不无限扩展上下文窗口的前提下提升超长任务性能;
- Coding Agent 开发者:Anthropic/Claude Workflows 的用户或竞品开发者,理解 RAH 有助于更好地设计 sub-agent 架构;
- Benchmark 设计者:Oolong-Synthetic 的设计方法论(context-length bucketing)值得参考。
前置知识:需要熟悉 LLM Agent 的基本架构(工具调用、ReAct)、Recursive Language Models 的基本概念、以及长上下文推理的主要挑战。
工程落地与核查(Jay)
事实核查
- "Claude Sonnet 4.5"模型名称存疑:Anthropic 历史上最新正式版 Sonnet 为 Claude 3.5 Sonnet(2024 年中),并无"Claude Sonnet 4.5"正式发布。若原文如此,此处为 AI 幻觉或未公开的预发布版本,引用时须注明"⚠️ 模型名称待核实"。
- GPT-5 名称存疑:截至 2026 年中,OpenAI 正式发布的 GPT 系列为 GPT-4o / GPT-4o-mini,"GPT-5"尚未正式发布。若原文如此,需标注"⚠️ 基座模型名称待核实,可能是内测代号"。
- Oolong-Synthetic benchmark 任务类型未披露:原文仅给出样本数和 bucket 分布,具体任务是 synthetic 推理题还是真实长文档 QA 尚不明确,影响对实验结论泛化性的判断。
- Claude Sonnet 4.5 baseline 缺失:89.77% 的绝对值在无 baseline 对照的情况下无法判断提升幅度,⚠️ 原文未给出该模型的 baseline 数字(原文用"原文未给出基线"标注,已诚实)。
实际系统怎么用
实现 RAH 的最小可行架构(基于论文描述推断):
User Query / Long Document
→ Parent Agent(规划 + 脚本生成)
→ Sub-Harness Pool(并行执行)
→ Harness A:文件系统读 + 代码执行
→ Harness B:文件系统读 + 代码执行
→ Harness C:代码执行 + 结果汇总
→ Parent Agent(结果合成 + 响应)
工程框架选择:
- OpenAI Agents SDK:handoffs API 支持子 Agent 并行 spawn,适合快速复现;
- LangGraph:更细粒度的状态机控制,适合复杂协调逻辑;
- 自定义 Python orchestration:最灵活,需自行处理进程管理、超时、和上下文注入。
核心依赖: - LLM API(支持 function calling / tool use); - 代码执行沙箱(Docker container 或 VM isolation,防止恶意脚本); - 文件系统隔离(子 harness 只能访问授权路径); - 并发任务队列(Celery / asyncio + ThreadPoolExecutor)。
坑在哪
坑 1:上下文窗口污染 父 Agent 生成的可执行脚本本身占用上下文 token 数,当子 harness 数量增加时,脚本体积也增加。若用 JSON / Python 脚本作为媒介,需限制脚本最大行数(建议 ≤200 行)。
坑 2:子 harness 结果冲突无自动裁决 当多个子 harness 返回矛盾结论时(如代码分析的两个 harness 对同一个 bug 给出不同解释),父 Agent 需要有能力判断而非简单投票。论文未给出具体机制,这是生产部署的最大空白。
坑 3:并行度的资源非线性 并行 spawn N 个 harness,内存占用约为 N × 单 harness 上下文。4M token 上下文 + 4 个并行 harness = 约 16M token 等效上下文。⚠️ 建议基准测试:2/4/8 个并行 harness 的端到端延迟和 GPU 显存曲线,找到质量-成本拐点。
坑 4:超时与部分失败 子 harness 超时或崩溃时,父 Agent 如何降级?论文未讨论。需要为每个子 harness 设置独立超时(建议 30s-2min),并设计 fallback 策略(用父 Agent 自身的结果或仅用已返回的结果继续)。
坑 5:沙箱安全 子 harness 执行用户提供的代码存在安全风险。必须用 Docker 或 gVisor 隔离运行环境,限制网络访问、文件系统写权限和进程数。
坑 6:成本不可控 并行 harness 的成本是串行的 N 倍。若子 harness 之间有重复计算(如都加载相同上下文),可用向量数据库预先过滤或使用 KV cache 复用。
评估结论
RAH 框架的工程可行性中等偏高(基于现有 Agent 框架可快速复现),但核心挑战在于子 harness 协调机制缺失(生产环境最大风险)和开销-质量权衡未量化(采购决策缺乏数据支撑)。建议先在代码审查 / PR 分析两个场景做 POC,监控并行 harness 数量 vs. 准确率曲线,再决定是否扩展到其他任务类型。