ruflo 智能体群按需扩员:claude-flow agent spawn 命令从实战到源码级解析
导读
agent-spawn 是 ruflo(Claude Flow 智能体元框架)协调命令集中最常用的"扩员"入口,负责在当前 swarm 中即时孵化一个新的子代理,并为它完成成本归因、记忆持久化与 swarm 拓扑注册。本文以该命令的完整文档为骨架,结合仓库内 CLI 与 MCP 层的真实实现,讲解每一个参数的作用、可孵化的代理类型全集、spawn 背后的完整执行链路,以及 spawn 之后如何用配套命令查看与管理代理,帮助你在一套可复现的多智能体编排方案中安全地动态扩缩容。
认识 agent-spawn:协调命令集中的"孵化器"
在 ruflo 的协调能力体系中,agent spawn 负责"创建代理实例",与另外两个基础命令形成完整闭环:
swarm-init:初始化 swarm(先有 swarm,才能谈"在 swarm 中孵化");agent-spawn:在 swarm 中孵化一个新代理(本文主题);task-orchestrate:把任务编排给已存在的代理执行。
三者的关系被记录在 plugin/commands/coordination/README.md(仓库内的协调命令索引中明确列出 swarm-init、agent-spawn、task-orchestrate 三个入口)。swarm 场景下典型使用次序是:swarm init 建立拓扑 → agent spawn 填充兵力 → task-orchestrate/MCP task_assign 派活。
命令文档在仓库中保留了三份等价副本,便于不同消费场景引用:
- 根级 Claude Code 命令定义:.claude/commands/coordination/agent-spawn.md;
- 插件形态文档:plugin/commands/coordination/agent-spawn.md;
- v3 CLI 内置命令文档:v3/@claude-flow/cli/.claude/commands/coordination/agent-spawn.md(调用方式升级为
npx @claude-flow/cli@latest)。
命令用法速览
文档给出的标准用法为:
npx claude-flow agent spawn [options]
在 v3 路径下等价为:
npx @claude-flow/cli@latest agent spawn [options]
agent 是总命令(仓库内实现于 v3/@claude-flow/cli/src/commands/agent.ts),它把 spawn 与 list、status、stop、metrics、pool、health、logs 以及若干 wasm-* 子命令组合在一起。不指定子命令直接运行 claude-flow agent 时会打印上述子命令的帮助清单。
文档中的三个最小可运行示例:
# 孵化一个 coder 代理
npx claude-flow agent spawn --type coder
# 使用自定义名称孵化 researcher
npx claude-flow agent spawn --type researcher --name "API Expert"
# 为 coder 指定专项技能(逗号分隔)
npx claude-flow agent spawn --type coder --skills "python,fastapi,testing"
对脚本化场景,spawn 支持 --format json,命令成功后会把完整的 spawn 结果对象(含 agentId、agentType、status、createdAt、capabilities)以 JSON 输出,便于被上层调度程序消费。
参数详解
文档标注的三个核心参数
| 参数 | 含义 | 说明 |
|---|---|---|
--type <type> |
代理类型 | coder、researcher、analyst、tester、coordinator 等;完整类型清单见下一节 |
--name <name> |
自定义代理名/标识 | 可读性名称,例如 "API Expert";省略时由 CLI 自动生成 |
--skills <list> |
指定专项技能 | 逗号分隔的技能列表,例如 python,fastapi,testing |
由 CLI 实现补齐的扩展参数
对照 v3/@claude-flow/cli/src/commands/agent.ts 中 spawn 子命令的 options 定义,命令行还支持下列参数(含默认值与取值边界):
| 参数 | 短参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
--type |
-t |
string | 无(交互模式下可弹选) | 合法取值受 AGENT_TYPES 枚举约束,越界会触发校验 |
--name |
-n |
string | 自动生成 | 省略时形如 coder-mxxxxxxxx(见下文命名规则) |
--provider |
-p |
string | anthropic |
模型供应商:anthropic、openrouter、ollama |
--model |
-m |
string | 按类型路由 | 显式指定模型;不传时走 ADR-026 三级模型路由 |
--task |
— | string | 无 | 首个任务描述,会参与模型路由决策(影响成本与模型选择) |
--timeout |
— | number | 300 |
代理超时时间(秒) |
--auto-tools |
— | boolean | true |
是否允许代理自动调用工具 |
其中 --provider 与 --timeout、--auto-tools 等配置会被整体打包进 config 对象下发给底层 MCP 工具,是 spawn 输出稳定性的关键开关。
交互模式与自动命名
- 若省略
--type且处于交互终端,CLI 会弹出类型选择列表(见 agent.ts); - 非交互且无
--type时直接报错退出:Agent type is required. Use --type or -t flag.(exitCode 1); - 省略
--name时,实现使用${agentType}-${Date.now().toString(36)}生成全局唯一名称(见 agent.ts),例如coder-l0x3jf8,保证同一类型可重复孵化而不冲突。
可孵化的代理类型全集
虽然命令文档只列举了 5 个常用类型,CLI 实现的 AGENT_TYPES 常量(agent.ts)实际开放了 15 个类型,含面向专项用途的高级角色:
| 类型值 | 角色定位(依据 hint 与 capabilities 归纳) |
|---|---|
coder |
编码开发:代码生成、重构、调试、测试 |
researcher |
研究分析:联网检索、数据分析、摘要、引用 |
tester |
测试自动化:单元/集成测试、覆盖率分析 |
reviewer |
代码评审:安全审计与质量检查 |
architect |
系统设计:企业级模式与可扩展性 |
coordinator |
多代理编排:任务分派与工作流控制 |
analyst |
性能分析与优化 |
optimizer |
性能瓶颈分析与优化 |
security-architect |
安全架构与威胁建模 |
security-auditor |
CVE 修复与安全测试 |
memory-specialist |
AgentDB 记忆统一管理 |
swarm-specialist |
统一协调引擎相关 |
performance-engineer |
性能基准、剖析与监控 |
core-architect |
领域驱动设计重构方向 |
test-architect |
TDD 方向测试架构 |
每个 spawn 出的代理都会依据类型被注入一组能力标签,这部分映射实现在 getAgentCapabilities()(agent.ts),例如 coder → code-generation, refactoring, debugging, testing;researcher → web-search, data-analysis, summarization, citation;coordinator → task-orchestration, agent-management, workflow-control;未命中映射的类型回退为 general。
这些"角色 + 能力"声明与仓库内置的 agent 声明文件是一致的,例如 v3/@claude-flow/agents/coder.yaml 声明 capabilities: code-generation, refactoring, debugging。也就是说,CLI 的 --type 实际是一个"工厂选择器",选中的是预先定义好的角色模板,而不是任意自由形态的提示词。
源码级执行链路:一次 spawn 发生了什么
从命令行敲下 agent spawn -t coder 到代理真正可用,执行过程可拆成五段(核心代码均在 v3/@claude-flow/cli/src/commands/agent.ts 与 v3/@claude-flow/cli/src/mcp-tools/agent-tools.ts)。
1) CLI 参数组装
spawnCommand.action 校验并补齐参数后,调用 MCP 客户端工具 callMCPTool('agent_spawn', …),载荷结构为:
{
"agentType": "coder",
"id": "coder-mxxxxxxxx", // 用户 --name 或自动生成名
"config": { "provider": "anthropic", "model": null,
"task": null, "timeout": 300, "autoTools": true },
"priority": "normal",
"metadata": { "name": "coder-mxxxxxxxx",
"capabilities": ["code-generation","refactoring","debugging","testing"] }
}
2) MCP 层输入校验与 ID 生成
MCP 工具 agent_spawn(agent-tools.ts)的输入 Schema 中 agentType 是唯一必填字段,其余可选字段包括:agentId、swarmId(缺省注册到最近创建的 swarm)、config、domain、model、task、memoryBase 与 memoryDimension。handler 首先执行 validateAgentSpawn(input) 安全校验,失败即返回错误而不产生任何记录;随后按 agent-{timestamp}-{随机串} 生成正式 agentId。
3) 三级模型路由(ADR-026)
determineAgentModel(agentType, config, task)(agent-tools.ts)按下述优先级决策该代理的模型:
config.model显式指定(CLI 的--model)最优先;- 任务文本嵌入后走成本最优神经路由(ADR-149/ADR-026 hybrid),启用开关为环境变量
CLAUDE_FLOW_ROUTER_NEURAL; - 命中按类型配置的默认档位
AGENT_TYPE_MODEL_DEFAULTS:architect、security-architect、system-architect、core-architect→opus;coder、reviewer、researcher、tester、analyst→sonnet;formatter、linter、documenter→haiku; - 兜底
sonnet。
路由结果(model、routedBy、可选 modelId/provider/openrouterModel)会写入代理记录并在 spawn 响应中原样返回,方便上层做成本归因。
4) 状态注册与多存储一致性
新代理以 AgentRecord 落盘(agent-tools.ts),初始状态 status: 'idle'、health: 1.0、taskCount: 0,随后分四路完成"身份登记":
- agent store:主注册表,后续
agent status/list的数据来源; - swarm store:把
agentId追加进目标 swarm 的agents数组(幂等去重,缺省注册到最近创建的 swarm,见 agent-tools.ts),从而让swarm_status能立刻报告新成员——这就是文档中"在 current swarm 孵化"的落点; - 图数据库:best-effort 在 ruvector graph-backend 记录
{id, type:'agent', name:agentType}节点(ADR-087); - 可选 COW 记忆分支:当传入
memoryBase时,为代理创建独立的 Copy-On-Write 记忆分支(约 162 字节 COW 分支而非整份拷贝),该能力是可选依赖,缺失时静默降级而不阻塞 spawn。
5) 指标回写与结果展示
命令成功路径上,CLI 调用 updateSwarmActivityMetrics(1)(agent.ts)把 .claude-flow/metrics/swarm-activity.json 中的 agent_count 加一、置 active 与 coordination_active 为 true,使得状态栏(statusline)实时反映 swarm 规模;随后打印表格展示 ID / Type / Name / Status / Created / Capabilities,并输出 Agent xxx spawned successfully。
spawn 之后:查看、度量与回收
孵化出的代理可通过 agent 命令族进行完整生命周期管理:
# 列出全部活跃代理
npx claude-flow agent list
# 查看单个代理的详细状态与运行指标(任务数、平均执行时长、uptime)
npx claude-flow agent status <agentId>
# 按类型/状态过滤并聚合任务完成数与成功率
npx claude-flow agent metrics
# 查看健康度(healthy/degraded/unhealthy,含 CPU、内存、p99 延迟)
npx claude-flow agent health
# 追踪代理日志(-f 跟随、--since 1h 过滤时间窗、-l error 过滤级别)
npx claude-flow agent logs -i <agentId>
# 优雅或强制回收代理(默认优雅:等待当前任务收尾并保存状态)
npx claude-flow agent stop <agentId>
值得一提的是 agent stop 会在优雅停机分支上按"完成任务 → 保存状态 → 释放资源"顺序推进,同时调用 updateSwarmActivityMetrics(-1) 回写指标,与 spawn 形成对称的扩缩容闭环。agent metrics 还会读取 .swarm/agents/*.json 与 .swarm/memory.db 统计向量规模,并把"还没有孵化过代理"以提示文案(No agents spawned yet. Use: agent spawn -t coder)直接反馈给操作者(见 agent.ts)。
注意事项与最佳实践
- 先建 swarm 再孵化:虽然
agent_spawn在没有 swarm 时也能把代理登记进全局 agent store,但要让代理出现在swarm_status/swarm 拓扑中,仓库源码表明它会默认注册到"最近创建的 swarm";若希望绑定特定 swarm,CLI 层请确保对应 swarm 已swarm init,MCP 层则可显式传入swarmId。 - 名称幂等与唯一性:自动命名基于时间戳进制编码,可放心重复孵化;若复用
--name,注意后续stop、status均以 agentId 寻址。 --skills与能力标签的关系:命令文档把--skills定义为逗号分隔的专项技能列表;在实际 spawn 链路中,类型驱动的能力标签(capabilities)会进入metadata参与后续的路由与协作决策,技能是"该代理会做什么"的高层声明,与底层--provider/--model等运行参数相互独立,可按需组合。- 显式指定 provider 的优先级:
--provider openrouter/ollama会被视为明确的供应商选择并优先于模型路由器的自选结果;而默认的anthropic是 CLI 静默缺省值,不会覆盖路由决策。 - 脚本化输出:需要把 spawn 结果接入上层系统时使用
--format json,返回值已包含agentId、路由后的model与provider等可追溯字段。
相关阅读
- 协调命令集索引:plugin/commands/coordination/README.md
- 命令文档:根级 .claude/commands/coordination/agent-spawn.md 与 v3 版 v3/@claude-flow/cli/.claude/commands/coordination/agent-spawn.md
- CLI spawn 实现:v3/@claude-flow/cli/src/commands/agent.ts
- MCP
agent_spawn底层实现:v3/@claude-flow/cli/src/mcp-tools/agent-tools.ts - 代理角色声明示例:v3/@claude-flow/agents/coder.yaml(
architect.yaml、reviewer.yaml、tester.yaml、security-architect.yaml同目录) - 智能体群内存分支(可选 COW 记忆):v3/@claude-flow/cli/src/services/swarm-memory-branches.ts
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00