5.2 KiB
5.2 KiB
2号机 Telegram 机器人故障报告
基本信息
| 项目 | 内容 |
|---|---|
| 日期 | 2026-02-05 |
| 时间 | 08:15 - 08:50 (约35分钟) |
| 故障现象 | Telegram 机器人 @dctc_02_bot 无响应 |
| 严重程度 | 🔴 高 |
故障经过
08:15 - 首次报告
- 用户报告 Telegram 机器人无响应
- 检查发现配置错误:
memorySearch.provider: "ollama"
08:21 - 第二次修复尝试
- 移除
noProxy配置键 - 服务重启成功但仍未回复
08:28 - 深度诊断
- SSH 登录 2号机深度分析
- 发现 memory 系统尝试使用 OpenAI embeddings(中国不可用)
08:32 - 尝试切换 .31 向量化服务
- 配置
remote.baseUrl: "http://192.168.0.31:11434/v1" - 触发新错误:
memorySearch.provider: Invalid input
08:35 - 发现 2号机有本地 Ollama
ollama list显示有nomic-embed-text:latest和mxbai-embed-large:latest- 切换到本地服务
08:38 - 会话锁问题
- 发现锁文件:
e93cef24-f3c1-4c4d-a874-8a9b227634bd.jsonl.lock - 清理锁文件并重置会话状态
08:43 - Provider 根本原因
- 发现核心问题:OpenClaw 不支持
provider: "ollama" - 必须使用
provider: "openai"
08:50 - 最终修复
- 将
provider改为"openai" - 服务重启成功
- ✅ 机器人恢复正常
根本原因
直接原因
agents.defaults.memorySearch.provider: "ollama" ← 无效值
根本原因
-
OpenClaw 配置验证过于严格
memorySearch.provider只支持"openai"值"ollama"被标记为 "Invalid input"
-
OpenClaw 自动重新生成配置
- 即使手动移除 memorySearch,OpenClaw 仍会重新生成
- 使用旧值
"ollama"导致持续报错
-
1号机 vs 2号机 配置差异
- 1号机:
provider: "openai"✅ 正常工作 - 2号机:
provider: "ollama"❌ 无效
- 1号机:
解决过程
尝试1:移除 noProxy
python3 -c "c['models']['providers']['openai'].pop('noProxy', None)"
systemctl --user restart openclaw-gateway.service
结果:❌ 无效
尝试2:移除 memorySearch
python3 -c "c['agents']['defaults'].pop('memorySearch', None)"
systemctl --user restart openclaw-gateway.service
结果:❌ OpenClaw 重新生成
尝试3:切换 .31 向量化
c['agents']['defaults']['memorySearch']['remote']['baseUrl'] = 'http://192.168.0.31:11434/v1'
结果:❌ provider 错误
尝试4:清理会话锁
rm -f ~/.openclaw/agents/main/sessions/*.lock
python3 -c "d['active'] = None; d['sessions'] = {}"
结果:✅ 清理成功,但未解决核心问题
尝试5:修复 Provider(最终方案)
c['agents']['defaults']['memorySearch']['provider'] = 'openai'
systemctl --user restart openclaw-gateway.service
结果:✅ 成功
诊断命令
服务状态检查
systemctl --user status openclaw-gateway.service
日志分析
tail -100 /tmp/openclaw/openclaw-2026-02-05.log
配置检查
cat ~/.openclaw/openclaw.json | python3 -c "import sys,json; c=json.load(sys.stdin); print(json.dumps(c.get('agents',{}).get('defaults',{}).get('memorySearch', {}), indent=2))"
会话锁检查
ls -la ~/.openclaw/agents/main/sessions/*.lock
cat ~/.openclaw/agents/main/sessions/*.lock
Provider 修复
python3 -c "import json; c=json.load(open('/root/.openclaw/openclaw.json')); c['agents']['defaults']['memorySearch']['provider'] = 'openai'; open('/root/.openclaw/openclaw.json','w').write(json.dumps(c, indent=2))"
经验教训
1. OpenClaw 配置验证严格
- 很多常见配置键不受支持
- 必须使用
openclaw doctor --fix自动清理
2. Provider 值限制
memorySearch.provider只支持"openai""ollama"不被识别为有效值
3. 1号机 vs 2号机 必须一致
- 两台机器的配置应该保持一致
- 发现问题时优先对比配置差异
4. 会话锁会导致死锁
- 锁文件存在但会话未激活时需要清理
rm -f *.lock+ 重置 sessions.json
5. 外部监控不会修改配置
- Crontab、OpenClaw cron、Systemd timers 都不会修改配置
- 配置变化来自 OpenClaw 内部行为
最终配置
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "mxbai-embed-large:latest",
"remote": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local"
}
}
}
}
}
相关文件
| 文件 | 路径 |
|---|---|
| 主配置 | ~/.openclaw/openclaw.json |
| 机器人档案 | ~/doc/BOTS/2号机.md |
| 故障记录 | ~/doc/BOTS/2号机-2026-02-05-Telegram故障.md |
| 系统日志 | /tmp/openclaw/openclaw-2026-02-05.log |
后续建议
立即行动
- 验证 2号机 Telegram 机器人稳定性
- 检查其他配置是否也有类似问题
长期改进
- 创建配置检查脚本,定期验证配置有效性
- 文档化所有有效的 provider 值
- 建立 1号机 vs 2号机 配置对比机制
创建时间: 2026-02-05 09:10 创建者: OpenClaw Assistant 最后更新: 2026-02-05 09:10