213 lines
5.2 KiB
Markdown
213 lines
5.2 KiB
Markdown
# 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*
|