# 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" ← 无效值 ``` ### 根本原因 1. **OpenClaw 配置验证过于严格** - `memorySearch.provider` 只支持 `"openai"` 值 - `"ollama"` 被标记为 "Invalid input" 2. **OpenClaw 自动重新生成配置** - 即使手动移除 memorySearch,OpenClaw 仍会重新生成 - 使用旧值 `"ollama"` 导致持续报错 3. **1号机 vs 2号机 配置差异** - 1号机:`provider: "openai"` ✅ 正常工作 - 2号机:`provider: "ollama"` ❌ 无效 --- ## 解决过程 ### 尝试1:移除 noProxy ```bash python3 -c "c['models']['providers']['openai'].pop('noProxy', None)" systemctl --user restart openclaw-gateway.service ``` 结果:❌ 无效 ### 尝试2:移除 memorySearch ```bash python3 -c "c['agents']['defaults'].pop('memorySearch', None)" systemctl --user restart openclaw-gateway.service ``` 结果:❌ OpenClaw 重新生成 ### 尝试3:切换 .31 向量化 ```bash c['agents']['defaults']['memorySearch']['remote']['baseUrl'] = 'http://192.168.0.31:11434/v1' ``` 结果:❌ provider 错误 ### 尝试4:清理会话锁 ```bash rm -f ~/.openclaw/agents/main/sessions/*.lock python3 -c "d['active'] = None; d['sessions'] = {}" ``` 结果:✅ 清理成功,但未解决核心问题 ### 尝试5:修复 Provider(最终方案) ```bash c['agents']['defaults']['memorySearch']['provider'] = 'openai' systemctl --user restart openclaw-gateway.service ``` 结果:✅ 成功 --- ## 诊断命令 ### 服务状态检查 ```bash systemctl --user status openclaw-gateway.service ``` ### 日志分析 ```bash tail -100 /tmp/openclaw/openclaw-2026-02-05.log ``` ### 配置检查 ```bash 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))" ``` ### 会话锁检查 ```bash ls -la ~/.openclaw/agents/main/sessions/*.lock cat ~/.openclaw/agents/main/sessions/*.lock ``` ### Provider 修复 ```bash 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 内部行为 --- ## 最终配置 ```json { "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*