Sage-A1.5 智能体编排模式实战:一个 spawn_subagent 工具如何实现并行子智能体协作
Sage-A1.5 智能体编排模式实战:一个 spawn_subagent 工具如何实现并行子智能体协作
Sage-A1.5 是 InternScience 推出的 35B MoE 智能体(Agent)模型,本仓库提供其 Q8_0 量化 GGUF 权重。它最亮眼的 Agentic Orchestration(智能体编排)模式只需注册一个 spawn_subagent 工具,就能让主智能体把复杂任务拆解成相互独立的子任务,交给多个上下文隔离的子智能体并行执行——本文带你从零理解原理、完成配置并避开常见坑点。
🧩 为什么需要智能体编排:单个 Agent 的天花板
长任务(深度检索、多步工程、科研探索)里,单个智能体常遇到三个问题:
- 上下文膨胀:所有中间结果堆在同一个窗口里,越长越容易"迷路";
- 串行低效:本可并行的调查被迫排队执行;
- 互相干扰:前一步的偏见会污染后续推理。
Sage-A1.5 在 Agents-A1 基础上专门强化了"组织工作"的能力,官方给出三个核心特性:智能体编排、验证模式(Verification)、开放科学发现。其中编排模式的效果在官方基准中有清晰体现:
| 基准测试 | 不开编排 | 开启编排 | 提升 |
|---|---|---|---|
| BrowseComp | 81.7 | 82.8 | +1.1 |
| DeepResearch-Bench2 | 43.7 | 47.5 | +3.8 |
💡 关键点:编排模式不需要改模型,也不需要新架构——它通过"向模型暴露一个工具"来开启,任何支持 function calling 的部署(llama.cpp、Ollama、LM Studio 等 GGUF 运行时)都能启用。
⚙️ 工作原理:一次 spawn_subagent 调用背后发生了什么
整个流程可以概括为 5 步:
- 判断可拆解性:模型识别出任务包含若干相互独立的调查方向;
- 发起调用:模型调用
spawn_subagent,传入一个tasks数组; - 并行派发:harness(你的运行框架)同时启动多个子智能体,每个子智能体拥有独立的上下文窗口和独立工具访问,彼此不可见,也无法看到主对话;
- 结构化返回:每个子智能体返回一个紧凑 JSON:
{answer, status, evidence, unresolved_issues}; - 汇总综合:结果按输入顺序交回主模型,由它挑战假设、用证据修正结论、合成最终答案。
这种"上下文隔离"正是编排模式的价值来源:并行子智能体之间互不干扰,还能通过证据相互印证,最终汇总为更可靠的综合结果。
关于工具集:子智能体不受固定工具限制,可以赋予搜索、网页阅读、代码执行、检索、内部 API 等任意工具;默认继承主智能体的工具,想收窄或更换时通过 subagent_tools 指定即可。
🔧 spawn_subagent 参数详解:task / context / expected_output 三要素
由于子智能体看不到主对话,每个子任务必须自包含。工具的核心参数如下:
| 参数 | 层级 | 必填 | 说明 |
|---|---|---|---|
tasks |
顶层 | 是 | 要并行派发的独立子任务列表(≥1) |
task |
每个任务 | 是 | 自包含的子问题,子智能体没有其他上下文 |
context |
每个任务 | 是 | 子智能体所需的背景事实与约束 |
expected_output |
每个任务 | 是 | 期望答案的形式,如 "a year YYYY"、"a person name" |
一次调用的大致形态:
{
"name": "spawn_subagent",
"arguments": {
"tasks": [
{
"task": "北京 2024 年常住人口是多少?",
"context": "需采用最新官方统计口径",
"expected_output": "一个人口数字(万人)"
},
{
"task": "上海 2024 年常住人口是多少?",
"context": "需采用最新官方统计口径",
"expected_output": "一个人口数字(万人)"
}
]
}
}
expected_output 相当于对 answer 的格式约束——让返回保持简短、便于主模型合并,这是写好调用的小窍门。
🚀 快速启用步骤:两步开启编排模式
第 1 步:启动支持 function calling 的服务。 权重文件见 Sage-A1.5-Q8_0.gguf(37.8 GB,MoE 权重 + 内置 MTP 层)与视觉投影器 Sage-A1.5-mmproj.gguf(0.9 GB)。注意 GGUF 采用 qwen35moe 架构,必须使用支持该架构的近期版本 llama.cpp / Ollama / LM Studio,旧版无法加载。以 llama.cpp 为例:
./build/bin/llama-server -m Sage-A1.5-Q8_0.gguf \
--mmproj Sage-A1.5-mmproj.gguf -ngl 99 -fa on -c 65536 \
--port 8000 --jinja --reasoning-format deepthink
--jinja 开启模型内置的 chat template(function calling 的关键),--reasoning-format deepthink 把模型的自我审查留在 reasoning_content 中,与最终答案分离。纯文本部署可跳过 --mmproj,把省下的显存留给更长上下文(模型最高支持 262,144 tokens)。
第 2 步:在 harness 中注册 spawn_subagent 工具。 把它的 function schema 与你的业务工具(搜索、读页、执行器等)一起注册到请求的 tools 里即可,无需其他配置。完整的 schema 定义与说明见仓库文档 README.md 的 Agentic Orchestration 小节。
至此编排模式即处于可用状态——它默认关闭,"注册工具"就是开关。
📥 结果处理:先查 status,再信 answer
每个子智能体返回一个四字段 JSON:
| 字段 | 含义 |
|---|---|
answer |
答案;无法解决时返回 "UNKNOWN",而不是瞎猜 |
status |
状态;查无实据时为 unknown 或 insufficient_evidence |
evidence |
支撑结论的证据 |
unresolved_issues |
未解决的问题 |
实战规则:使用任何子结果之前,先检查 status。 一个诚实返回 UNKNOWN 的子智能体,好过一个自信地编造答案——这正是长程任务可靠性的来源之一。
🧪 避坑指南:6 个容易踩的点
- 同批任务必须相互独立。同一批次的子任务并发执行、彼此看不到结果;有先后依赖的内容应拆成多次
spawn_subagent调用,串行逻辑放主流程里。 - 用
expected_output约束格式,例如"a year YYYY",结果更短更好合并。 - 批次大小与轮次预算在 harness 侧控制:
max_tasks_per_spawn(默认 5)、subagent_max_turns(默认 20)。超大批次会直接报错拒绝,而不是静默截断。 - 同步更新工具描述。参考 schema 的描述里写死了子智能体"能访问 google_search 和 read_page"——如果你换了一套工具,务必修改这句描述,它是主模型判断子智能体能力边界的唯一依据。
- 任务必须自包含:子智能体既看不到主对话也看不到其他子智能体,
task+context要写足背景。 - 采样参数建议采用官方推荐值,对生成质量影响明显:
temperature |
top_p |
top_k |
min_p |
presence_penalty |
repetition_penalty |
|---|---|---|---|---|---|
| 1.0 | 0.95 | 20 | 0.0 | 1.5 | 1.0 |
显存方面:Q8_0 权重约 35.2 GiB + 投影器约 0.84 GiB,再加随上下文增长的 KV cache——单张 48 GB 显卡在中等上下文下即可从容运行;显存不足时可用
--tensor-split分卡或调低-ngl把部分层放到 CPU。
🔍 进阶:编排 × 验证,组合出更可靠的长程执行
Sage-A1.5 还提供一个可选的 Verification Mode:它在模型自身的思维链内部做"暂停自查"——回顾已确立的结论与失败的尝试,然后同一轮内按修正后的方向继续,无需外部评审模型。开启方式很简单:
- 请求中通过
chat_template_kwargs传入 JSON 布尔值{"verification": true}(注意必须是布尔,不是字符串"true"); - 必须带非空 system message,否则服务端会返回 HTTP 400;
- 服务端需以
--jinja启动以渲染模板; - 自查过程输出在
reasoning_content字段,记得一并读取。
编排模式负责"横向展开",验证模式负责"纵向纠错",两者互相独立、可任意组合,是应对长程搜索与科研类任务的好搭档。
📦 资源速览
| 文件 | 说明 |
|---|---|
| Sage-A1.5-Q8_0.gguf | 语言模型,Q8_0 量化(MoE 权重 + MTP 层),37.8 GB |
| Sage-A1.5-mmproj.gguf | 视觉投影器(图像输入用),0.9 GB |
| README.md | 完整部署指南、参数与基准数据 |
模型基准结果均基于 BF16 全精度权重评测,本仓库的 Q8_0 量化接近无损。想深入了解性能细节与引用格式,完整说明都写在 README.md 中。
小结:Sage-A1.5 的智能体编排模式把"多智能体并行协作"做成了极轻量的事——一个 spawn_subagent 工具、三要素任务描述、结构化的 JSON 回流。把任务拆独立、写清上下文、约束输出格式,你就能在自己的 agent 系统里快速获得并行子智能体协作带来的速度与可靠性提升。