Recursive Best-of-N Delegation
Nikola Balic (@nibzard)· emerging
问题
递归委托(父Agent→子Agent→孙Agent)非常适合拆解大型任务,但它存在一种失效模式:
- 单个子Agent的劣质结果会影响父Agent的后续步骤(如错误假设、遗漏文件、不合格补丁)
- 错误会沿委托树向上累积:“一片坏叶子”就能打乱整个任务推进流程
- 当某个节点存在不确定性时,纯递归还会未充分利用并行性:我们真正需要的是在模糊点所在的位置直接进行多次尝试
与此同时,“N选优”并行尝试有助于提升可靠性,但如果缺乏结构化设计,它会因反复解决完全相同的问题而非拆解问题,从而浪费计算资源。
方案
在递归Agent树的每个节点,在进一步扩展前,为当前子任务执行**N选优(best-of-N)**流程:
- 分解:父节点将任务拆分为子任务(与常规递归委托逻辑一致)
- 子任务的并行候选执行:针对每个子任务,在隔离沙箱中生成K个候选Worker(典型取值为K=2-5)
- 候选评分:使用整合了以下两类维度的评判器:
- 自动化信号(测试、代码检查、退出码、差异大小、运行时数据)
- LLM评判准则(正确性、约束合规性、简洁性)
- 选择与固化:挑选排名靠前的候选结果作为该子任务的“标准”结果
- 不确定性升级处理:若评判器的置信度较低(或候选结果存在分歧),则执行以下操作之一:
- 提升该子任务的K值,或
- 生成一个专注型“调查员”子Agent,收集缺失的事实信息后重新执行选择流程
- 向上聚合:父节点整合所有选中的结果,继续递归流程
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长上下文推理阶段缩放能力的研究论文,以及子智能体衍生、集群迁移、自评估循环等智能体协作相关技术模式。
来源摘要
正在获取来源并生成中文摘要…