# Agent健身房定时运行和候选包审计工具 # Agent健身房运行审计诊断流程样例 ## 入口 ```bash python scripts/night_gym_doctor.py \ --date 2026-05-02 \ --plist "$HOME/Library/LaunchAgents/Agent健身房.plist" \ --output-dir "$HOME/Library/Mobile Documents/com~apple~CloudDocs/odyssey/0 收集箱/Agent健身房" ``` ## 输入来源 | 来源 | 用途 | |---|---| | `~/Library/LaunchAgents/Agent健身房.plist` | 读取磁盘上的触发时间、命令、输出目录 | | `launchctl print gui/$UID/Agent健身房` | 读取当前已加载状态、runs、last exit code、实际 trigger | | `master.log` 和 `out/sub/*.log` | 判断主进程和子进程是否完成,汇总 tokens used | | `候选清单.json/manifest.json` | 检查候选数量、approval 状态和包结构 | | Codex session `rate_limits.primary` | 估算 5 小时窗口使用比例变化 | ## 核心检查 | 检查项 | 通过信号 | 失败信号 | |---|---|---| | LaunchAgent loaded | `Agent健身房` 存在且 `runs >= 1` | `not-loaded` 或 label 不匹配 | | 触发时间一致 | plist 与 loaded trigger 都是 `04:00` | plist 是 `04:00`,loaded 仍是 `01:00` | | 输出目录一致 | loaded command 带正确 `--output-dir` | 仍写到旧的 `~/.codex/night-gym/packages` | | 运行成功 | `last exit code = 0` 且 `Codex exec rc: 0` | launchd 或 Codex 日志非 0 | | 包完整 | 有 `早间复盘.md`、`候选清单.json`、`审批.sh`、`示例/`、`子分析/` | 空目录、缺主文件、子分析缺完成标记 | | 额度可解释 | master/subagent tokens 可汇总,rate_limits 有前后百分比 | 只能看到单个进程 token 或找不到窗口数据 | ## 示例输出 ```text Agent健身房诊断:WARN - 定时任务已加载,昨晚执行成功:runs=1,last_exit=0 - 配置漂移:磁盘 plist=04:00,但 loaded trigger=01:00,需要 reload - 输出包存在:2026-05-02-Agent健身房候选包,候选数=5,approval=pending - 额度:master 123,873 + subagents 195,824 = 319,697 tokens;5 小时窗口约从 96% 到 97% 建议: 1. launchctl bootout gui/$UID ~/Library/LaunchAgents/Agent健身房.plist 2. launchctl bootstrap gui/$UID ~/Library/LaunchAgents/Agent健身房.plist 3. 重新运行 doctor,确认 loaded trigger 与 --output-dir 一致 ```