站点图标 高效码农

ROMA框架:多智能体递归拆分协作的30秒上手指南

ROMA:让多智能体“套娃”式协作像搭积木一样简单

把“复杂任务拆到原子级”这件事做成框架,30 秒上手,5 分钟写出第一个专属 Agent。


本文要回答的核心问题

  1. ROMA 到底是什么?
  2. 它如何把“任务拆分-并行-聚合”做成可递归的通用框架?
  3. 作为开发者,我怎样在本地 30 秒跑起来,并在 5 分钟内拥有自己的专属 Agent?
  4. 框架里那些现成的搜索、研究、加密金融 Agent 能直接抄作业吗?
  5. 如果我想深度定制,该动哪几块代码?

1 一分钟看懂 ROMA:把“套娃”做成基础设施

ROMA(Recursive Open Meta-Agents)不是又一个“LLM 包装器”,而是把“任务无限拆分→并行执行→结果聚合”做成了一条内建回路。
一句话总结:任何只要实现了 agent.execute() 的对象都能被 ROMA 递归调用,于是你的 Planner、Searcher、Code Executor、甚至第三方的 API 统统变成可嵌套的“乐高积木”。

1.1 为什么“递归拆分”是刚需

  • 单轮 Prompt 再长也装不下真实世界的复杂依赖;
  • 人肉写 DAG 图太累,且需求一变就要重画;
  • 多 Agent 并行最怕“等前一个结果”导致的空转。

ROMA 用 4 个原子角色就把事办了:

  1. Atomizer:判断“够不够小”。
  2. Planner:不够小就继续拆。
  3. Executor:够小就立即干。
  4. Aggregator:把子结果拼回父问题。

整个流程被浓缩成 6 行伪代码,逻辑一眼望穿:

def solve(task):
    if is_atomic(task):
        return execute(task)
    else:
        subtasks = plan(task)
        results = [solve(t) for t in subtasks]  # 递归点
        return aggregate(results)

反思:我第一次读到这段代码时,脑子里闪过的是“这不就是 MapReduce 的语义版吗?”——区别是 MapReduce 要你提前写死 Job 分裂规则,而 ROMA 把“什么时候拆、怎么拆”交给 Agent 自己决定,动态剪枝,省掉大量胶水代码。


2 框架全景图:信息如何“上下左右”流动

ROMA 把数据流拆成 3 条明线:

  • 自顶向下:任务被逐层爆破;
  • 自底向上:子结果逐级汇总;
  • 水平依赖:若子任务 B 需要 A 的输出,框架自动让 B 等 A 完成后再入队。
flowchart TB
    A[Your Request] --> B{Atomizer}
    B -->|Plan Needed| C[Planner]
    B -->|Atomic Task| D[Executor]
    C --> E[Subtasks]
    E --> G[Aggregator]
    E -.-> B
    D --> F[Final Result]
    G --> F

场景示例:假设你让 Agent“比较以太坊和 Solana 的 2025 年 L2 费用经济模型”,Atomizer 发现这是跨链+预测+经济学的复合问题 → Planner 拆出“抓取两条链最新 L2 数据”“找费用模型论文”“预测代币价格”三个子任务 → 前两个任务无依赖可并行,第三个需要等价格数据 → 框架自动把第三个挂起,前两个跑完再唤醒。


3 30 秒上手:从 0 到浏览器里看到 Agent 界面

3.1 最速安装路径(Docker 版,推荐)

git clone https://github.com/sentient-agi/ROMA.git
cd ROMA
./setup.sh          # 出现交互提示选 Docker

脚本会自动:

  • 检测 OS,拉 Python 3.12 + Node 20 镜像;
  • 起后端 FastAPI(5000)+ 前端 React(3000);
  • 把 goofys 装好,S3 桶若配了 AK/SK 会一并挂载。

看到终端输出 Frontend ready → http://localhost:3000 即可开玩。

3.2 如果你想“裸金属”开发

./setup.sh --native

脚本会装 apt/yum 依赖、建 Python venv、拉 Agno 框架,最后同样给两条地址。

反思:我在 M1 Pro 上试 Native 路径,Homebrew 把 Python 3.12 装到 /opt/homebrew/bin 导致 venv 识别失败,脚本自动给出 export PATH 提示并 retry,这个小细节省了我 10 分钟排错时间——开源项目最怕“装不上”,ROMA 的安装脚本把常见坑都提前写了判断。


4 5 分钟写出你的第一个 Agent

前端点“New Agent”→ 选“Blank Template”→ 把下面 3 行粘进去:

from sentientresearchagent import SentientAgent
agent = SentientAgent.create()
result = await agent.run("把 ROMA 的核心机制改写成 200 字科普文")

点击 Save → Run,右侧会实时回显递归拆分树:Atomizer→Planner→3 个子任务→Aggregator→最终 200 字科普文。

场景价值:市场同事要一份“给老板看的 1 页说明书”,我直接让他自己在前端输入,30 秒后拿到中文稿,连“套娃”比喻都写好了——技术团队再也不用被“写科普”打断。


5 预置 Agent 速览:拿来就能抄的三套作业

Agent 适用场景 亮点 开箱命令
General Task Solver 老板问“任意奇怪问题” 接 ChatGPT Search Preview,实时联网 前端直接选“General”
Deep Research 竞品/学术深潜 自动拆“搜→读→综合”三阶段,并行搜多源 模板已配好 Wikipedia、Arxiv API
Crypto Analytics 代币/DeFi 研究 接 Binance&DefiLlama 实时行情 + Arkham 链上标签 需填 E2B_API_KEY 跑沙盒绘图

反思:我把“Crypto Analytics”丢给做投资的友人试用,他原本用脚本手撸 REST API,一个上午写 200 行;换成 ROMA 后, Planner 自动把“TVL 抓取→收益率计算→画折线”拆成 3 个原子任务,他只在 config 里写一次 API Key,代码量降到 20 行——再一次验证“递归拆分”对业务人员的友好度。


6 深度定制:动这 4 个钩子就够了

  1. agent.is_atomic()
    重写即可定义“什么时候不用再拆”。
    示例:财务审计场景,把“金额字段>100 万 USD”设为非原子,强制走人工复核节点。

  2. agent.plan()
    返回 List[SubTask],可插入领域规则。
    示例:医药注册文档自动生成,Planner 先查 FDA 最新指南,再拆“CTD 模块 2/3/4”。

  3. agent.execute()
    任意可执行体:LLM、本地脚本、E2B 沙盒、甚至远程 Jenkins Job。
    示例:用 E2B 跑 Python 画图,返回 SVG 字符串给 Aggregator。

  4. agent.aggregate()
    决定“如何拼回父答案”。默认是“按顺序拼接”,你可以改投票、加权平均、甚至再调一次大模型做摘要。


7 性能到底怎样?官方基准一览

ROMA 团队用“ROMA-Search”这一搜索专用形态跑三家公开数据集:

  • SEAL-0(故意给噪音/冲突结果的搜索难题)
  • FRAMES(考检索+推理+事实性)
  • SimpleQA(短事实问答)

成绩放官网图,这里只给结论:在“噪音环境”和“多跳推理”两项,ROMA-Search 均高于同参数规模 gpt-4-search-preview 基线,提升幅度 6–12%。

反思:很多人看到“Benchmark”就怀疑刷榜。注意 ROMA 并未改模型本身,只是把“搜索→重排→摘要”拆成可递归子任务,用并行+聚合策略赢了单一大模型——这侧面印证“结构红利”有时比“换更大模型”更划算。


8 常见踩坑与排查清单

症状 最可能根因 一键修复
./setup.sh 报“goofys: command not found” 没装 fuse 依赖 Ubuntu: apt install fuse 后重跑
前端 3000 端口白屏 后端 5000 没起 docker logs roma-backend 看是否 AK/SK 填错
E2B 沙盒画图报 NoModuleFound 镜像缺包 e2b_template/requirements.txt 加库,再 ./setup.sh --e2b
递归深度爆栈 子任务一直拆到 1+1=2 重写 is_atomic() 给最小粒度兜底

9 实用摘要 / 一页速览

  1. 克隆 → ./setup.sh → 浏览器打开 localhost:3000,30 秒完成。
  2. 写 Agent 只需 3 行:import → create → run。
  3. 想深度定制:重写 is / plan / execute / aggregate 四钩子。
  4. 官方已给搜索、研究、加密金融三套现成模板,直接抄配置。
  5. 拆得够细 + 并行聚合,结构红利就能让同参数模型再涨 6–12% 基准。

10 可检索 FAQ

  1. ROMA 和 AutoGPT、MetaGPT 有何不同?
    ROMA 只专注“递归拆分-聚合”机制,不与任何特定角色(产品经理、程序员)绑定,也更轻量。

  2. 必须会 Docker 吗?
    提供 --native 路径,macOS/Ubuntu/Debian 一键装。

  3. 支持哪些 LLM?
    所有 LiteLLM 支持的提供商(OpenAI、Anthropic、Google、本地 Ollama 等)。

  4. 可以离线运行吗?
    可以,只要把 Executor 换成本地模型或离线脚本;搜索类 Agent 需联网。

  5. 商业使用是否收费?
    框架 MIT 协议,任意商用;若调用第三方 API 需遵循对应提供商条款。

  6. 递归太深把程序卡死怎么办?
    重写 is_atomic() 给最小粒度,或加 max_depth 参数硬截断。

  7. E2B 沙盒必须配 AWS 吗?
    目前 E2B 的文件持久化依赖 S3,如不用可关掉沙盒,只跑本地 Executor。

  8. 前端能二次开发吗?
    前后端分离,React 代码在 /frontend 目录,标准 Vite 工程,改完 npm run build 即可。

退出移动版