345 lines
8.7 KiB
Markdown
345 lines
8.7 KiB
Markdown
# 2号机记忆 (2号机 / 守护者)
|
||
|
||
> 记忆更新时间: 2026-02-06 11:00 CST
|
||
> 上次整理: 2026-02-05
|
||
|
||
---
|
||
|
||
## 身份
|
||
|
||
- **Name:** 2号机
|
||
- **Code Name:** 守护者 (Guardian)
|
||
- **Creature:** AI Assistant
|
||
- **Vibe:** Sharp, efficient, reliable
|
||
- **Emoji:** 🛡️
|
||
|
||
### 核心职责
|
||
|
||
- 🛡️ **系统守护者** - 保证 OpenClaw 系统稳定运行
|
||
- 🤖 **助手培训者** - 帮助主人学习和掌握机器人的使用方法
|
||
- 📝 **记忆 keeper** - 维护跨会话记忆
|
||
- 📚 **文档化** - 定期总结归纳,重要内容文档化
|
||
|
||
---
|
||
|
||
## 用户
|
||
|
||
- **Name:** yh6788
|
||
- **Platform:** Telegram
|
||
- **ID:** 5117446326
|
||
- **Timezone:** Asia/Shanghai
|
||
|
||
### 用户偏好
|
||
|
||
- **主力模型:** MiniMax
|
||
- **备用模型:** DeepSeek
|
||
- **本地模型:** Ollama llama3
|
||
- **向量模型:** nomic-embed-text:latest
|
||
- **代理:** 7890 (192.168.0.66:7890)
|
||
|
||
### 沟通风格
|
||
|
||
- 简洁高效,避免废话
|
||
- 技术问题直接给方案
|
||
- 系统性问题需要深入分析根因
|
||
- 重视记忆的连贯性
|
||
- ✅ **任务完成后必须主动报告** - 收到任务后,完成时主动汇报结果
|
||
|
||
### Telegram 特性
|
||
|
||
- TG 是 Telegram 的简称
|
||
- 需要翻墙,网络可能暂时失效
|
||
- 断线期间消息会积累,连接后一起收到
|
||
|
||
---
|
||
|
||
## 青龙 (1号机)
|
||
|
||
- **别名:** 青龙 = 1号机
|
||
- **SSH:** root@192.168.0.31
|
||
- **密码:** 3efvVGY&
|
||
- **已知问题:** 内存持久化故障(已手动修复)
|
||
- **角色:** 备用节点/监控节点
|
||
|
||
### 硬件配置
|
||
|
||
| 项目 | 规格 |
|
||
|------|------|
|
||
| CPU | Intel Core i5 (4核心/4线程) |
|
||
| 内存 | 8GB DDR3 |
|
||
| 存储 | 256GB SSD |
|
||
| 网络 | 有线连接 |
|
||
|
||
### 性能优化方向
|
||
|
||
| 场景 | 推荐配置 | 说明 |
|
||
|------|----------|------|
|
||
| **轻量服务** | 2-3并发 | Ollama / 监控脚本 |
|
||
| **中等负载** | 1-2并发 | 可运行一个 Agent |
|
||
| **本地模型** | qwen2.5:3b / llama3:8b | 8GB 内存可流畅运行 |
|
||
| **向量化** | nomic-embed-text | 274MB,适合 256G SSD |
|
||
|
||
### 推荐应用
|
||
|
||
1. **监控服务** - system-monitor.sh (持续运行)
|
||
2. **轻量 Agent** - 独立会话处理简单任务
|
||
3. **本地 Ollama** - qwen2.5:3b (2GB) 或 llama3:8b (8GB需注意内存)
|
||
4. **备份节点** - 会话文件同步/故障转移
|
||
|
||
---
|
||
|
||
## 2号机 (本机)
|
||
|
||
- **机型:** ThinkPad X230
|
||
- **CPU:** Intel Core i7-3520M (3代, 2核心/4线程, 最高 3.6GHz)
|
||
- **内存:** 8GB DDR3
|
||
- **存储:** 500GB HDD (7200RPM)
|
||
- **系统:** Linux 6.17.0-12-generic
|
||
- **Node:** v22.22.0
|
||
- **运行位置:** /root/.openclaw/workspace
|
||
|
||
### 性能特点
|
||
|
||
| 项目 | 表现 | 说明 |
|
||
|------|------|------|
|
||
| CPU | 中等 | 3代 i7 办公足够,AI 推理较慢 |
|
||
| 内存 | 充足 | 8GB 可同时运行 Gateway + Ollama |
|
||
| 存储 | 瓶颈 | HDD 相比 SSD 读写慢很多 |
|
||
| 适合任务 | 办公/对话 | 不适合大规模向量计算 |
|
||
|
||
### 优化建议
|
||
|
||
- 避免大量文件 I/O 操作
|
||
- 本地模型用轻量级 (qwen2.5:3b)
|
||
- 监控脚本定期清理日志
|
||
|
||
```json
|
||
{
|
||
"providers": {
|
||
"minimax": { "models": { "default": "minimax-minimax" } },
|
||
"deepseek": { "models": { "default": "deepseek-chat" } },
|
||
"ollama": {
|
||
"remote": { "baseUrl": "http://localhost:11434/v1" }
|
||
}
|
||
},
|
||
"memorySearch": {
|
||
"provider": "openai",
|
||
"model": "nomic-embed-text:latest",
|
||
"remote": { "baseUrl": "http://localhost:11434/v1" },
|
||
"cache": { "enabled": true, "maxEntries": 50000 }
|
||
}
|
||
}
|
||
```
|
||
|
||
### 代理配置
|
||
|
||
```bash
|
||
# /etc/environment
|
||
NO_PROXY="localhost,127.0.0.1,192.168.0.66"
|
||
no_proxy="localhost,127.0.0.1,192.168.0.66"
|
||
```
|
||
|
||
### 启动命令
|
||
|
||
```bash
|
||
NO_PROXY="localhost,127.0.0.1,192.168.0.66" openclaw gateway restart
|
||
```
|
||
|
||
---
|
||
|
||
## 技术经验库
|
||
|
||
### 问题排查清单
|
||
|
||
#### 1. Gateway 无法连接 Ollama
|
||
|
||
**症状:** `fetch failed` 或连接超时
|
||
|
||
**排查步骤:**
|
||
1. 检查 `NO_PROXY` 是否包含 Ollama 地址
|
||
2. Gateway 是普通进程,需手动设置环境变量
|
||
3. 执行: `NO_PROXY="192.168.0.66" openclaw gateway restart`
|
||
|
||
#### 2. Embedding 上下文超限
|
||
|
||
**症状:** `input length exceeds the context length`
|
||
|
||
**解决方案:**
|
||
```bash
|
||
sed -i 's/mxbai/nomic/' /root/.openclaw/openclaw.json
|
||
```
|
||
|
||
**模型对比:**
|
||
| 模型 | 大小 | 上下文 | 适用 |
|
||
|------|------|--------|------|
|
||
| mxbai-embed-large | 669MB | 短 (512) | 短文本 |
|
||
| nomic-embed-text | 274MB | 长 | 长文档 |
|
||
|
||
#### 3. Ollama 批量上传 404
|
||
|
||
**症状:** `batch file upload failed: 404`
|
||
|
||
**处理:** 正常现象,OpenClaw 自动降级到非批量模式,无需干预
|
||
|
||
#### 4. 监控脚本 awk 语法错误
|
||
|
||
**症状:** `awk: syntax error at or near %`
|
||
|
||
**修复:**
|
||
```bash
|
||
# 错误
|
||
mem_usage=$(awk "BEGIN {printf \"%.1f\", ($mem_used/$mem_total)*100}")
|
||
|
||
# 正确
|
||
mem_usage=$(echo "scale=1; $mem_used*100/$mem_total" | bc 2>/dev/null || echo "0.0")
|
||
```
|
||
|
||
#### 5. Compaction 卡死 (重点!)
|
||
|
||
**症状:**
|
||
- 系统无响应,会话中断
|
||
- Gateway 无法关闭 (`shutdown timed out`)
|
||
- 日志显示 `compaction retry` 反复出现
|
||
|
||
**根因:**
|
||
- 大会话文件 (9.6MB+) 导致 compaction 算法超时
|
||
- 重试机制没有熔断
|
||
- 阻塞整个 Gateway
|
||
|
||
**解决方案:**
|
||
```bash
|
||
# 1. 清理卡死的会话
|
||
rm /root/.openclaw/agents/main/sessions/[session-id].jsonl
|
||
|
||
# 2. 重启 Gateway
|
||
openclaw gateway restart
|
||
|
||
# 3. 预防: 调整配置 (可选)
|
||
# agents.defaults.compaction.enabled = false
|
||
```
|
||
|
||
**配置修复 (2026-02-06):**
|
||
- 改用 localhost Ollama (绕过代理)
|
||
- 切换到 nomic-embed-text (更长上下文)
|
||
|
||
---
|
||
|
||
## 学习习惯
|
||
|
||
1. ✅ 定期总结归纳 (每日/每周)
|
||
2. ✅ 重要内容写文档 (`/root/doc/`)
|
||
3. ✅ 跨会话通过记忆延续 (`MEMORY.md`)
|
||
4. ✅ 技术方案成熟可靠后再记录
|
||
|
||
---
|
||
|
||
## 关键教训
|
||
|
||
### 历史问题 (已解决)
|
||
|
||
| 日期 | 问题 | 教训 |
|
||
|------|------|------|
|
||
| 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 不是必须的** - 可以禁用,不会影响对话功能
|
||
|
||
---
|
||
|
||
## 技术决策
|
||
|
||
### 优先级
|
||
|
||
1. **稳定 > 功能** - 宁可禁用功能,也不让系统崩溃
|
||
2. **简单 > 复杂** - 避免复杂的批量操作,单条处理更可靠
|
||
3. **监控 > 信任** - 关键操作要有日志和状态检查
|
||
|
||
### 决策记录
|
||
|
||
| 决策 | 选择 | 原因 |
|
||
|------|------|------|
|
||
| 向量模型 | nomic-embed-text | 长上下文适合文档索引 |
|
||
| 批量写入 | 禁用 | Ollama 不稳定,单条更可靠 |
|
||
| paths 配置 | symlink 替代 | OpenClaw 不支持自定义路径 |
|
||
| compaction | 监控为主 | 大文件会卡死,需要手动清理 |
|
||
|
||
---
|
||
|
||
## 系统状态
|
||
|
||
### 最后更新时间
|
||
|
||
- **日期:** 2026-02-06 11:00 CST
|
||
- **整理人:** 2号机 (自动整理)
|
||
- **源文件:** memory/2026-02-04.md, memory/2026-02-05.md
|
||
|
||
### 待办
|
||
|
||
- [ ] 测试 compaction 禁用后的系统表现
|
||
- [x] 建立会话文件大小监控 (超过 5MB 预警) - 2026-02-06
|
||
- [ ] 文档化 SSH 隧道配置
|
||
- [ ] 完善节点 (nodes) 监控体系
|
||
|
||
---
|
||
|
||
## 会话文件监控 (2026-02-06 新增)
|
||
|
||
### 监控配置
|
||
|
||
```bash
|
||
# 阈值设置
|
||
SESSION_WARN_SIZE=8MB # 发送警告提醒
|
||
SESSION_NEW_SESSION_SIZE=5MB # 建议开新会话
|
||
```
|
||
|
||
### 监控行为
|
||
|
||
| 条件 | 动作 |
|
||
|------|------|
|
||
| ≥8MB | Telegram 发送警告 (每增加1MB提醒一次) |
|
||
| ≥5MB | 记录日志,建议开新会话 |
|
||
| 完成后 | 用户手动开新会话,发送"新对话已就绪" |
|
||
|
||
### 脚本位置
|
||
|
||
- `/root/.openclaw/scripts/system-monitor.sh` - 监控主脚本
|
||
- `/root/.openclaw/scripts/send-session-alert.sh` - Telegram 提醒脚本
|
||
- `/var/log/openclaw-monitor/session-alerts.log` - 会话告警日志
|
||
|
||
### 日志示例
|
||
|
||
```
|
||
[SESSION WARN] 2026-02-06 12:00:00 会话文件过大: abc123 (8.5MB) - 建议开启新会话
|
||
```
|
||
|
||
### 限制说明
|
||
|
||
> ⚠️ **自动开新会话** 无法由监控脚本直接实现,因为会话管理是 OpenClaw Gateway 内部逻辑。脚本只能:
|
||
> 1. 监控并发送提醒
|
||
> 2. 记录日志供排查
|
||
>
|
||
> 实际开新会话需要:
|
||
> - 用户手动重启 Gateway 或
|
||
> - 通过 OpenClaw API 创建新会话
|
||
|
||
---
|
||
|
||
## 重要提示
|
||
|
||
> **关于 compaction:** 每次大对话后可能会产生 9MB+ 的会话文件,这会导致 compaction 算法超时。建议监控会话文件大小,必要时手动清理。
|
||
|
||
> **关于代理:** NO_PROXY 必须包含所有本地服务地址 (localhost, 127.0.0.1, 192.168.0.66)
|
||
|
||
> **关于配置:** 不要手动修改 agents.memorySearch,memory plugin 有独立配置
|
||
|
||
---
|
||
|
||
*记忆版本: v2.0 (2026-02-06 整理)*
|