Files
my-project/doc/HEALTH_STABILITY_GUIDE.md
T

269 lines
6.2 KiB
Markdown

# OpenClaw 配置健康稳定运营指南
> 文档版本: v1.0
> 创建时间: 2026-02-07
> 适用: 青龙 & 2号机
---
## 核心原则
### 优先级排序
| 优先级 | 原则 | 说明 |
|--------|------|------|
| **1** | **稳定 > 功能** | 宁可禁用功能,也不让系统崩溃 |
| **2** | **简单 > 复杂** | 避免复杂的批量操作,单条处理更可靠 |
| **3** | **监控 > 信任** | 关键操作要有日志和状态检查 |
| **4** | **备份 > 自信** | 自动备份配置文件,防止灾难性错误 |
---
## 配置备份策略
### 自动备份脚本
```bash
# 脚本位置
/root/.openclaw/scripts/config-backup-monitor.sh
# 功能
- 每60秒检查 openclaw.json 变化
- 自动备份(带时间戳)
- 最多保留10个版本
```
### 使用方法
```bash
# 启动监控
nohup /root/.openclaw/scripts/config-backup-monitor.sh > /var/log/openclaw-config-backup.log 2>&1 &
# 查看日志
tail -f /var/log/openclaw-config-backup.log
# 查看备份
ls -la /root/.openclaw/backups/
```
---
## 监控体系
### 系统级监控
| 监控项 | 脚本 | 频率 |
|--------|------|------|
| Gateway 状态 | system-monitor.sh | 每10分钟 |
| 配置变更 | config-backup-monitor.sh | 每60秒 |
| Telegram 连接 | telegram-watchdog.sh | 持续运行 |
| 会话文件大小 | 内置监控 | 实时 |
### 告警阈值
| 指标 | 警告 | 危险 | 处理 |
|------|------|------|------|
| 内存使用 | >70% | >85% | 检查进程 |
| 会话文件 | >5MB | >8MB | 建议新会话 |
| Gateway 响应 | >30s | >60s | 重启 Gateway |
| 磁盘空间 | <20% | <10% | 清理日志 |
---
## 问题排查清单
### 1. Gateway 无法连接
```bash
# 排查步骤
1. 检查 NO_PROXY 是否包含 Ollama 地址
2. Gateway 是普通进程,需手动设置环境变量
3. 执行: NO_PROXY="192.168.0.66" openclaw gateway restart
```
### 2. Embedding 上下文超限
```bash
# 症状
input length exceeds the context length
# 解决方案
sed -i 's/mxbai/nomic/' /root/.openclaw/openclaw.json
# 模型对比
| 模型 | 大小 | 上下文 | 适用 |
|------|------|--------|------|
| mxbai-embed-large | 669MB | 短 (512) | 短文本 |
| nomic-embed-text | 274MB | 长 (8192) | 长文档 |
```
### 3. Ollama 批量上传 404
```bash
# 症状
batch file upload failed: 404
# 处理
正常现象,OpenClaw 自动降级到非批量模式,无需干预
```
### 4. Compaction 卡死 (重点!)
```bash
# 症状
- 系统无响应,会话中断
- Gateway 无法关闭 (shutdown timed out)
- 日志显示 compaction retry 反复出现
# 根因
大会话文件 (9MB+) 导致 compaction 算法超时
# 解决方案
# 1. 清理卡死的会话
rm /root/.openclaw/agents/main/sessions/[session-id].jsonl
# 2. 重启 Gateway
openclaw gateway restart
# 3. 预防
# agents.defaults.compaction.enabled = false
```
### 5. LLM 请求超时
```bash
# 排查步骤
1. 检查模型 API 是否正常
2. 查看代理是否通畅
3. 检查是否有会话文件过大
4. 重启 Gateway 清理状态
# 日志关键词
FailoverError: LLM request timed out
```
---
## 性能优化经验
### 青龙 (1号机) - 8GB 内存
| 场景 | 推荐配置 | 说明 |
|------|----------|------|
| 轻量服务 | 2-3并发 | Ollama / 监控脚本 |
| 中等负载 | 1-2并发 | 可运行一个 Agent |
| 本地模型 | qwen2.5:3b / llama3:8b | 注意内存占用 |
| 向量化 | nomic-embed-text | 274MB,适合 SSD |
### 2号机 - 8GB 内存 + HDD
| 场景 | 推荐配置 | 说明 |
|------|----------|------|
| 避免大量 | 文件 I/O 操作 | HDD 读写慢 |
| 本地模型 | qwen2.5:3b (2GB) | 流畅运行 |
| 监控脚本 | 定期清理日志 | 防止磁盘满 |
---
## 技术决策记录
| 决策 | 选择 | 原因 |
|------|------|------|
| 向量模型 | nomic-embed-text | 长上下文适合文档索引 |
| 批量写入 | 禁用 | Ollama 不稳定,单条更可靠 |
| paths 配置 | symlink 替代 | OpenClaw 不支持自定义路径 |
| compaction | 监控为主 | 大文件会卡死,需手动清理 |
| 版本升级 | 稳定优先 | 不盲目追新,验证后再升级 |
---
## 配置修改流程
### 修改前
1. ✅ 确认修改必要性
2. ✅ 备份当前配置
3. ✅ 记录修改意图
### 修改中
1. ✅ 使用 `openclaw config.patch` 或手动编辑
2. ✅ 修改后检查语法: `python3 -m json.tool openclaw.json > /dev/null`
### 修改后
1. ✅ 重启 Gateway: `openclaw gateway restart`
2. ✅ 观察日志: `tail -f /tmp/openclaw/openclaw-*.log`
3. ✅ 验证功能正常
---
## 常见问题速查
| 问题 | 快速解决 |
|------|----------|
| Gateway 无响应 | `openclaw gateway restart` |
| Telegram 断开 | 检查代理,查看 telegram-watchdog.log |
| 模型调用失败 | 检查 API Key,确认网络通畅 |
| 内存占用过高 | 强制重启 Gateway |
| 日志文件过大 | `> /tmp/openclaw/openclaw.log` |
---
## 经验教训
### 历史问题
| 日期 | 问题 | 教训 |
|------|------|------|
| 2026-02-04 | 内存管理器缺少 embedding 模型 | 需单独配置 provider + embedding |
| 2026-02-05 | memorySearch.paths 配置无效 | OpenClaw 不支持自定义 paths,用 symlink 替代 |
| 2026-02-05 | Gateway 反复重启 | 不要手动添加 agents.memorySearch 配置 |
| 2026-02-06 | Compaction 卡死导致"死机" | 大会话需要分片或禁用 compaction |
### 核心认识
1. **Gateway 是普通进程** - 不继承 systemd 环境变量,需手动设置 NO_PROXY
2. **memorySearch 是独立 plugin** - 不走 agents.defaults 配置
3. **Symlink 解决路径问题** - OpenClaw 不支持 paths,用 `ln -s` 替代
4. **Compaction 不是必须的** - 可以禁用,不会影响对话功能
---
## 维护命令速查
```bash
# Gateway 管理
openclaw gateway status
openclaw gateway restart
openclaw gateway stop
# 问题排查
openclaw doctor --fix
openclaw doctor
# 配置管理
openclaw config.get
openclaw config.patch
# 日志查看
tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log
# 内存清理
rm /root/.openclaw/agents/main/sessions/*.jsonl
openclaw gateway restart
```
---
## 参考文档
- `/root/doc/OPENCLAW_HEALTH_CHECK.md` - 健康检查指南
- `/root/doc/TROUBLESHOOTING_GUIDE.md` - 故障排查
- `/root/doc/MULTI-MACHINE.md` - 多机部署
- `/root/doc/COORDINATION_DEPLOYMENT.md` - 协同部署
---
*文档维护: 2号机 (守护者)*