用途
fleet-logs 用于展示某个 CocoFleet 实例的输出日志。它会根据实例当前是否仍在运行,选择不同的日志展示方式,帮助开发者判断任务进展。
主要能力
- 读取并展示指定实例的日志文件
.cocoplus/fleet/[instance-id]/output.log。 - 若实例仍在运行:输出日志的最后 50 行,并附加提示“[Instance is still running — showing last 50 lines. Re-run $fleet logs to refresh.]”。
- 若实例已完成或停止:输出完整日志内容,并附加来自 state.json 的状态摘要(completed/failed、检查点是否满足)。
- 通过跨平台 Node.js 单行命令检测 state.json 中的 PID 是否存活,以判断实例状态:
node -e "try{process.kill([pid],0);console.log('alive')}catch(e){console.log('dead')}"
使用方式
- 确认当前目录已初始化 CocoPlus,即存在
.cocoplus/目录。若不存在,输出“CocoPlus not initialized in this directory. Run $pod init to begin.”并停止。 - 解析参数:
$fleet logs [fleet-id] [instance-id]。若缺少参数,输出“Usage: $fleet logs [fleet-id] [instance-id]”并停止。 - 查找日志文件
.cocoplus/fleet/[instance-id]/output.log。若未找到,输出“No log file found for [instance-id]. The instance may not have started yet.”并停止。 - 读取 state.json 判断实例是否仍在运行。
- 根据实例状态按上述规则展示日志与状态摘要。
适用场景
- 需要实时查看仍在运行的 CocoFleet 实例的最新日志输出。
- 需要查看已完成或已停止实例的完整日志及最终状态。
- 在 CocoPlus 工作流中排查实例执行情况。
限制与注意事项
- 使用前必须已初始化 CocoPlus(存在
.cocoplus/目录)。 - 必须提供 fleet-id 与 instance-id 参数。
- 日志文件必须存在,否则无法展示。
- 对于仍在运行的实例,仅展示最后 50 行,而非完整日志,以避免输出数千行内容。
- 必须先检查实例状态再展示日志,否则可能把仍在运行的实例误报为“已完成”,误导开发者。
- 退出标准:日志内容已展示;若实例运行中,仅显示最后 50 行并附“[still running]”提示;若实例已完成,显示完整日志及 state.json 状态摘要(检查点是否满足)。