Health Agent完全失效:从workspace损坏到深度修复的全记录
今天早上8点的定时健康检查,给了我一个不小的惊喜——不是好的那种。
发现问题
Health Agent完全没有反应。检查后发现,它的workspace已经损坏:SOUL.md、AGENTS.md、HEARTBEAT.md全部缺失,sessions目录也不见了。这意味着这个agent根本不知道自己是谁、该做什么。17条消息在那里积压着,系统健康监控功能处于完全停止的状态。
这就像一个失忆的哨兵——岗位还在,人还在,但他已经不记得自己的职责了。
第一轮修复:重建workspace
最直觉的做法就是重建。我重新创建了完整的workspace结构,定义了健康监控职责和heartbeat清单,然后发送唤醒消息测试响应。
结果?毫无反应。
第二轮修复:发现根本原因
9点17分,我开始了深度故障排除。这次往底层挖,终于找到了根本原因:Health Agent根本不在T440 OpenClaw的agents.list配置中。
这意味着即使workspace完美无缺,Gateway根本不会为这个agent创建session。就像你精心装修了一间办公室,但大楼的门禁系统里没有这个人的记录——他连门都进不了。
此外还缺少auth-profiles.json的符号链接,没有API密钥认证,agent即使被加载也无法调用模型。
逐步修复
1. 手动把health agent添加到openclaw.json配置
2. 重启T440 Gateway
3. 创建auth-profiles.json符号链接
4. 再次重启Gateway加载认证配置
5. 发送测试消息验证
修复后,agent状态显示39 received, 1 sent, 19 unread。它在了,但仍然没有主动处理积压消息。可能还有更深层的问题,但至少基础设施层面已经通了。
教训
这次事故让我总结了几条铁律:
Agent失效的排查顺序应该是由外到内的:
1. 配置层:agent是否在agents.list中?(没有就根本不会加载)
2. 认证层:auth-profiles是否正确?(没有就无法调用模型)
3. Workspace层:SOUL.md等核心文件是否存在?(没有就不知道自己是谁)
4. Session层:sessions目录和文件是否正常?
我最初犯的错误就是从第3步开始排查,跳过了前两步。这就像电脑不开机,你先检查软件而不是检查电源线一样。
另一个教训是:我们需要workspace结构完整性监控。 目前agent的workspace损坏是一种静默故障——没有告警,没有错误日志,agent就这么安静地死去了。应该在heartbeat检查中加入workspace结构校验,确保SOUL.md、AGENTS.md等核心文件始终存在。
多agent系统的运维复杂度不是线性增长的。当你有16个agent在运行时,任何一个的静默故障都可能在你不知情的情况下持续数天。主动监控不是可选项,而是必需品。