Squad路由与协调器原理深析:一句话需求如何被拆分并派发给多个Agent并行处理
【免费下载链接】squadSquad: AI agent teams for any project项目地址: https://gitcode.com/gh_mirrors/squad4/squad
Squad 是一个让人类主导的 AI Agent 团队为任意项目工作的开源项目。它的核心是一个协调器(Coordinator)与一套路由(Routing)机制:你只需说出一句话需求,协调器就会自动判断由谁处理、拆分成哪些子任务,并把它们并行派发给多个 Agent 同时开工。本文将深入剖析这套"一句话 → 多 Agent 并行"的完整链路,帮你快速理解 Squad 的调度原理。
一、协调器:Squad 团队的"大脑"
Squad 的协调器位于 coordinator.ts,注释里称它为 "The brain of Squad"——它接收用户消息、决定如何处理、并编排 Agent 的生成(spawn)。
每条消息都会经过一条清晰的5 步流水线(见 handleMessage 方法):
| 步骤 | 做什么 | 对应模块 |
|---|---|---|
| 1️⃣ 直答检查 | 简单问题直接回答,不派 Agent | direct-response.ts |
| 2️⃣ 路由分析 | 消息匹配路由规则,选出目标 Agent | routing.ts |
| 3️⃣ 策略决策 | 判断 single / multi / fallback | determineStrategy() |
| 4️⃣ 扇出派发 | 并行生成多个 Agent 会话 | fan-out.ts |
| 5️⃣ 结果收集 | 汇总结果、发出事件供观测 | EventBus |
整条链路的关键设计是:能用快路径解决的绝不动用慢路径,需要多 Agent 协作时才触发并行扇出。
二、第一道关卡:直接响应快路径
不是每句话都需要派 Agent。"状态如何?"、"团队里有谁?"、"help" 这类问题,协调器会自己秒答,不消耗任何 Agent 会话。
direct-response.ts 内置了 5 类直答模式:
- status:询问当前状态、活跃 Agent
- help:请求帮助或命令列表
- config:查看配置、当前模型
- roster:查看团队成员名册
- greeting:打招呼
只要消息命中这些模式(且没有显式@agent提及),协调器就直接返回答案。官方路由模板里也写得很直白:"快速事实查询 → 协调器直接回答,别为'服务器跑在哪个端口'这种问题派一个 Agent"(见 templates/routing.md)。
💡 这一层让日常闲聊和状态查询的响应时间控制在秒级,把宝贵的 Agent 资源留给真正需要干活的场景。
三、路由表:把"谁来干"变成可编译的数据
路由的核心配置就在项目根目录的 routing.md 模板中,核心是一张路由表:
| Work Type | Route To | Examples |
|---|---|---|
| feature-dev | Lead | New features, enhancements |
| bug-fix | Developer | Bug fixes, patches |
routing.ts 的编译流程分三步:
- 解析(parse):parseRoutingMarkdown 把 Markdown 表格解析成类型化的路由规则,每行变成一个"工作类型 → 目标 Agent 列表"的规则;
- 编译(compile):compileRoutingRules 把每条规则转成正则模式,并按特异性计算优先级——工作类型越长、示例越多的规则优先匹配,确保更具体的规则先命中;
- 匹配(match):matchRoute 按固定优先级对消息做判定:
① 显式 @agent 提及 → 最高优先级,直达指定成员 ② 工作类型规则逐条匹配 → 命中即返回 ③ 都没命中 → 兜底给 @coordinator(低置信度)也就是说,你说"让后端去修接口",路由表会把bug-fix或api类规则命中到后端 Agent;而@backend fix this这样的显式点名则永远优先直达。
此外,Issue 路由 还支持按标签分派:带squad标签的 Issue 由Lead分诊并打squad:{成员名}标签,被点名的成员在下次会话自动认领——路由能力延伸到了 Issue 工作流。
四、三种派发策略:single / multi / fallback
路由给出目标 Agent 列表后,协调器用 determineStrategy 做最简单的决策:
- 0 个 Agent→
fallback(兜底处理) - 1 个 Agent→
single(单人任务) - 多个 Agent→
multi(并行扇出,多 Agent 同时开工)
这正是"一句话需求如何拆分并派发"的关键节点:路由规则里一个 Work Type 可以映射多个 Agent(比如feature-dev→ Lead + Developer + Tester),路由命中后这些 Agent 就组成派发队列,进入并行阶段。
五、扇出并行:多 Agent 同时开工的引擎
multi策略触发 spawnParallel——这是 Squad 并行能力的核心。它用Promise.allSettled让所有 Agent同时生成,每个 Agent 独立走完 4 步初始化:
- 编译章程:把该 Agent 的
charter.md编译成结构化的 AgentCharter(角色、职责、知识边界); - 解析模型:按章程选择合适的大模型(含推理强度、上下文档位);
- 创建会话:通过平台后端或
createSession建立独立会话; - 发送首条消息:任务(Task)+ 上下文(Context)封装成初始 Prompt 送达。
这里有三个值得新手注意的工程细节:
- 🛡️错误隔离:单个 Agent 生成失败不影响其他 Agent,结果里会带每个 Agent 的成功/失败状态与错误信息;
- 🔁优雅降级:平台后端(如 Copilot 子会话)不可用或并发受限时,自动回退到直接创建会话的路径,而不是直接失败;
- ✍️安全清洗:写入 Prompt 的任务与上下文会先做防注入清洗(剥离控制字符、中和伪造的
**Task:**标记、限制长度),降低恶意内容干扰结构标记的风险。
六、响应档位:按任务复杂度匹配"仪式感"
除了"谁来干",Squad 还要决定"以什么规格干"。coordinator-response-mode 技能定义了 4 个响应档位:
| 档位 | 适用场景 | 目标耗时 |
|---|---|---|
| Direct | 状态查询、协调器已知的事实问题 | ~2-3s |
| Lightweight | 单文件小改、拼写修正 | ~8-12s |
| Standard | 常规单 Agent 任务(默认) | ~25-35s |
| Full | 多 Agent、跨 3+ 领域的复杂任务 →并行扇出 | ~40-60s |
配套规则是"宁可升档不可降档":拿不准就选高一档,任务进行中也绝不中途降档。所以当你说出"Team,搭建登录页面"这类话时,路由会命中多 Agent 规则、档位判定为 Full,于是前端、后端、测试多个 Agent 被并行扇出,各自带着完整章程开工。
七、动手验证:安装 Squad 并观察路由过程
想亲手看这套机制运转,只需三步:
- 安装:
npm install -g @bradygaster/squad-cli(或 Homebrew / WinGet); - 初始化:
squad init,生成包含成员、章程与路由规则的.squad/目录; - 派活:对协调器说一句 "Team, build the login page",观察多个 Agent 被并行拉起。
路由与协调器的行为都被测试严格覆盖,你可以顺着这些用例读源码:
- routing.test.ts:路由表解析与匹配规则
- coordinator.test.ts:协调器管线与策略决策
- coordinator-routing.test.ts:路由与协调器的集成行为
八、核心文件速查 📌
| 模块 | 路径 | 职责 |
|---|---|---|
| 协调器主入口 | packages/squad-sdk/src/coordinator/coordinator.ts | 5 步流水线、策略决策 |
| 路由编译与匹配 | packages/squad-sdk/src/config/routing.ts | 路由表 → 正则规则 |
| 并行扇出 | packages/squad-sdk/src/coordinator/fan-out.ts | Promise.allSettled 并行派发 |
| 直接响应 | packages/squad-sdk/src/coordinator/direct-response.ts | 免 Agent 快路径 |
| 路由配置模板 | templates/routing.md | 路由表 + Issue 路由 |
| 响应档位技能 | templates/skills/coordinator-response-mode/SKILL.md | Direct/Full 四档决策 |
一句话总结:Squad 的协调器用"直答快路径 → 路由表匹配 → 策略决策 → 并行扇出"这条流水线,把一句自然语言需求精准地拆分成多个子任务,并以错误隔离、优雅降级的方式并行派发给多个 Agent——这就是"人类说一句话,一个 AI 团队同时开工"背后的完整原理。
【免费下载链接】squadSquad: AI agent teams for any project项目地址: https://gitcode.com/gh_mirrors/squad4/squad
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考