Files
my-project/doc/BOTS/2号机-Telegram故障-2026-02-05.md
T

5.2 KiB
Raw Blame History

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

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