用途
fleet-run 用于执行一个 CocoFleet manifest。它读取 manifest 文件,为其中每个实例启动独立的 Coco 进程,遵循实例之间的依赖顺序,记录进程 PID 与运行状态,并在编排判定整个 fleet 完成后写入聚合结果文件。
前置条件
执行前需确认当前目录下存在 .cocoplus/。若不存在,命令会输出 "CocoPlus not initialized in this directory. Run $pod init to begin." 并停止。
命令需要参数 manifest-path。若未提供,输出 "Usage: $fleet run [manifest-path]" 并停止。若 manifest 文件不存在,输出 "Manifest not found: [manifest-path]" 并停止。
还需检查 coco CLI 是否可用(跨平台运行 coco --version 并验证退出码为 0)。若未找到,输出 "ERROR: 'coco' CLI not in PATH. Install Coco and ensure it is accessible before running a fleet." 并停止。
主要能力
- 解析并校验 manifest:实例数量不得超过 10,超出则输出警告并停止。
- 支持两种模式:standard 与 goal_decomposition。
- 在 goal_decomposition 模式下,要求存在 planner 角色条目,写出 .cocoplus/fleet/[fleet-id]/task-plan.json;每个计划任务需声明 id、role(planner、producer 或 critic)、model_tier(smol、regular、smart 或 ultra)、file_scope、depends_on、critic_required。critic 任务必须声明 tool_set: "read_only"。
- 校验并发 producer 任务的 file_scope 是否互不重叠;若重叠,不使运行失败,而是重写启动计划,让重叠任务顺序执行。
- 创建 fleet 状态文件与通信日志。
- 按依赖关系解析就绪实例并启动 Coco 进程。
- 记录 PID、状态、心跳与当前任务摘要。
- 在编排判定完成后写入聚合结果。
使用方式
命令形式为 $fleet run [manifest-path]。
执行流程:
- 校验 .cocoplus/ 是否存在、参数是否提供、manifest 是否存在。
- 校验 manifest:实例数 ≤ 10;goal_decomposition 模式下校验 planner、任务字段、critic 只读、并发 file_scope 不重叠。
- 生成 fleet-id(格式 fleet-YYYYMMDD-HHMMSS),创建 .cocoplus/fleet/[fleet-id]/ 目录。
- 写入 state.json,包含 fleet_id、manifest_path、started_at、status、mode、instances、roles(planner、producer、critic)。每个实例初始状态为 "pending"。
- 创建 comms.log,为每次 dispatch、heartbeat、completion、blocker、critic signoff 事件追加一行 JSON。
- 解析就绪实例(无 depends_on 或依赖已满足),为每个就绪实例创建目录、校验 task_file、启动 Coco 进程并记录 PID。
- 启动初始就绪集合后立即返回控制权,不在本命令内轮询。
启动进程的跨平台方式:
Windows(PowerShell): Start-Process coco -ArgumentList "--task-file .cocoplus/fleet/[instance-id]/task.md" -RedirectStandardOutput ".cocoplus/fleet/[instance-id]/output.log" -PassThru | Select-Object -ExpandProperty Id | Out-File ".cocoplus/fleet/[instance-id]/pid.txt"
Mac/Linux(bash): coco --task-file .cocoplus/fleet/[instance-id]/task.md > .cocoplus/fleet/[instance-id]/output.log 2>&1 & echo $! > .cocoplus/fleet/[instance-id]/pid.txt
平台检测使用 node -e "console.log(process.platform)",以 win32 判断 Windows。
适用场景
- 需要按依赖顺序批量启动多个独立 Coco 进程的任务编排。
- 需要角色分工(planner、producer、critic)与评审签核的目标分解型工作流。
- 需要记录进程 PID、状态与事件日志以便后续监控的 fleet 执行。
限制
- 实例数量上限为 10,超出即停止。
- 实例之间进程隔离,不共享上下文。
- critic 任务必须为只读,不得编辑其所评审的产物。
- 并发 producer 的 file_scope 不得重叠,重叠时改为顺序执行。
- 本命令不轮询,启动初始就绪集合后立即返回;监控需使用 $fleet status [fleet-id],终止需使用 $fleet stop [fleet-id]。
- goal_decomposition 模式仅在每个 critic_required = true 的 producer 都有依赖的 critic 任务并在 task-plan.json 或 state.json 中记录 PASS 签核后才算完成。
输出
命令完成后输出:"Fleet started from [manifest-path]. Fleet ID: [fleet-id]. Initial ready instances were launched and the session returned immediately. Use $fleet status [fleet-id] to monitor. Use $fleet stop [fleet-id] to terminate all processes."
聚合结果写入 .cocoplus/fleet/[fleet-id]/aggregated-results.md,包含 Fleet ID、完成时间、持续时间、实例汇总表(Instance、Status、Duration、Checkpoints)与总体状态(COMPLETE / PARTIAL (N failed) / FAILED)。