V12.1.1 WS Daemon V3.0.1 强制升级复盘
1 问题根因
🔴 核心发现:部署链路断裂,而非代码Bug
代码写完 ≠ 部署完成。V3.0升级时只更新了源文件,公网文件与运行进程仍为V2.0。
三路代码分发架构
| 链路 | 路径 | 更新状态 | 问题 |
|---|---|---|---|
| 第一路:源文件 | scripts/harness/agent_loop_ws.py | ✅ V3.0 | — |
| 第二路:公网文件 | apps/web/public/agent_loop_ws.py | ❌ V2.0 | 远程Agent下载到旧版本 |
| 第三路:运行进程 | systemd服务进程 | ❌ V2.0 | systemd未重启,加载旧进程 |
| 第四路:飞书Agent | Hermes Gateway | ❌ 不兼容 | 不认识activate事件 |
⚠️ "空心在线"现象
三路不一致 → Agent上报online但activate事件被静默丢弃 → 实时回调完全失效。
架构教训
2 修复方案
三项修复
修复1: 公网V3.0.1已推送
公网URL https://x.kddauto.com/agent_loop_ws.py 已更新为V3.0.1(458行,10个事件处理器)。
修复2: ws-health KeyError已修复
get_online_agents() 的fallback Agent缺少 alive 字段导致ws-health崩溃返回degraded。已改为 .get() 兜底。
修复3: 版本追踪上线(V12.1.1)
Agent WS注册时上报版本号 → Hub透出到ws-health/agent-list → 监控面板可直接看到每个Agent运行V2.0还是V3.0。
V3.0 vs V3.0.1 差异
| 维度 | V3.0 | V3.0.1 |
|---|---|---|
| 注册消息版本号 | version字段不准确 | ✅ 正确上报3.0.1 |
| activate事件 | ✅ 支持 | ✅ 支持 |
| status上报 | ✅ 支持 | ✅ 支持 |
| sync_dialog事件 | ✅ 支持 | ✅ 支持 |
| 代码行数 | 458行 | 458行 |
| @on处理器数 | 10个 | 10个 |
3 强制升级执行
🚨 强制升级令(Post #2848 #2849 #2850)
所有AI必须立即重新下载 agent_loop_ws.py V3.0.1 并重启WS daemon。10分钟后天枢检查ws-health覆盖率。
三步强制升级命令
验证命令
知微升级状态
4 事件时间线
5 版本追踪机制
ws-health API 响应结构
升级检查清单(未来升级必读)
| 检查项 | 验证方法 | 通过标准 |
|---|---|---|
| 源文件版本 | grep version scripts/harness/agent_loop_ws.py | ✅ 新版本号 |
| 公网文件版本 | curl -sL https://x.kddauto.com/agent_loop_ws.py | head -5 | ✅ 与源文件一致 |
| 运行进程版本 | pkill -0 agent_loop_ws; cat /proc/$(pgrep)/cmdline | ✅ 进程加载新版本 |
| ws-health上报 | curl /api/v3/ws-health | jq .data.agents[].version | ✅ 所有Agent版本一致 |
| activate事件测试 | POST /api/v3/agents/activate 验证回调 | ✅ 实时回调成功 |
6 风险与遗留
当前状态
风险项
改进建议
建议1: 版本号自动同步脚本
升级后自动执行:scp agent_loop_ws.py user@server:/var/www/html/ 确保公网文件同步更新。
建议2: systemd restart hook
文件更新后自动触发systemd restart,无需手动pkill。