# Agent健身房运行与候选包自检
类型:`diagnostic-tool`
风险:`low`
## Night Gym Package Run Doctor 诊断流程样例
### 输入
```bash
python scripts/night_gym_package_doctor.py \
--run-dir /Users/bytedance/.codex/night-gym/runs/2026-05-04 \
--plist ~/Library/LaunchAgents/Agent健身房.plist \
--json
```
### 核心检查
| 检查项 | 输入来源 | 成功信号 | 失败信号 |
| --- | --- | --- | --- |
| 定时配置一致性 | plist + launchctl print | `schedule_consistent` | `plist_loaded_drift` |
| 主/子 agent 完成度 | master.log + out/sub/*.log | `all_subagents_done` | `missing_SUBAGENT_DONE` |
| token 统计完整性 | master.log + out/sub/*.log | `usage_complete` | `subagent_usage_missing` |
| 候选包结构 | out/manifest.json + out/sub/*.json | `package_complete` | `invalid_json` / `missing_example` |
| 审批脚本安全性 | out/approve.sh + 临时 manifest | `approval_script_ok` | `approval_script_breaks_json` |
| 中文本地化 | manifest / 文件名 / MORNING_REVIEW | `localized_names_ok` | `non_localized_filename` |
### 示例输出
```json
{
"run_dir": "/Users/bytedance/.codex/night-gym/runs/2026-05-04",
"status": "fail",
"signals": [
{"name": "plist_loaded_drift", "detail": "plist=04:00, loaded=01:00, need reload LaunchAgent"},
{"name": "usage_complete", "detail": "master + 5 subagent logs counted"},
{"name": "approval_script_ok", "detail": "dry-run preserved valid manifest JSON"}
],
"next_actions": [
"reload ~/Library/LaunchAgents/Agent健身房.plist",
"keep subagent token accounting in MORNING_REVIEW",
"run doctor again before approving candidates"
]
}
```
### 落地结果
早间复盘顶部先展示状态表:运行是否成功、候选包是否完整、是否可审批、成本是否统计完整。证据和候选详情放到后面,避免复盘一开始被长段 evidence 淹没。