Recursive Best-of-N Delegation

Nikola Balic (@nibzard)· emerging

问题

递归委托(父Agent→子Agent→孙Agent)非常适合拆解大型任务,但它存在一种失效模式:

  • 单个子Agent的劣质结果会影响父Agent的后续步骤(如错误假设、遗漏文件、不合格补丁)
  • 错误会沿委托树向上累积:“一片坏叶子”就能打乱整个任务推进流程
  • 当某个节点存在不确定性时,纯递归还会未充分利用并行性:我们真正需要的是在模糊点所在的位置直接进行多次尝试

与此同时,“N选优”并行尝试有助于提升可靠性,但如果缺乏结构化设计,它会因反复解决完全相同的问题而非拆解问题,从而浪费计算资源。

方案

递归Agent树每个节点,在进一步扩展前,为当前子任务执行**N选优(best-of-N)**流程:

  1. 分解:父节点将任务拆分为子任务(与常规递归委托逻辑一致)
  2. 子任务的并行候选执行:针对每个子任务,在隔离沙箱中生成K个候选Worker(典型取值为K=2-5)
  3. 候选评分:使用整合了以下两类维度的评判器:
    • 自动化信号(测试、代码检查、退出码、差异大小、运行时数据)
    • LLM评判准则(正确性、约束合规性、简洁性)
  4. 选择与固化:挑选排名靠前的候选结果作为该子任务的“标准”结果
  5. 不确定性升级处理:若评判器的置信度较低(或候选结果存在分歧),则执行以下操作之一:
    • 提升该子任务的K值,或
    • 生成一个专注型“调查员”子Agent,收集缺失的事实信息后重新执行选择流程
  6. 向上聚合:父节点整合所有选中的结果,继续递归流程
flowchart TD
    A[父级任务] --> B[分解为子任务]
    B --> C1[子任务1]
    B --> C2[子任务2]

    C1 --> D1[Worker 1a]
    C1 --> D2[Worker 1b]
    C1 --> D3[Worker 1c]
    D1 --> J1[评判器 + 测试]
    D2 --> J1
    D3 --> J1
    J1 --> S1[选择最优结果1]

    C2 --> E1[Worker 2a]
    C2 --> E2[Worker 2b]
    E1 --> J2[评判器 + 测试]
    E2 --> J2
    J2 --> S2[选择最优结果2]

    S1 --> Z[聚合结果 + 继续递归]
    S2 --> Z

如何使用

最适用于以下场景的任务:

  • 子任务可分片,但每个分片可能存在难点(API使用不明确、仓库专属约定)
  • 可低成本评估输出结果(单元测试、类型检查、代码静态检查、黄金文件)
  • “一步出错”的代价极高(迁移差异、安全敏感型变更、大规模重构)

实用默认规则:

  • 多数子任务初始设置K=2
  • 仅在“高不确定性”节点(评估者信心不足、输出结果冲突、测试失败)时,将K值提升至K=5
  • 明确评分准则:“必须通过测试;差异最小化;不新增依赖项;遵循代码风格指南”

权衡

优点:

  • 比单次递归的鲁棒性更强:局部不确定性场景可获得额外尝试机会
  • 计算资源投放精准:仅将K次计算资源用在关键环节,而非全局铺开
  • 可与沙箱执行(sandboxed execution)和基于补丁的工作流自然适配

缺点:

  • 编排复杂度更高,涉及判断模块、评分机制、置信度阈值等环节
  • 过度使用K会导致成本增加、延迟升高
  • 判断模块的性能会成为瓶颈;应尽可能补充客观校验步骤

参考文献

关键词

涵盖Labruno并行沙箱与大语言模型(LLM)裁判遴选最优实现的技术工具及视频讲解、Daytona递归语言模型(RLM)的沙箱化递归委托实践指南、RLM长上下文推理阶段缩放能力的研究论文,以及子智能体衍生、集群迁移、自评估循环等智能体协作相关技术模式。

来源摘要

正在获取来源并生成中文摘要…

来源: https://github.com/nibzard/labruno-agent

← 返回社区