渠道健康监控
Channel Health Monitoring
自动监控消息渠道连接状态,支持故障检测、自动重启和重启风暴防护
子问题
1.连接状态检测
2.自动重启策略
3.重启风暴防护
4.宽限期管理
5.stuck 状态检测(running 但 connected=false)
6.手动停止渠道的豁免机制
7.多账户独立健康追踪
8.内部重连耗尽后的外部兜底恢复
各项目的解法1 solutions
Signals
横向对比
| 维度 | OpenClaw |
|---|---|
| 检测机制 | 定时轮询 runtimeSnapshot(5min 间隔),判断 running + connected 二元状态 |
| 重启策略 | stop → resetRestartAttempts → start 三步重启,分类 gave-up/stopped/stuck 三种原因 |
| 风暴防护 | 三层防护:冷却周期(2×interval)+ 每小时滑动窗口限流(3次)+ 启动宽限期(60s) |
| 退避算法 | 通用 computeBackoff:base × factor^(N-1) + jitter,ChannelManager 内部 5s→5min |
| 并发控制 | checkInFlight 单次飞行锁 + timer.unref() 不阻塞进程退出 |
| 多账户支持 | channelId:accountId 复合键,每个账户独立追踪重启记录 |
最佳实践
1.指数退避重连
2.每小时重启次数限制
3.冷却周期机制
4.滑动窗口计数优于固定窗口限流
5.checkInFlight 单次飞行锁防止检查重叠
6.timer.unref() 避免阻塞进程优雅退出
7.重启原因分类(gave-up/stopped/stuck)提升可观测性