用途
fleet-status 用于显示 CocoFleet 一次运行的当前执行状态。它会展示每个实例的状态、运行时长以及检查点结果。
主要能力
- 在未提供 fleet-id 时,列出 .cocoplus/fleet/ 下所有包含 state.json 的 fleet 目录,并显示其 fleet 名称、模式和状态。
- 读取 .cocoplus/fleet/[fleet-id]/state.json,输出 fleet 名称、fleet ID、启动时间、整体状态(running/complete/failed)。
- 输出实例状态表,列为 Instance、Name、Status、PID、Runtime、Checkpoints,检查点以 ✓ 或 ✗ 表示是否满足。
- 输出按角色分组的视图,将 planner、producer、critic 实例分别列出,包含 Role、Instance、Model Tier、Status、Last Heartbeat、Current Task(存在 current_task_summary 时显示)。
- 显示 .cocoplus/fleet/[fleet-id]/comms.log 的最后 10 行作为 Recent Comms。
- 对失败实例,显示其 output.log 的最后 3 行。
使用方式
命令格式:$fleet status [fleet-id]
执行前会验证 .cocoplus/ 是否存在。若不存在,则输出 "CocoPlus not initialized in this directory. Run $pod init to begin." 并停止。
对于状态为 running 的实例,会通过 Bash 工具执行跨平台 Node.js 单行命令检查 PID 是否仍然存活:
node -e "try{process.kill([pid],0);console.log('alive')}catch(e){console.log('dead')}"
对于旧版 fleet 状态文件(匹配 .cocoplus/fleet/[fleet-id]-state.json),仅作为回退读取,并提示该 fleet 应迁移到目录布局。
适用场景
- 查看 CocoFleet 运行的整体状态与各实例状态。
- 按角色查看 planner、producer、critic 的心跳与当前任务。
- 排查失败实例,查看其日志尾部。
- 查看最近的通信事件。
限制
- 若 state.json 缺失,表示 fleet 从未启动,应输出明确错误,而不是将所有实例报告为 pending。
- 对于 running 实例,必须重新检查 PID 存活状态,不能仅显示缓存状态,因为进程可能已死亡但 state.json 未更新。
- 旧版状态文件仅作为回退,并应提示迁移。