黄一航
← 全部项目

Sprout — 会自己生长的 Multi-Agent 任务树

MIT 开源框架,独立设计:大任务被 token 上限卡住时,让 Agent 自己分裂成任务树;同题从 25 分提升到 100 分。

PythonasynciolitellmMulti-Agent递归任务分解

做成什么

MIT 开源 · 24 个单元测试覆盖核心模块

状态

受限 token 预算下:单 Agent 25 分 vs Sprout 100 分

对照实验

突破单次 LLM 调用的 token 预算瓶颈

核心价值

问题

预设角色的 Multi-Agent 编排(固定的 researcher / writer / reviewer)适应不了任务的真实形状;单 Agent 又被单次 LLM 调用的 token 与注意力瓶颈卡死——需要让分工结构从任务本身长出来。

做法

核心不是让 AI 更快,而是让大任务不被一次调用的长度上限卡死。Sprout 用树形递归架构:analyze() 先判断要不要拆,execute() 再执行;父节点为每个子任务生成方法论并注入子 Agent 的 system prompt,让角色从任务中涌现;慢分支超过兄弟节点约 2.5× 时取消重拆;再用 max_depth / max_children / max_total_nodes / max_total_tokens 四重上限防止任务树失控。

AI 在这个项目里的角色

框架本身就是 Multi-Agent 工程:分裂决策、straggler 检测、结果汇聚、安全边界全部独立设计——回答「Multi-Agent 到底解决什么问题」的一手实验。

为什么做它

主流 Multi-Agent 编排是「预设角色」:先定好 researcher / writer / reviewer,再把任务塞进去。但任务的真实形状千差万别——预设结构经常不合身。Sprout 反过来:结构不预设,让每个 Agent 拿到任务后自己决定要不要分裂、怎么分裂,任务树递归生长,深度由任务决定。

四个核心设计

1. 两阶段 Worker。 analyze() 用轻量调用先判断「要不要拆」,execute() 再做实际工作。分析与执行分离,分裂决策更准,也更省 token。

2. Approach 注入。 父节点分裂时为每个子任务生成方法论与关注点,注入子 Agent 的 system prompt——子 Agent 的「角色」从任务中涌现,而非人工预设。

3. Straggler 处理。 某个分支耗时显著异常(例如 2.5× 于兄弟节点)就取消并重新拆分。节点做完就死,结果向上汇聚到父节点。

4. 安全边界。 max_depth · max_children · max_total_nodes · max_total_tokens 四重上限防止树爆炸;24 个单元测试覆盖核心模块。

对照实验

受限 token 预算下同一任务:单 Agent 25 分,Sprout 100 分。结论:Sprout 的核心价值不是并行加速,而是突破单次 LLM 调用的 token 预算瓶颈——每个节点都有完整的上下文预算去做自己那一小块事。

链接