Skip to content
FunCoding

Search

Search docs, Skills and MCP

SDK Fleet 并行协作

启动实验性 Fleet RPC,规划独立任务并收集子代理结果。

This page has not been translated into English yet. The original Chinese version is shown below.

Fleet 让一个父会话分解工作,通过 runtime 的 task 机制并行派发多个 subagent,再合并结果。适合按文件、包或独立研究主题拆分;如果后一步必须等前一步结果,或多个任务会同时改同一文件,应先明确依赖和合并责任。

启动 Fleet

当前入口位于生成的会话 RPC 中,属于实验性能力。依赖它的应用应固定相匹配的 SDK 和 CLI runtime 版本:

const result = await session.rpc.fleet.start({
  prompt: "Review each independent package, then combine the findings.",
});
if (result.started) {
  console.log("Fleet mode started");
}

协议方法名是 session.fleet.start,可选 prompt 会与 runtime 的 Fleet 协调指令组合。官方专题核实了 TypeScript、Python、Go、.NET、Rust 的原生绑定;该分支未发现 Java 对应绑定,不能据此补写 Java 调用。

Plan UI 也可在用户批准计划后返回退出动作 autopilot_fleet。其余动作包括 exit_only、interactive、autopilot;单个自主工作者使用 autopilot,不应把它与并行 Fleet 当作同义词。

用显式任务状态协调

官方 runtime 指导使用 SQL todos 保存共同协调状态:todos 包含 id、title、description、status,todo_deps 记录 todo_id 与 depends_on。状态通常从 pending 进入 in_progress,最后为 done 或 blocked。

每个工作者认领一个依赖已经完成的任务,只修改自己的范围,把结果写入约定输出,再更新状态。父代理负责寻找就绪任务、处理阻塞并验证组合结果。

这是一种官方介绍的协调模式,但 SQL 表是否构成稳定的 SDK 扩展契约仍未明确。应用不能只因看到示例表名就假定可以直接操作任意版本 runtime 的内部数据库,也不应把普通查询当成并发认领的原子保证。

提供完整任务上下文

派发时给出文件路径、任务目标、约束、验证方式和预期返回内容;官方提醒子代理调用之间不保留可依赖的共享思考状态。让每个工作者报告修改、验证和未解决问题,再由父代理检查不同工作者的假设是否一致。

并行任务应各有明确负责人。只派发一个后台子任务通常没有并行收益,可使用同步子代理;需要串行验证的环节也应保留为依赖步骤。

通过会话事件观察生命周期

使用 subagent.started、subagent.completed、subagent.failed 等事件展示进展,并处理失败,不把 started 当作完成。

runtime 的 Hooks 名称包括 preToolUse、postToolUse、subagentStart、subagentStop;Fleet 专题引用的 runtime 更新记录已修复子代理工具的这些 Hooks。但该专题没有在公共 SDK 中确认专门的 subagentStart/subagentStop 回调,SDK 消费者应使用已暴露的会话事件,不能根据 runtime Hook 名字自行拼出回调 API。

插件工作者与限制

插件中的代理可以按 task(agent_type=...) 调度,例如让不同任务使用同一 security-review 工作者类型。插件加载入口见SDK 插件目录;Fleet 专题的启动参数说明比插件专门参考更窄,具体能力应按匹配版本核对。

Fleet 不保证并行修改天然一致,也不消除父代理最终审阅。重叠文件、相互依赖的结论、实验性绑定和内部协调存储都是集成时需要明确处理的边界。