AgentOps 健康采集¶
本文是 AgentOps 健康采集的详细说明。全部定时任务的总览见 调度系统。
每天 07:45 自动采集 8 种系统健康信号,写入 ledger 供晨间四签(morning-triage-v2)消费。
采集的信号¶
| 信号 | 检测方式 | 阈值(可配置) |
|---|---|---|
| 容器近期重启 | docker compose ps --format json 解析运行时间 |
< 2h 内重启 |
| 备份新鲜度 | 读 backup-cron 写的心跳(~/.myagentdata/agentops/backup-heartbeat.json);读不到才退回扫快照目录名 |
> 24h 未更新 |
| 磁盘使用率 | df -P /System/Volumes/Data |
> 85% |
| 网关错误循环 | scripts/check-gateway-errors.sh --json |
检测到重复错误 |
| 容器健康状态 | docker compose ps JSON 中的 (unhealthy) 状态 |
任何 unhealthy |
| tirith 安全扫描器不可用 | 读 ~/.hermes/bin/tirith* 前 4 字节魔数 |
非 \x7fELF(如 macOS 二进制)即告警 |
| issue-watcher 停滞/取数失败/全量失败 | ~/.myagentdata/repo-scanner/watcher-status.json |
状态文件缺失、last_poll_epoch > max(30min, 3×轮询间隔)、error_repos > 0、repos == 0、oldest_success_at > max(1h, 6×轮询间隔)、daily_sync 昨日未完成/今日 10:00 后仍未完成 |
| issue-notifier 停滞/发送失败/积压/死信/示例配置 | ~/.myagentdata/issue-notifier/status.json |
状态缺失、last_success_epoch > max(5min, 3×轮询间隔)、send_failed > 0、pending > 0 且 oldest_pending_age > max(15min, 10×轮询间隔)、dead > 0、placeholder_config == true |
调度¶
通过宿主机 launchd 每天 07:45(Asia/Shanghai)自动触发,早于晨间四签(07:50):
# 安装定时任务
./scripts/launchd/install-collect-agentops.sh
# 手动触发
launchctl start ai.myopenclaw.collect-agentops
# 查看日志
tail -f logs/collect-agentops.log
输出¶
采集结果写入 ~/.myagentdata/agentops/inbox.md。start.sh 启动时会创建该目录,避免 Docker 只读挂载缺少 agentops/ 子目录。自动采集项(source: auto)每次覆盖刷新,手动添加的条目保留不变。
## 容器 hermes 近期重启
- date: 2026-07-20
- source: auto | docker compose ps
- status: watch
- owner: owen
- evidence: 容器 hermes 运行时间: Up 30 minutes(< 2h 阈值)
- why_it_matters: 容器 hermes 在最近 2 小时内重启过,可能发生过崩溃或被手动重启
- suggested_next_action: 检查 docker compose logs hermes --tail 50 确认重启原因
- needs_human_decision: no
在晨间四签中的使用¶
morning-triage-v2 直接读 inbox.md(见 skills/morning-triage-v2/SKILL.md 的第 0 步)来消费 AgentOps 信号,不经过 TDAI 关键词搜索。当采集到异常信号时,晨间四签报告会包含系统健康小结。
配置¶
通过环境变量覆盖默认阈值:
| 变量 | 默认值 | 说明 |
|---|---|---|
AGENTOPS_RESTART_THRESHOLD |
2 |
容器重启检测窗口(小时) |
AGENTOPS_BACKUP_STALE_HOURS |
24 |
备份过期阈值(小时) |
AGENTOPS_DISK_THRESHOLD |
85 |
磁盘使用率告警阈值(百分比) |
AGENTOPS_DATA_DIR |
~/.myagentdata/agentops |
输出目录 |
AGENTOPS_BACKUP_ROOT |
~/Google Drive/.../myopenclaw-backups |
备份目录路径 |
手动运行¶
# 采集并写入 ledger
python3 scripts/collect_agentops.py
# 预览模式(不写入)
python3 scripts/collect_agentops.py --dry-run
故障排查¶
采集未触发¶
# 检查 launchd 任务
launchctl list | grep collect-agentops
# 查看上次运行日志
tail -50 logs/collect-agentops.log
inbox.md 不存在 / Daily Command Center 报 AgentOps 未部署¶
start.sh 会创建 ~/.myagentdata/agentops/。若宿主机 launchd 未安装,目录在但 inbox.md 不会自动生成 —— macOS 上 start.sh 会检测 ai.myopenclaw.collect-agentops.plist 缺失并主动打印警告,按提示安装即可:
morning-triage-v2 在 inbox.md 缺失时视为系统正常(不再当作「未部署」)。
输出文件为空¶
采集脚本在系统正常时不会写入内容(无异常 = 无条目)。手动运行 --dry-run 查看检测结果。