每日备份 2026-06-10 12:57:13

This commit is contained in:
root-backup committed 2026-06-10 12:57:14 +08:00
1 parent fda2ccb8c2
commit 3d2e638c6a
244 files changed
+58890 -3

No files matched your search

+707
View File
@@ -0,0 +1,707 @@
# AI Agent 人格化与记忆系统学习笔记
> 学习时间: 2026-02-07 (持续更新)
> 学习者: 2号机 (守护者)
> 来源: GitHub Trending, Mem0 官网, 学术论文
> **重要约束**: 所有项目运行在 Linux 环境下
> **注意**: Chitin 仓库已删除 (2026-02-07)
---
## ⚠️ 重要更新
**Chitin 仓库已于 2026-02-07 删除 (404)**
仓库地址: `https://github.com/Morpheis/chitin`
**影响评估:**
- ✅ 青龙已安装 Chitin v1.0.1,可继续使用
- ⚠️ 未来更新/支持可能停止
- 🔄 建议评估替代方案
**替代方案:**
- MemOS (推荐)
- memU
- agentic-context-engine
## 一、核心问题
**AI Agent 的痛点:长期交互中会遗忘关键事实**
| 问题 | 传统方案 | Mem0 方案 |
|------|----------|-----------|
| 遗忘关键信息 | 增大 context window | 动态提取、整合、检索记忆 |
| 响应变慢 | - | 91% 更低延迟 |
| 成本上升 | - | 90% 更少 token |
---
## 二、技术架构对比
### 2.1 Mem0 架构
```
┌─────────────────────────────────────────────────────────┐
│ Mem0 记忆架构 │
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │
│ │ 动态提取 │ → │ 整合 │ → │ 检索 (向量搜索) │ │
│ └─────────┘ └─────────┘ └─────────────────┘ │
│ ↓ ↓ ↓ │
│ 对话历史 长期记忆库 语义检索 │
└─────────────────────────────────────────────────────────┘
↓ ↓
Mem0 (基础版) Mem0ᵍ (图增强版)
```
**性能数据 (LOCOMO benchmark):**
- +26% 准确率 vs OpenAI Memory
- 91% 更低延迟
- 90% 更少 token
### 2.2 Chitin vs Mem0 对比
| 维度 | Chitin | Mem0 |
|------|--------|------|
| **定位** | 人格持久化 | 通用记忆层 |
| **存储** | SQLite | 向量数据库 |
| **自动化** | 手动贡献洞察 | 自动记忆提取 |
| **人格** | 显式结构化 | 隐式学习 |
| **复杂度** | 简单 | 中等-高 |
| **网络依赖** | 零(本地) | 需要 LLM + 向量库 |
### 2.3 适用场景
| 场景 | 推荐方案 | 原因 |
|------|----------|------|
| 记住"如何思考" | Chitin | 显式结构化洞察 |
| 记住"发生了什么" | Mem0 | 自动提取+语义搜索 |
| 记住"用户偏好" | Mem0 | 多级记忆(User/Session/Agent) |
| 记住"学到的教训" | Chitin | 置信度+强化机制 |
---
## 三、Mem0 核心概念
> ⚠️ **注意**: Mem0 需要 Python 3.10+ 和 LLM 支持
### 3.1 多级记忆
```python
# User Memory: 跨会话记住用户偏好
memory.add(message, user_id="user123", memory_type="user")
# Session Memory: 当前会话上下文
memory.add(message, session_id="session456", memory_type="session")
# Agent Memory: Agent 自身状态
memory.add(message, agent_id="agent789", memory_type="agent")
```
### 3.2 记忆操作
```python
from mem0 import Memory
memory = Memory()
# 添加记忆 (自动提取关键信息)
memory.add(conversation_history, user_id="user123")
# 语义搜索
results = memory.search(query="用户饮食偏好", user_id="user123")
# 更新记忆
memory.update(memory_id="xxx", new_content="...")
# 删除记忆
memory.delete(memory_id="xxx")
```
### 3.3 Mem0ᵍ 图增强版
```
Mem0 (向量) + 图数据库 → 捕获跨会话关系
好处:
- 更丰富的上下文关系
- 多跳推理能力
- 复杂关系追踪
```
---
## 四、相关项目分析
### 4.1 已验证可用的项目
| 项目 | 类型 | 状态 | 评估 |
|------|------|------|------|
| **Chitin** | 人格持久化 | ✅ 已安装 | 适合我们的需求 |
| **Mem0** | 通用记忆层 | 🔲 待评估 | 自动化程度高 |
| **MemOS** | 记忆操作系统 | 🔲 待评估 | 支持 Moltbot/Clawdbot/OpenClaw |
### 4.2 MemOS 特点
```
MemOS = 记忆操作系统 + Agent 框架
支持:
- Moltbot
- Clawdbot
- OpenClaw ← 我们的系统!
功能:
- 跨任务技能记忆
- 技能复用与进化
- 持久化技能库
```
### 4.3 其他参考项目
| 项目 | 亮点 | 参考价值 |
|------|------|----------|
| **OpenMemory** | 本地持久记忆 | 配置方式 |
| **honcho** | 状态化 Agent | 状态管理 |
| **Aetherius_AI** | 本地长期记忆 | 本地化部署 |
---
## 五、学术研究
### 5.1 关键论文
| 论文 | 会议 | 核心贡献 |
|------|------|----------|
| **Titans** | - | SOTA 长期记忆 Transformer |
| **LongMem** | NeurIPS 2023 | LLM + 长期记忆增强 |
| **MemoryOS** | EMNLP 2025 | 个性化 AI Agent 记忆 OS |
### 5.2 技术趋势
```
1. 长期记忆 → 向量 + 图 混合架构
2. 记忆检索 → 语义搜索 + 关系推理
3. 记忆演化 → 动态更新 + 遗忘机制
4. 本地化 → 隐私优先 + 零遥测
```
---
## 六、对我们的启示
### 6.1 当前架构评估
| 组件 | 状态 | 差距 |
|------|------|------|
| MEMORY.md | ✅ 手动记录 | 缺乏自动提取 |
| Chitin | ✅ 已安装 | 洞察量少(9个) |
| 配置备份 | ✅ 自动 | - |
| 自动学习 | ⚠️ 需优化 | 语义匹配差 |
### 6.2 可改进方向
| 改进项 | 优先级 | 方案 |
|--------|--------|------|
| **Chitin 语义匹配** | 高 | 改进关键词匹配逻辑 |
| **自动洞察生成** | 中 | 参考 Mem0 自动提取 |
| **记忆检索优化** | 低 | 添加向量搜索能力 |
### 6.3 Linux 部署注意事项
> ⚠️ **重要**: 所有项目必须在 Linux 环境下部署
| 项目 | 安装方式 | Linux 兼容性 |
|------|----------|--------------|
| Chitin | `npm install -g @clawdactual/chitin` | ✅ 原生支持 |
| Mem0 | `pip install mem0ai` | ✅ Python Linux |
| MemOS | `pip install MemTensor` | ✅ Python Linux |
**Linux 特定考虑:**
- 使用 systemd 管理后台进程
- 使用 crontab 定时任务
- 日志统一到 `/var/log/`
- 配置文件在 `/root/.config/` 或 `/etc/`
1. **优化 Chitin 自动学习脚本**
- 改进 `find_related_insights` 关键词匹配
- 添加显式洞察ID关联
2. **增加洞察数量**
- 每周贡献 2-3 个高质量洞察
- 从 MEMORY.md 提炼
3. **配置 Mem0 (可选)**
- 如果需要更自动化的记忆提取
- 需要额外依赖 (LLM + 向量库)
---
## 七、关键概念速查
| 概念 | 定义 | 我们的应用 |
|------|------|------------|
| **人格持久化** | 记住"如何思考"而非"发生了什么" | Chitin |
| **记忆层** | 动态提取、整合、检索重要信息 | Mem0 |
| **置信度** | 洞察的可信程度 (0-1) | Chitin reinforcement_count |
| **强化** | 验证洞察正确后增加置信度 | chitin reinforce |
| **洞察类型** | behavioral/personality/relational/principle/skill | Chitin 结构 |
---
## 八、参考资源
### 8.1 项目链接
| 项目 | URL |
|------|-----|
| Mem0 | https://github.com/mem0ai/mem0 |
| Mem0 论文 | https://mem0.ai/research |
| MemOS | https://github.com/MemTensor/MemOS |
| Chitin | https://github.com/Morpheis/chitin |
### 8.2 学习路径
```
1. 先精通 Chitin (已安装)
2. 理解 Mem0 架构 (本文档)
3. 如需自动化 → 评估 Mem0 集成
4. 如需复杂关系 → 评估 MemOS
```
---
## 十、GitHub Trending 项目深度分析 (2026-02-07)
> 从 GitHub Topics `agent-memory` 发现的高价值项目
### 10.1 memU 项目深度分析
```
memU - 24/7 Always-On Proactive Memory for AI Agents
⭐ 8,148 stars | v1.4.0 (Feb 6, 2026) | Python 3.13+
官方定位: OpenClaw (Moltbot, Clawdbot) 替代方案
官网: https://memu.so
文档: https://memu.pro/docs
┌─────────────────────────────────────────────────────────────────┐
│ 核心架构 │
├─────────────────────────────────────────────────────────────────┤
│ 🤖 Main Agent ←→ 🧠 MemU Bot ←→ Database │
│ │
│ 主Agent: 处理用户查询、执行任务 │
│ MemU Bot: 监控、记忆、主动智能 │
│ │
│ 生命周期: │
│ 1. 接收输入 → 监控输入输出 │
│ 2. 规划执行 → 记忆与提取 │
│ 3. 响应用户 → 预测用户意图 │
│ 4. 循环 ←→ 运行主动任务 │
└─────────────────────────────────────────────────────────────────┘
```
#### 核心特性
| 特性 | 说明 | 对 OpenClaw 价值 |
|------|------|------------------|
| **24/7 Proactive Agent** | 后台持续运行,永不忘记 | ⭐⭐⭐⭐⭐ |
| **Memory as File System** | 像文件系统一样组织记忆 | ⭐⭐⭐⭐ |
| **User Intention Capture** | 自动理解用户目标与偏好 | ⭐⭐⭐⭐ |
| **Cost Efficient** | 减少 LLM token 消耗 | ⭐⭐⭐⭐ |
| **自动分类** | 新记忆自动组织成话题 | ⭐⭐⭐⭐ |
#### 文件系统式记忆结构
```
memory/
├── preferences/
│ ├── communication_style.md
│ └── topic_interests.md
├── relationships/
│ ├── contacts/
│ └── interaction_history/
├── knowledge/
│ ├── domain_expertise/
│ └── learned_skills/
└── context/
├── recent_conversations/
└── pending_tasks/
```
#### 部署方式
```bash
# 方式1: 云端版本 (推荐用于测试)
# https://memu.so
# 方式2: 自托管
pip install -e .
# 方式3: Docker + PostgreSQL
docker run -d \
--name memu-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=memu \
-p 5432:5432 \
pgvector/pgvector:pg16
export OPENAI_API_KEY=your_api_key
cd tests
python test_postgres.py
```
#### 多提供商支持
| 提供商 | 状态 | 配置方式 |
|--------|------|----------|
| **OpenAI** | ✅ 默认 | 环境变量 |
| **OpenRouter** | ✅ | llm_profiles 配置 |
| **阿里通义千问** | ✅ | qwen3-max |
| **Voyage AI** | ✅ | embeddings |
#### API 端点
```
Base URL: https://api.memu.so
POST /api/v3/memory/memorize # 持续学习
POST /api/v3/memory/retrieve # 检索记忆
POST /api/v3/memory/categories # 列出分类
```
---
### 10.2 MemOS 项目深度分析
```
MemOS 2.0: Stardust (星尘)
⭐ 4,963 stars | v2.0.4 (Jan 30, 2026) | Apache 2.0
官方定位: AI Agent 记忆操作系统
官网: https://memos.openmem.net
文档: https://memos-docs.openmem.net/home/overview/
论文: https://arxiv.org/abs/2507.03724
⚠️ 重大发现: MemOS 有官方 OpenClaw 生命周期插件!
插件: https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin
```
#### 性能基准
| 评估集 | 提升幅度 |
|--------|----------|
| **整体准确率** | +43.70% vs OpenAI Memory |
| LoCoMo | 75.80 |
| LongMemEval | +40.43% |
| PrefEval-10 | +2568% |
| PersonaMem | +40.75% |
| **Token 节省** | 35.24% |
#### 核心特性
| 特性 | 说明 | 对 OpenClaw 价值 |
|------|------|------------------|
| **Unified Memory API** | 单一 API 管理记忆 | ⭐⭐⭐⭐⭐ |
| **Multi-Modal Memory** | 文本/图像/工具痕迹/人格 | ⭐⭐⭐⭐ |
| **Multi-Cube KB** | 多知识库管理 | ⭐⭐⭐⭐⭐ |
| **MemScheduler** | 异步摄入,毫秒级延迟 | ⭐⭐⭐⭐ |
| **Memory Feedback** | 自然语言反馈修正 | ⭐⭐⭐⭐ |
| **Skill Memory** | 技能记忆与进化 | ⭐⭐⭐⭐⭐ |
#### MemOS Cloud OpenClaw Plugin
```bash
# 官方 OpenClaw 生命周期插件
# 功能:
# 1. Agent 启动前自动从 MemOS 召回上下文
# 2. Agent 结束后自动保存对话到 MemOS
GitHub: https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin
```
#### 部署方式
```bash
# 方式1: 云端 API (推荐用于快速测试)
# 注册: https://memos-dashboard.openmem.net/quickstart/
# 方式2: 自托管 (Docker)
git clone https://github.com/MemTensor/MemOS.git
cd MemOS
pip install -r ./docker/requirements.txt
# 配置环境变量
cp docker/.env.example MemOS/.env
# 编辑 .env 文件
# 启动 Docker 服务
cd docker
docker compose up
# 方式3: CLI 启动 (需要 Neo4j + Qdrant)
cd src
uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8001 --workers 1
```
#### 基础使用示例
```python
import requests
import json
# 添加用户消息
url = "http://localhost:8000/product/add"
data = {
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"mem_cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca",
"messages": [{"role": "user", "content": "I like strawberry"}],
"async_mode": "sync"
}
# 搜索记忆
url = "http://localhost:8000/product/search"
data = {
"query": "What do I like",
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"mem_cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca"
}
```
#### 技术栈
| 语言 | 占比 |
|------|------|
| Python | 76.4% |
| TypeScript | 22.6% |
| JavaScript | 0.5% |
| Shell | 0.4% |
---
### 10.3 两大项目对比
| 维度 | memU | MemOS |
|------|------|-------|
| **⭐ Stars** | 8.1k | 5.0k |
| **最新版本** | v1.4.0 (Feb 6) | v2.0.4 (Jan 30) |
| **活跃度** | 🔥 非常活跃 | 🔥 非常活跃 |
| **OpenClaw 原生** | ✅ 官方替代方案 | ✅ 官方插件 |
| **部署复杂度** | ⭐ 低 | ⭐⭐ 中 |
| **主动记忆** | ✅ 24/7 Proactive | ✅ Scheduler |
| **技能进化** | ❌ | ✅ Skill Memory |
| **多模态** | ✅ | ✅ |
| **性能优化** | Token 节省 | +43.70% 准确率 |
---
### 10.4 集成建议
#### 方案 A: memU (推荐轻量级)
**适合场景:**
- 快速部署
- 文件系统式记忆管理
- 24/7 主动记忆
- 成本敏感
**集成步骤:**
1. `pip install memu-py`
2. 配置环境变量
3. 集成 MemU Bot 架构
#### 方案 B: MemOS (推荐功能完整)
**适合场景:**
- 多知识库管理
- 技能记忆与进化
- 需要官方 OpenClaw 插件
- 企业级部署
**集成步骤:**
1. 使用官方 OpenClaw 插件
2. 配置 MemOS Cloud API
3. 或自托管 Docker 部署
---
## 十一、技术趋势分析
### 11.1 记忆系统演进
| 阶段 | 特征 | 代表项目 |
|------|------|----------|
| **v1.0** | 简单向量存储 | 传统 RAG |
| **v2.0** | 图结构记忆 | MemOS |
| **v3.0** | 主动记忆 + 技能进化 | memU, MemOS 2.0 |
### 11.2 核心技术方向
1. **主动记忆 (Proactive Memory)**
- 24/7 持续学习
- 用户意图预测
- 主动上下文加载
2. **技能进化 (Skill Evolution)**
- 跨任务技能复用
- 技能记忆存储
- 自动化技能提升
3. **多模态统一**
- 文本/图像/工具痕迹
- 人格化记忆
- 知识图谱集成
### 11.3 OpenClaw 生态位置
```
OpenClaw 生态
├── Core: 对话管理、工具调用
├── Memory: memU / MemOS ← 人格化/记忆
├── Skills: MCP 协议
└── Channels: 多平台接入
```
---
## 十二、学习与实践计划
### 12.1 短期计划 (1-2周)
| 任务 | 目标 | 优先级 |
|------|------|--------|
| 测试 memU 云端版 | 理解主动记忆机制 | P0 |
| 申请 MemOS Cloud API | 评估多知识库功能 | P0 |
| 阅读 MemOS 论文 | 理解架构设计 | P1 |
| 评估 Chitin 迁移 | 准备备选方案 | P2 |
### 12.2 中期计划 (1-3月)
| 任务 | 目标 | 优先级 |
|------|------|--------|
| 集成 memU 自托管版 | 替换/增强 Chitin | P0 |
| 测试 MemOS OpenClaw 插件 | 官方集成方案 | P1 |
| 实现技能记忆 | 跨会话技能进化 | P2 |
### 12.3 长期计划 (3-6月)
| 任务 | 目标 | 优先级 |
|------|------|--------|
| 多模态记忆集成 | 支持图像/文档 | P1 |
| 企业级部署 | Docker/K8s 优化 | P2 |
| 性能调优 | Token/延迟优化 | P2 |
---
## 十三、持续学习资源
### 13.1 官方资源
| 资源 | memU | MemOS |
|------|------|-------|
| **GitHub** | github.com/NevaMind-AI/memU | github.com/MemTensor/MemOS |
| **官网** | memu.so | memos.openmem.net |
| **文档** | memu.pro/docs | memos-docs.openmem.net |
| **Discord** | discord.gg/memu | discord.gg/Txbx3gebZR |
| **论文** | - | arxiv.org/abs/2507.03724 |
### 13.2 Awesome 资源
| 集合 | Stars | 内容 |
|------|-------|------|
| Awesome-AI-Memory | 292 | AI 记忆知识库 |
| Awesome-Agent-Memory | 222 | Agent Memory 论文与系统 |
### 13.3 监控项目
| 项目 | Stars | 最后更新 | 关注理由 |
|------|-------|----------|----------|
| memU | 8.1k | Feb 6, 2026 | OpenClaw 替代 |
| MemOS | 5.0k | Jan 30, 2026 | 官方 OpenClaw 插件 |
| agentic-context-engine | 1.8k | Feb 6, 2026 | ACE 框架 |
---
## 十四、风险与对策
### 14.1 Chitin 风险
| 风险 | 等级 | 对策 |
|------|------|------|
| 仓库删除 | 🔴 高 | 评估 memU/MemOS 替代 |
| 无官方更新 | 🟡 中 | 准备迁移方案 |
| 功能有限 | 🟡 中 | 增强其他组件 |
### 14.2 新项目风险
| 风险 | 等级 | 对策 |
|------|------|------|
| 依赖外部服务 | 🟡 中 | 优先自托管 |
| 复杂度增加 | 🟡 中 | 渐进式集成 |
| 性能开销 | 🟢 低 | 监控与优化 |
### 14.3 备选方案
| 方案 | 优先级 | 切换条件 |
|------|--------|----------|
| 继续用 Chitin | 短期 | 新项目不稳定 |
| 迁移到 memU | 中期 | 完成测试验证 |
| 迁移到 MemOS | 长期 | 官方插件成熟 |
---
## 十五、Chitin 替代方案评估
### 15.1 为什么需要替代?
| 原因 | 影响 |
|------|------|
| Chitin 仓库删除 | 不再有官方更新 |
| 功能有限 | 只能手动贡献洞察 |
| 自动化程度低 | 需要额外脚本 |
### 15.2 替代方案对比
| 维度 | Chitin (当前) | memU | MemOS |
|------|---------------|------|-------|
| **开源状态** | 已删除 | ✅ 活跃 | ✅ 活跃 |
| **OpenClaw 支持** | ✅ 原生 | ✅ 原生 | ✅ 原生 |
| **自动化记忆** | ❌ 手动 | ✅ 自动 | ✅ 自动 |
| **技能进化** | ❌ | ❌ | ✅ Skill Memory |
| **部署复杂度** | 低 | 中 | 中 |
| **Linux 兼容** | ✅ | ✅ | ✅ |
| **主动记忆** | ❌ | ✅ 24/7 | ✅ Scheduler |
| **多模态** | ❌ | ✅ | ✅ |
### 15.3 迁移建议
| 时间线 | 行动 | 优先级 |
|--------|------|--------|
| **短期 (1周)** | 测试 memU/MemOS 云端版 | P0 |
| **中期 (1-3月)** | 集成 memU 自托管版 | P1 |
| **长期 (3-6月)** | 评估 MemOS 官方插件 | P2 |
---
## 十六、持续学习计划
### 16.1 每月任务
- [ ] 检查 GitHub Trending (`agent-memory` topic)
- [ ] 评估新项目是否值得尝试
- [ ] 更新本文档
- [ ] 贡献 2-3 个新洞察
### 16.2 关注项目
| 项目 | URL | 关注理由 |
|------|-----|----------|
| memU | github.com/NevaMind-AI/memU | OpenClaw 原生支持 |
| MemOS | github.com/MemTensor/MemOS | 官方 OpenClaw 插件 |
| ACE | github.com/kayba-ai/agentic-context-engine | 从经验学习 |
---
*笔记版本: v2.0 (2026-02-07) - 重大更新: memU/MemOS 深度分析*
*维护者: 2号机 (守护者)*
+245
View File
@@ -0,0 +1,245 @@
# 1号机 (青龙) 资料库
## 基本信息
| 项目 | 内容 |
|------|------|
| **代号** | 青龙 🐉 |
| **编号** | 1号机 |
| **主机名** | yhh6788-B150-HD3 |
| **IP 地址** | 192.168.0.31 |
| **系统** | Ubuntu 25.10 (Questing Quokka) |
| **内核** | Linux 6.17.0-12-generic |
| **SSH 访问** | root@192.168.0.31 (密码: 3efvVGY&) |
---
## OpenClaw 配置
### 版本信息
| 项目 | 内容 |
|------|------|
| **版本** | v2026.2.1 (落后 94 提交) |
| **Gateway** | ws://127.0.0.1:18789 |
| **Gateway Token** | yhh6788-B150-HD3 |
| **更新状态** | 需要执行 `openclaw update` |
### 模型配置
| Provider | API | 模型 | 备注 |
|----------|-----|------|------|
| minimax | https://api.minimaxi.com/v1 | minimax-m2.1, embo-01 | 主力模型 |
| deepseek | https://api.deepseek.com/v1 | deepseek-chat | 备用模型 |
### 通道配置
| 通道 | 状态 | 说明 |
|------|------|------|
| Telegram | ✅ OK | @dctc_01_bot |
### 内存配置
| 项目 | 状态 |
|------|------|
| Plugin | memory-core |
| Vector | ⚠️ 正在配置 |
| FTS | ✅ Ready |
| Cache | ✅ On |
---
## Ollama 配置
### 服务状态
| 项目 | 内容 |
|------|------|
| **版本** | 0.15.4 |
| **监听地址** | [::]:11434 |
| **服务状态** | ✅ 运行中 |
| **启动时间** | 2026-02-05 00:01 |
### 模型列表
| 模型 | 状态 | 大小 | 用途 |
|------|------|------|------|
| mxbai-embed-large:latest | ⏳ 下载中 | ~669MB | 向量化搜索 |
### 启动命令
```bash
export OLLAMA_HOST=0.0.0.0:11434
nohup ollama serve > /tmp/ollama.log 2>&1 &
```
---
## 功能清单
### 核心功能
- ✅ CLI 命令执行
- ✅ 文件读写
- ✅ 记忆管理
- ✅ 定时任务
- ✅ 消息发送
- ✅ Telegram 机器人
### 当前状态
| 功能 | 状态 | 说明 |
|------|------|------|
| 向量化服务 | ⚠️ 配置中 | 正在安装 Ollama |
| Gateway 更新 | ❌ 需更新 | 落后 94 提交 |
---
## 程序架构
```
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ - WebSocket 控制平面 (端口 18789) │
│ - 通道连接管理 │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Telegram │ │ Ollama │ │ Memory │
│ Bot │ │ :11434 │ │ Plugin │
└─────────┘ └─────────┘ └─────────┘
```
---
## 维护记录
### 2026-02-05
| 时间 | 操作者 | 操作 | 说明 |
|------|--------|------|------|
| 00:01 | 2号机 | 启动 Ollama | 解决崩溃问题 |
| 00:06 | 2号机 | 拉取 embedding 模型 | mxbai-embed-large |
| 00:30 | 2号机 | 创建资料库 | 记录基本信息 |
### 已知问题
| 问题 | 严重度 | 说明 |
|------|--------|------|
| Git 落后 | 🔴 高 | 需要 `openclaw update` |
| Gateway service stopped | 🟡 中 | pid 654909 (activating) |
| Reverse proxy headers | 🟡 中 | 未配置 trustedProxies |
| Gateway token 较短 | 🟡 中 | 建议更换更长 token |
---
## 机器人网络
| 机器 | 代号 | IP | 状态 |
|------|------|-----|------|
| 2号机 | 守护者 🛡️ | 192.168.0.32 | ✅ 在线 |
| 1号机 | 青龙 🐉 | 192.168.0.31 | ✅ 在线 |
---
## 辅助系统
| 系统 | IP | 功能 |
|------|-----|------|
| auto | 192.168.0.99 | 自动化挂机定时执行程序 |
| 共享文件夹 | /share/temp1/ | 文件交互 |
---
## 工作环境
| 设备 | IP | 角色 |
|------|-----|------|
| 阿拉蕾 👾 | 192.168.0.66 | Ollama/向量服务 |
| 机器 | 命令 |
|------|------|
| 1号机 (青龙) | `sshpass -p '3efvVGY&' ssh root@192.168.0.31` |
---
## 下一步维护
1. ✅ Ollama 服务 - 已启动
2. ⏳ 向量模型 - 下载中
3. ⏳ OpenClaw 更新 - 待执行
4. ⏳ Gateway token - 待修复
---
## 资料库位置
| 类型 | 位置 |
|------|------|
| 运维文档 | ~/doc/ |
| 本机资料 | ~/doc/BOTS/1号机.md |
---
*最后更新: 2026-02-05 00:22*
*维护者: 2号机 (守护者)*
### 2026-02-05 - 向量化配置
| 时间 | 操作 | 说明 |
|------|------|------|
| 00:25 | 2号机 | 接管下载 mxbai-embed-large |
| 00:26 | 2号机 | 模型下载完成 |
| 00:30 | 2号机 | 配置 Ollama provider |
| 00:38 | 2号机 | 重启 Gateway |
| 00:46 | 2号机 | 向量服务 Ready |
### 经验教训
| 问题 | 教训 | 解决方案 |
|------|------|----------|
| Ollama 进程崩溃 | 后台运行需用 nohup | `nohup ollama serve > /tmp/ollama.log 2>&1 &` |
| 模型下载中断 | 需检查下载状态 | `curl http://localhost:11434/api/tags` |
| Gateway 启动超时 | systemd 服务配置问题 | 进程已启动,可继续使用 |
| SSH 连接中断 | 长时间操作需监控 | 使用进程管理跟踪状态 |
### 2026-02-05 - Telegram 连接修复
| 时间 | 问题 | 修复 |
|------|------|------|
| 01:07 | 代理未运行导致 Telegram 无法连接 | 移除代理配置,改为直接连接 |
### 经验教训
| 问题 | 教训 | 解决方案 |
|------|------|----------|
| 代理配置导致 Telegram 不可用 | 青龙在国内网络可直接连接 Telegram,无需代理 | 移除 override.conf 中的代理配置 |
### 本地模型用途定位
| 模型 | 用途 | 说明 |
|------|------|------|
| mxbai-embed-large | ✅ 向量化 | 本地 embedding 服务 |
| (无对话模型) | - | 云端 MiniMax 负责对话 |
### 策略说明
- **向量化**: 青龙本地运行 mxbai-embed-large
- **对话**: 统一使用云端 MiniMax (minimax-m2.1)
- **优势**: 节省资源,专注向量化服务
### 模型架构确认
| 功能 | 模型 | 来源 |
|------|------|------|
| 对话/分析 | minimax-m2.1 | minimax.com (云端) |
| 向量化 | mxbai-embed-large | 本地 Ollama |
### 结论
✅ 青龙是综合性应用机器人,架构已完善
✅ 无需添加额外模型
@@ -0,0 +1,212 @@
# 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*
+278
View File
@@ -0,0 +1,278 @@
# 2号机 (守护者) 资料库
## 基本信息
| 项目 | 内容 |
|------|------|
| **代号** | 守护者 🛡️ |
| **编号** | 2号机 |
| **主机名** | yh6788-ThinkPad-X230 |
| **IP 地址** | 192.168.0.32 |
| **硬件** | ThinkPad X230 (Intel Core i5-3320M, 8GB RAM) |
| **系统** | Ubuntu 25.10 (Questing Quokka) |
| **内核** | Linux 6.17.0-12-generic |
---
## 向量服务连接
| 目标 | 地址 | 用途 |
|------|------|------|
| 本地 | localhost:11434 | Ollama 向量 (主力) |
| 阿拉蕾 👾 | 192.168.0.66:11434 | Ollama 向量 (备用) |
---
## 机器人网络
| 机器 | 代号 | IP | 状态 |
|------|------|-----|------|
| 2号机 | 守护者 🛡️ | 192.168.0.32 | ✅ 在线 |
| 1号机 | 青龙 🐉 | 192.168.0.31 | ✅ 在线 |
---
## 辅助系统
| 系统 | IP | 功能 |
|------|-----|------|
| auto | 192.168.0.99 | 自动化挂机定时执行程序 |
| 共享文件夹 | /share/temp1/ | 文件交互 |
---
## 工作环境
| 设备 | IP | 角色 |
|------|-----|------|
| 阿拉蕾 👾 | 192.168.0.66 | Ollama/向量服务 |
---
## OpenClaw 配置
### 版本信息
| 项目 | 内容 |
|------|------|
| **版本** | v2026.2.2-3 |
| **Gateway** | ws://127.0.0.1:18789 |
| **Gateway Token** | yh6788-ThinkPad-X230 |
| **Channel** | stable (default) |
### 模型配置
| Provider | API | 模型 | 备注 |
|----------|-----|------|------|
| minimax | https://api.minimaxi.com/v1 | minimax-m2.1, embo-01 | 主力模型 |
| deepseek | https://api.deepseek.com/v1 | deepseek-chat | 备用模型 |
| ollama | http://localhost:11434/v1 | llama3:latest, mxbai-embed-large:latest | 本地模型 |
### 通道配置
| 通道 | 状态 | 说明 |
|------|------|------|
| Telegram | ✅ OK | @dctc_02_bot |
### 内存配置
| 项目 | 状态 |
|------|------|
| Plugin | memory-core |
| Vector | ✅ Ready (mxbai-embed-large) |
| FTS | ✅ Ready |
| Cache | ✅ On |
---
## 功能清单
### 核心功能
- ✅ CLI 命令执行
- ✅ 文件读写
- ✅ 记忆管理 (memory_search/memory_get)
- ✅ 定时任务 (cron)
- ✅ 消息发送 (message)
- ✅ 浏览器控制 (browser)
- ✅ Canvas 可视化
- ✅ TTS 语音合成
### 通信能力
- Telegram 机器人
- WebSocket Gateway
### 运维工具
- openclaw status (状态检查)
- openclaw doctor (健康诊断)
- openclaw logs (日志查看)
- openclaw update (版本更新)
---
## 程序架构
```
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ - WebSocket 控制平面 (端口 18789) │
│ - 通道连接管理 │
│ - 消息路由 │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Telegram │ │ Nodes │ │ Memory │
│ Bot │ │ 管理 │ │ Plugin │
└─────────┘ └─────────┘ └─────────┘
```
### 目录结构
```
~/.openclaw/
├── openclaw.json # 主配置文件
├── agents/
│ └── main/
│ └── agent/
│ ├── models.json
│ └── config.json
├── workspace/ # 工作空间
├── canvas/ # Canvas 文件
└── extensions/ # 扩展插件
```
---
## 维护记录
### 2026-02-04
| 时间 | 操作 | 说明 |
|------|------|------|
| 11:05 | 配置初始化 | 完成 wizard 和 doctor |
| 13:43 | 知识库整理 | 创建 ~/doc/ 资料库 |
| 23:11 | 大任务整理 | 整理 ~/doc 资料库 |
| 23:57 | 安装 sshpass | 用于 SSH 连接 |
| 23:52 | 监控 1号机 | 接管安装 Ollama |
### 技术决策
| 决策 | 内容 | 理由 |
|------|------|------|
| 主力模型 | MiniMax | 速度快,适合日常任务 |
| 备用模型 | DeepSeek | 推理能力强 |
| 向量模型 | mxbai-embed-large | 本地运行,CPU 友好 |
---
## 已知问题
| 问题 | 严重度 | 说明 |
|------|--------|------|
| Reverse proxy headers | WARN | 未配置 trustedProxies |
| Gateway token 长度 | INFO | 建议使用更长的 token |
---
## 资料库位置
| 类型 | 位置 |
|------|------|
| 运维文档 | ~/doc/ |
| 记忆文件 | ~/.openclaw/workspace/memory/ |
| 每日记录 | ~/.openclaw/workspace/memory/YYYY-MM-DD.md |
| 长期记忆 | ~/.openclaw/workspace/MEMORY.md |
---
*最后更新: 2026-02-05 00:22*
*维护者: 2号机 (守护者)*
### 2026-02-05 - 青龙向量配置
| 时间 | 操作 | 说明 |
|------|------|------|
| 00:21 | - | 网络结构更新 |
| 00:25 | 2号机 | 接管青龙 Ollama 配置 |
| 00:26 | 2号机 | mxbai-embed-large 下载完成 |
| 00:30 | 2号机 | 添加 Ollama provider 配置 |
| 00:38 | 2号机 | 重启青龙 Gateway |
| 00:46 | 2号机 | 青龙向量服务 Ready |
### 经验教训
| 问题 | 教训 | 解决方案 |
|------|------|----------|
| Ollama 进程崩溃 | 后台运行需用 nohup | `nohup ollama serve > /tmp/ollama.log 2>&1 &` |
| 模型下载中断 | 需检查下载状态 | `curl http://localhost:11434/api/tags` |
| Gateway 启动超时 | systemd 服务配置问题 | 进程已启动,可继续使用 |
| SSH 连接中断 | 长时间操作需监控 | 使用进程管理跟踪状态 |
---
## 知识沉淀
### Ollama 运维命令
```bash
# 启动服务
export OLLAMA_HOST=0.0.0.0:11434
nohup ollama serve > /tmp/ollama.log 2>&1 &
# 检查状态
curl http://localhost:11434/api/tags
# 下载模型
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
ollama pull mxbai-embed-large:latest
# 查看日志
tail -f /tmp/ollama.log
```
### SSH 运维命令
```bash
# 连接青龙
sshpass -p '3efvVGY&' ssh root@192.168.0.31
# 远程执行命令
sshpass -p '3efvVGY&' ssh root@192.168.0.31 "openclaw status"
```
---
## 2026-02-05 Telegram 机器人故障
| 时间 | 操作 | 说明 |
|------|------|------|
| 08:15 | 故障报告 | Telegram 机器人 @dctc_02_bot 无响应 |
| 08:21 | 移除 noProxy | 移除无效配置键 |
| 08:28 | 深度诊断 | 发现 memory 系统使用 OpenAI embeddings |
| 08:32 | 切换 .31 | 配置远程向量化服务 |
| 08:35 | 本地 Ollama | 发现 2号机有本地向量模型 |
| 08:38 | 清理锁文件 | 删除会话锁,重置状态 |
| 08:43 | Provider 修复 | 发现核心问题:provider 值限制 |
| 08:50 | ✅ 修复成功 | provider 改为 openai,机器人恢复 |
### 故障根因
- **核心问题**: 只支持
- **错误值**: 被标记为无效输入
- **解决方案**:将 provider 改为
### 经验教训
1. OpenClaw 配置验证非常严格
2. 1号机 vs 2号机 必须配置一致
3. 外部监控不会修改配置(来自 OpenClaw 内部行为)
### 相关文档
- 详细记录:
### 2026-02-05 - nomic-embed-text 稳定性测试
- 时间:09:32
- 结果:✅ 测试通过,机器人反馈正常
- 模型:nomic-embed-text:latest (274 MB)
+208
View File
@@ -0,0 +1,208 @@
# OpenClaw CLI 命令参考
## 常用命令速查
| 命令 | 说明 |
|------|------|
| `openclaw status` | 基本状态检查 |
| `openclaw status --all` | 完整诊断(可分享) |
| `openclaw status --deep` | 深度检测(探测通道) |
| `openclaw doctor` | 健康检查 + 自动修复 |
| `openclaw doctor --fix` | 自动修复配置问题 |
| `openclaw logs --follow` | 实时日志 |
| `openclaw gateway status` | Gateway 服务状态 |
| `openclaw gateway restart` | 重启 Gateway |
## config - 配置管理
```bash
# 获取配置
openclaw config get agents.defaults.workspace
openclaw config get agents.list[0].id
# 设置配置
openclaw config set browser.executablePath "/usr/bin/google-chrome"
openclaw config set agents.defaults.heartbeat.every "2h"
openclaw config set gateway.port 19001 --json
# 删除配置
openclaw config unset tools.web.search.apiKey
```
## gateway - Gateway 管理
### 运行 Gateway
```bash
openclaw gateway # 前台运行
openclaw gateway run # 前台运行(显式)
openclaw gateway --verbose # 详细日志
```
### 服务管理
```bash
openclaw gateway install # 安装服务
openclaw gateway start # 启动服务
openclaw gateway stop # 停止服务
openclaw gateway restart # 重启服务
openclaw gateway uninstall # 卸载服务
```
### 查询状态
```bash
openclaw gateway status # 服务状态 + RPC 探测
openclaw gateway health # 健康检查
openclaw gateway probe # 发现所有 Gateway
openclaw gateway discover # Bonjour 发现
```
### 常用选项
```bash
--port <port> # WebSocket 端口(默认 18789)
--bind <mode> # 绑定模式: loopback|lan|tailnet|auto|custom
--token <token> # 认证 Token
--verbose # 详细日志
--allow-unconfigured # 允许无配置启动
```
## status - 状态诊断
```bash
openclaw status # 基本状态
openclaw status --all # 完整诊断(可粘贴分享)
openclaw status --deep # 深度检测(探测通道)
openclaw status --usage # 显示模型用量
```
## doctor - 健康检查
```bash
openclaw doctor # 检查问题
openclaw doctor --repair # 自动修复
openclaw doctor --fix # 自动修复(别名)
openclaw doctor --deep # 深度扫描
```
## logs - 日志查看
```bash
openclaw logs --follow # 实时日志
openclaw logs --limit 200 # 最近 200 行
openclaw logs --json # JSON 格式输出
openclaw logs --plain # 纯文本格式
openclaw logs --no-color # 禁用颜色
```
## channels - 通道管理
```bash
openclaw channels list # 列出已配置通道
openclaw channels status # 通道状态
openclaw channels status --probe # 深度探测
openclaw channels logs # 通道日志
openclaw channels login # 登录通道(WhatsApp)
openclaw channels logout # 登出通道
```
## models - 模型管理
```bash
openclaw models list # 列出可用模型
openclaw models status # 模型状态 + 认证信息
openclaw models scan # 扫描新模型
openclaw models set <model> # 设置默认模型
```
## memory - 记忆管理
```bash
openclaw memory status # 记忆索引状态
openclaw memory index # 重新索引记忆文件
openclaw memory search "<query>" # 语义搜索记忆
```
## cron - 定时任务
```bash
openclaw cron list # 列出定时任务
openclaw cron add # 添加定时任务
openclaw cron rm <id> # 删除定时任务
openclaw cron enable <id> # 启用任务
openclaw cron disable <id> # 禁用任务
openclaw cron runs --id <id> # 查看任务运行记录
```
## plugins - 插件管理
```bash
openclaw plugins list # 列出插件
openclaw plugins install <id> # 安装插件
openclaw plugins enable <id> # 启用插件
openclaw plugins disable <id> # 禁用插件
openclaw plugins doctor # 插件诊断
```
## skills - 技能管理
```bash
openclaw skills list # 列出技能
openclaw skills info <name> # 技能详情
openclaw skills check # 检查技能就绪状态
```
## pairing - 配对管理
```bash
openclaw pairing list <channel> # 列出待配对请求
openclaw pairing approve <channel> <code> # 批准配对
```
## 完整命令树
```
openclaw <command>
setup # 初始化配置
onboard # 向导式配置
configure # 交互式配置
config # 配置管理
get/set/unset
doctor # 健康检查
reset # 重置本地状态
uninstall # 卸载
update # 更新
channels # 通道管理
skills # 技能管理
plugins # 插件管理
memory # 记忆管理
message # 发送消息
agent # 运行单次 agent
agents # 多 agent 管理
status # 状态诊断
health # 健康检查
sessions # 会话管理
gateway # Gateway 管理
logs # 日志查看
system # 系统事件
models # 模型管理
cron # 定时任务
nodes # 节点管理
browser # 浏览器控制
hooks # 钩子管理
webhooks # Webhook 管理
pairing # 配对管理
sandbox # 沙箱管理
tui # 终端 UI
```
## 全局选项
| 选项 | 说明 |
|------|------|
| `--dev` | 开发模式(隔离状态) |
| `--profile <name>` | 指定配置 profile |
| `--json` | JSON 格式输出 |
| `--no-color` | 禁用颜色 |
| `-v`, `--version` | 显示版本 |
---
*最后更新: 2026-02-04*
+434
View File
@@ -0,0 +1,434 @@
# OpenClaw 协同部署指南
## 概述
协同部署涉及以下层面:
1. **多 Gateway 部署** - 同一主机运行多个 Gateway 实例
2. **多 Agent 部署** - 单 Gateway 管理多个隔离 Agent
3. **节点(Nodes)管理** - 远程设备作为节点接入
4. **远程访问** - SSH 隧道、Tailscale 等
---
## 一、多 Gateway 部署
### 何时需要多 Gateway
- 需要更强的隔离(如救援 Bot)
- 需要冗余备份
- 不同实例需要不同配置
### 隔离要求
| 配置项 | 说明 | 必需 |
|--------|------|------|
| `OPENCLAW_CONFIG_PATH` | 独立配置文件 | ✅ |
| `OPENCLAW_STATE_DIR` | 独立状态目录 | ✅ |
| `agents.defaults.workspace` | 独立工作目录 | ✅ |
| `gateway.port` | 独立端口 | ✅ |
### 使用 Profile(推荐)
```bash
# 主 Gateway
openclaw --profile main setup
openclaw --profile main gateway --port 18789
openclaw --profile main gateway install
# 救援 Gateway
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19789
openclaw --profile rescue gateway install
```
### 手动配置示例
```bash
# 主实例
OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \
OPENCLAW_STATE_DIR=~/.openclaw-main \
openclaw gateway --port 18789
# 救援实例
OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
OPENCLAW_STATE_DIR=~/.openclaw-rescue \
openclaw gateway --port 19789
```
### 端口映射(衍生端口)
基础端口 = `gateway.port`
| 服务 | 端口偏移 |
|------|----------|
| browser control | +2 |
| canvas host | +4 |
| CDP 端口范围 | +9 ~ +108 |
### 多 Gateway 状态检查
```bash
openclaw --profile main status
openclaw --profile rescue status
openclaw --profile rescue browser status
```
---
## 二、多 Agent 部署
### 架构
```
┌─────────────────────────────────────────────────────────┐
│ Gateway │
│ - 消息路由 │
│ - Agent 调度 │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Agent 1 │ │ Agent 2 │ │ Agent 3 │
│ 主助手 │ │ 家庭 Bot│ │ 工作 Bot│
└─────────┘ └─────────┘ └─────────┘
```
### 配置示例
```json5
{
"agents": {
"list": [
{
"id": "main",
"default": true,
"name": "主助手",
"workspace": "~/.openclaw/workspace",
"sandbox": { "mode": "off" }
},
{
"id": "family",
"name": "家庭 Bot",
"workspace": "~/.openclaw/workspace-family",
"sandbox": {
"mode": "all",
"scope": "agent"
},
"tools": {
"allow": ["read"],
"deny": ["exec", "write", "edit"]
}
},
{
"id": "work",
"name": "工作 Bot",
"workspace": "~/.openclaw/workspace-work"
}
],
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram" } },
{ "agentId": "family", "match": { "channel": "whatsapp" } },
{ "agentId": "work", "match": { "channel": "discord" } }
]
}
}
```
### Agent 路由规则
匹配顺序:
1. `match.peer`(具体对话)
2. `match.guildId` / `match.teamId`
3. `match.accountId`(具体账号)
4. `match.accountId: "*"`(整个通道)
5. 默认 Agent
### Agent 工具限制
```json5
{
"agents": {
"list": [
{
"id": "public",
"tools": {
"profile": "read-only",
"allow": ["read", "message"],
"deny": ["exec", "write", "browser"]
}
}
]
}
}
```
### 工具组速查
| 组名 | 包含工具 |
|------|----------|
| `group:runtime` | exec, bash, process |
| `group:fs` | read, write, edit, apply_patch |
| `group:sessions` | sessions_list, sessions_history, sessions_send |
| `group:memory` | memory_search, memory_get |
| `group:ui` | browser, canvas |
| `group:messaging` | message |
---
## 三、节点(Nodes)管理
### 节点概念
**节点**是连接到 Gateway 的辅助设备(macOS/iOS/Android/无头主机),提供:
- 屏幕截图(Canvas)
- 摄像头拍照/录像
- 位置信息
- 系统命令执行
- 通知推送
### 节点架构
```
┌─────────────────────────────────────────────────────────┐
│ Gateway │
│ - 接收消息 │
│ - 运行 Agent │
│ - 路由工具调用 │
└────────────────────────┬────────────────────────────────┘
│ WebSocket
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Mac │ │ iPhone │ │ Android │
│ 节点 │ │ 节点 │ │ 节点 │
└─────────┘ └─────────┘ └─────────┘
```
### 节点配对
```bash
# 1. 在节点设备上启动
openclaw node run --host <gateway-host> --port 18789 --display-name "Mac Node"
# 2. 在 Gateway 主机上审批
openclaw nodes pending
openclaw nodes approve <requestId>
# 3. 查看节点状态
openclaw nodes status
openclaw nodes list
```
### 节点命令
#### 屏幕截图
```bash
openclaw nodes canvas snapshot --node <id> --format png
openclaw nodes canvas snapshot --node <id> --format jpg --max-width 1200
```
#### 摄像头拍照
```bash
openclaw nodes camera list --node <id>
openclaw nodes camera snap --node <id>
openclaw nodes camera snap --node <id> --facing front
```
#### 屏幕录制
```bash
openclaw nodes screen record --node <id> --duration 10s --fps 10
```
#### 位置信息
```bash
openclaw nodes location get --node <id>
openclaw nodes location get --node <id> --accuracy precise
```
#### 系统命令(节点主机)
```bash
openclaw nodes run --node <id> -- echo "Hello"
openclaw nodes notify --node <id> --title "Title" --body "Message"
```
### 节点绑定 Exec
```bash
# 全局默认
openclaw config set tools.exec.host node
openclaw config set tools.exec.node "<node-id>"
# Agent 级别
openclaw config set agents.list[0].tools.exec.node "<node-id>"
```
---
## 四、远程访问
### SSH 隧道
#### 创建隧道
```bash
# 本地 18789 -> 远程 127.0.0.1:18789
ssh -N -L 18789:127.0.0.1:18789 user@gateway-host
```
#### 隧道建立后的操作
```bash
# 查看远程 Gateway 状态
openclaw health
openclaw status --deep
# 发送消息
openclaw message send --target +15555550123 --message "Hi"
```
### 远程 Gateway 配置
```json5
{
"gateway": {
"mode": "remote",
"remote": {
"url": "ws://127.0.0.1:18789",
"token": "your-token"
}
}
}
```
### Tailscale 访问
```bash
# 推荐:保持 loopback 绑定 + Tailscale Serve
openclaw gateway --tailscale serve
# 查看状态
openclaw gateway status
```
### 远程访问模式
| 模式 | 说明 | 适用场景 |
|------|------|----------|
| SSH 隧道 | 通用方案 | 临时访问 |
| Tailscale | 内网穿透 | 长期使用 |
| VPN | 专用网络 | 企业环境 |
---
## 五、协同部署清单
### 部署前检查
- [ ] 确定 Gateway 数量和角色
- [ ] 确定 Agent 数量和用途
- [ ] 规划端口分配(间隔至少 20 端口)
- [ ] 配置网络访问(SSH/Tailscale)
- [ ] 准备各实例的认证信息
### 配置模板
#### 主 Gateway(主 Agent)
```json5
{
"gateway": { "port": 18789, "mode": "local", "bind": "loopback" },
"agents": {
"list": [{ "id": "main", "default": true, "workspace": "~/.openclaw/workspace" }],
"bindings": [{ "agentId": "main", "match": { "channel": "telegram" } }]
}
}
```
#### 救援 Gateway(隔离 Agent)
```json5
{
"gateway": { "port": 19789, "mode": "local", "bind": "loopback" },
"agents": {
"list": [{ "id": "rescue", "workspace": "~/.openclaw/workspace-rescue" }],
"bindings": [{ "agentId": "rescue", "match": { "channel": "telegram" } }]
}
}
```
### 运维命令速查
| 任务 | 命令 |
|------|------|
| 查看所有 Gateway | `openclaw --profile <name> status` |
| 查看节点 | `openclaw nodes status` |
| 查看 Agent | `openclaw agents list --bindings` |
| 重启 Gateway | `openclaw gateway restart` |
| SSH 隧道 | `ssh -N -L 18789:127.0.0.1:18789 user@host` |
---
## 六、故障排查
### 常见问题
#### Gateway 无法连接
```bash
# 检查本地隧道
lsof -nP -iTCP:18789 -sTCP:LISTEN
# 检查远程 Gateway
ssh user@host "openclaw gateway status"
```
#### 节点不响应
```bash
# 检查节点状态
openclaw nodes status
# 检查节点连接日志
openclaw logs | grep -i node
```
#### Agent 路由错误
```bash
# 查看绑定配置
openclaw agents list --bindings
# 检查消息路由
openclaw logs | grep -i routing
```
#### 工具调用被拒绝
```bash
# 检查工具限制
openclaw sandbox explain
# 检查 Agent 工具配置
openclaw config get agents.list
```
---
## 七、相关文档
- [CLI 命令参考](./CLI_COMMAND_REFERENCE.md)
- [Gateway 配置详解](./GATEWAY_CONFIGURATION.md)
- [故障排查指南](./TROUBLESHOOTING_GUIDE.md)
- [日志配置指南](./LOGGING_GUIDE.md)
- [系统架构](./SYSTEM.md)
- [多机部署](./MULTI-MACHINE.md)
---
*最后更新: 2026-02-04*
+349
View File
@@ -0,0 +1,349 @@
# OpenClaw Gateway 配置详解
## 配置文件位置
- 默认位置: `~/.openclaw/openclaw.json`
- 开发模式: `~/.openclaw-dev/openclaw.json`
## 根配置结构
```json5
{
// 元数据
"meta": {},
// 模型提供者
"models": {},
// Agent 配置
"agents": {},
// 通道配置
"channels": {},
// Gateway 配置
"gateway": {},
// 插件配置
"plugins": {},
// 日志配置
"logging": {},
// 消息配置
"messages": {},
// 环境变量
"env": {},
}
```
## gateway - Gateway 配置
### 基础配置
```json5
{
"gateway": {
"port": 18789, // WebSocket 端口
"mode": "local", // 模式: local|remote
"bind": "loopback", // 绑定: loopback|lan|tailnet|auto|custom
"auth": {
"mode": "token", // 认证模式: token|password
"token": "your-token" // 认证 Token
}
}
}
```
### 远程 Gateway
```json5
{
"gateway": {
"mode": "remote",
"remote": {
"url": "wss://gateway.example.com",
"token": "remote-token"
}
}
}
```
### 绑定模式说明
| 模式 | 说明 | 认证要求 |
|------|------|----------|
| `loopback` | 仅本地访问 | 可选 |
| `lan` | 局域网访问 | 必须 |
| `tailnet` | Tailscale 网络 | 必须 |
| `auto` | 自动选择 | 取决于网络 |
| `custom` | 自定义地址 | 必须 |
## logging - 日志配置
```json5
{
"logging": {
"level": "info", // 文件日志级别: trace|debug|info|warn|error
"file": "/tmp/openclaw/openclaw.log", // 日志文件路径
"consoleLevel": "info", // 控制台日志级别
"consoleStyle": "pretty", // 控制台样式: pretty|compact|json
"redactSensitive": "tools", // 敏感信息脱敏: off|tools
"redactPatterns": [ // 自定义脱敏规则
"sk-.*"
]
}
}
```
### 日志级别
- `trace` - 最详细
- `debug` - 调试信息
- `info` - 默认
- `warn` - 警告
- `error` - 错误
## agents - Agent 配置
### 全局默认配置
```json5
{
"agents": {
"defaults": {
"workspace": "~/.openclaw/workspace", // 工作目录
"model": {
"primary": "deepseek/deepseek-chat" // 默认模型
},
"sandbox": {
"mode": "all", // 沙箱模式: off|non-main|all
"scope": "session", // 沙箱范围: session|agent|shared
"workspaceAccess": "rw" // 工作目录访问: none|ro|rw
},
"groupChat": {
"mentionPatterns": ["@openclaw"] // 群聊触发词
}
}
}
}
```
### 多 Agent 配置
```json5
{
"agents": {
"list": [
{
"id": "main",
"name": "主 Agent",
"workspace": "~/.openclaw/workspace",
"model": {
"primary": "deepseek/deepseek-chat",
"fallbacks": ["minimax/minimax-m2.1"]
}
},
{
"id": "guardian",
"name": "守护者",
"workspace": "~/.openclaw/workspace-guardian"
}
],
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram" } },
{ "agentId": "guardian", "match": { "channel": "whatsapp" } }
]
}
}
```
## channels - 通道配置
### Telegram
```json5
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "your-bot-token",
"dmPolicy": "pairing", // pairing|allowlist|open|disabled
"allowFrom": ["tg:123456789"], // 允许发送者列表
"groups": {
"*": { "requireMention": true }
},
"replyToMode": "first", // off|first|all
"linkPreview": true,
"streamMode": "partial", // off|partial|block
"actions": {
"reactions": true,
"sendMessage": true
}
}
}
}
```
### WhatsApp
```json5
{
"channels": {
"whatsapp": {
"enabled": true,
"dmPolicy": "pairing", // pairing|allowlist|open|disabled
"allowFrom": ["+15555550123"],
"groups": {
"*": { "requireMention": true }
},
"textChunkLimit": 4000,
"chunkMode": "length",
"mediaMaxMb": 50
}
}
}
```
### Discord
```json5
{
"channels": {
"discord": {
"enabled": true,
"token": "your-discord-token",
"dm": {
"enabled": true,
"policy": "pairing"
},
"replyToMode": "off",
"historyLimit": 20,
"actions": {
"reactions": true,
"messages": true
}
}
}
}
```
## models - 模型配置
### DeepSeek
```json5
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-xxx",
"api": "openai-completions",
"models": [
{ "id": "deepseek-chat", "name": "DeepSeek" }
]
}
}
}
}
```
### MiniMax
```json5
{
"models": {
"providers": {
"minimax": {
"baseUrl": "https://api.minimaxi.com/v1",
"apiKey": "sk-api-xxx",
"models": [
{ "id": "minimax-m2.1", "name": "MiniMax M2.1" },
{ "id": "embo-01", "name": "Embodied" }
]
}
}
}
}
```
## 配置验证
OpenClaw 使用严格的 JSON Schema 验证:
```bash
# 检查配置
openclaw doctor
# 自动修复
openclaw doctor --fix
```
### 常见验证错误
| 错误 | 解决 |
|------|------|
| Unknown key | 删除未知配置项 |
| Invalid type | 检查类型是否匹配 |
| Config invalid | 运行 `openclaw doctor --fix` |
## 配置包含 ($include)
支持拆分配置文件:
```json5
// ~/.openclaw/openclaw.json
{
"gateway": { "port": 18789 },
"agents": { "$include": "./agents.json5" },
"channels": { "$include": "./channels.json5" }
}
```
## 环境变量
### 内联环境变量
```json5
{
"env": {
"vars": {
"OPENROUTER_API_KEY": "sk-or-..."
}
}
}
```
### 环境变量引用
```json5
{
"models": {
"providers": {
"custom": {
"apiKey": "${CUSTOM_API_KEY}"
}
}
}
}
```
## 敏感信息脱敏
```json5
{
"logging": {
"redactSensitive": "tools",
"redactPatterns": [
"\\bTOKEN\\b\\s*[=:]\\s*([\"']?)([^\\s\"']+)\\1",
"/\\bsk-[A-Za-z0-9_-]{8,}\\b/gi"
]
}
}
```
---
*最后更新: 2026-02-04*
+268
View File
@@ -0,0 +1,268 @@
# 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号机 (守护者)*
+444
View File
@@ -0,0 +1,444 @@
# 本地向量模型配置详细解说
> **思考时间**: 5.85s
> **主题**: OpenClaw 本地向量化服务配置
> **适用**: 需要本地运行嵌入模型的场景
---
## 文档概述
本文档详细记录了在 OpenClaw 中配置本地向量化服务的完整过程,包括:
- 技术方案、实施步骤
- 配置代码
- 踩坑记录与解决方案
---
## 一、配置背景与目标
### 1.1 应用场景分析
| 需求 | 说明 |
|------|------|
| 数据隐私 | 敏感数据不出本地环境 |
| 成本控制 | 本地部署无 API 费用 |
| 网络稳定 | 本地服务更可靠 |
| 离线使用 | 无外网环境必需 |
### 1.2 技术选型
选择 **Ollama** 作为本地向量化平台:
| 优势 | 说明 |
|------|------|
| 开箱即用 | mxbai-embed-large 可在 CPU 高效运行 |
| OpenAI 兼容 | 与 OpenClaw "openai" provider 无缝对接 |
| 便捷管理 | 简单命令完成模型下载/更新/卸载 |
**OpenClaw provider 类型:**
- `local`: node-llama-cpp 直接运行
- `openai`: OpenAI 兼容 API(Ollama 用这个)
- `gemini`: Google Gemini 服务
---
## 二、系统环境与硬件要求
### 2.1 测试环境
| 组件 | 配置 |
|------|------|
| 设备 | ThinkPad X230 (2012年老旧笔记本) |
| CPU | Intel Core i5-3320M 双核 2.6GHz |
| 内存 | 8GB DDR3L (可用 7.7GB) |
| 存储 | SSD |
| OS | Ubuntu/Linux + systemd 用户服务 |
### 2.2 性能表现
| 模型 | mxbai-embed-large:latest |
|------|--------------------------|
| 参数 | 334M |
| 大小 | 669MB (F16量化) |
| 内存占用 | 58MB (峰值69MB) |
| 响应时间 | < 1秒 |
**结论**: 老旧硬件完全可胜任本地向量化任务。
---
## 三、Ollama 服务部署详解
### 3.1 安装流程
```bash
# 正常网络
curl -fsSL https://ollama.ai/install.sh | sh
# 如果代理干扰,用这个
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
curl -k -fsSL https://ollama.ai/install.sh | sh
```
安装后自动:
- 下载二进制到 `/usr/local/bin/`
- 创建 systemd 服务
- 默认监听 `127.0.0.1:11434`
### 3.2 下载嵌入模型
```bash
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
ollama pull mxbai-embed-large:latest
```
验证:
```bash
curl http://localhost:11434/api/tags
```
### 3.3 服务管理
```bash
# systemd 用户服务管理
systemctl --user status ollama # 查看状态
systemctl --user start ollama # 启动
systemctl --user stop ollama # 停止
systemctl --user restart ollama # 重启
systemctl --user disable ollama # 禁用自启动
```
**注意**: 有两种服务位置
- 系统级: `/etc/systemd/system/ollama.service`
- 用户级: `~/.config/systemd/user/ollama.service`
---
## 四、OpenClaw 配置详解
### 4.1 配置文件结构
```
~/.openclaw/openclaw.json (JSON5格式,支持注释)
顶级字段:
├── meta # 元数据
├── wizard # 向导状态
├── browser # 浏览器功能
├── models # 模型提供商配置 ⭐
├── agents # Agent配置 ⭐
├── tools # 工具设置
├── messages # 消息行为
├── commands # 命令执行
├── channels # 通信渠道
├── gateway # 网关参数
└── plugins # 插件管理
```
### 4.2 Ollama Provider 配置
```json
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"models": [
{
"id": "llama3:latest",
"name": "Llama 3",
"reasoning": false,
"input": ["text"],
"contextWindow": 32768,
"maxTokens": 8192
},
{
"id": "mxbai-embed-large:latest",
"name": "MxBai Embed",
"reasoning": false,
"input": ["text"],
"contextWindow": 512,
"maxTokens": 512
}
]
}
}
}
}
```
**配置要点:**
- `baseUrl`: `http://localhost:11434/v1` (`/v1` 是 OpenAI API 前缀)
- `apiKey`: 任意值,Ollama 不验证
- `models`: 列出所有可用模型
### 4.3 向量化搜索配置
```json
{
"agents": {
"defaults": {
"model": {
"primary": "minimax/minimax-m2.1",
"fallbacks": ["deepseek/deepseek-chat"]
},
"memorySearch": {
"provider": "openai", // ⭐ 关键:provider类型
"model": "mxbai-embed-large:latest", // ⭐ 必须与provider中id一致
"remote": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local"
},
"cache": {
"enabled": true,
"maxEntries": 50000
}
}
}
}
}
```
**关键说明:**
- `provider` 必须设为 `"openai"`(Ollama 是 OpenAI 兼容接口)
- `remote.baseUrl` 指定 Ollama 具体地址
- `cache` 提高性能
---
## 五、踩坑记录与解决方案
### 5.1 代理干扰问题 ⭐最重要⭐
**问题:**
```
curl 请求 127.0.0.1:11434 返回 "Empty reply from server"
```
**根因:**
代理环境变量将本地请求转发到了 `192.168.0.66:7890`
**发现:**
```
"Uses proxy env variable ALL_PROXY == 'socks5h://192.168.0.66:7890'"
```
**解决方案:**
```bash
# 方法1: 临时关闭代理
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy NO_PROXY
# 方法2: curl 跳过代理
curl --noproxy 127.0.0.1 http://127.0.0.1:11434/api/tags
```
**教训:** 排查类似问题首先检查代理设置。
---
### 5.2 SSL 下载失败
**问题:**
```
curl: (56) OpenSSL SSL_read: ... decryption failed or bad record mac
```
**解决方案:**
```bash
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
curl -k -fsSL https://ollama.ai/install.sh | sh
```
**教训:** 代理软件 SSL 中间人解密可能导致错误。
---
### 5.3 systemd 自动重启
**问题:** 杀掉进程后立即被 systemd 重新启动
**解决方案:**
```bash
# 先停止服务
systemctl --user stop ollama.service
systemctl --user disable ollama.service
# 再杀进程
pkill -9 ollama
```
**教训:** systemd 管理的服务要按正确顺序操作。
---
### 5.4 JSON 配置格式错误
**问题:**
```
JSON5: invalid character '"' at 175:3
```
**解决:** 用 heredoc 重写配置文件
```bash
cat > ~/.openclaw/openclaw.json << 'EOF'
{...完整正确的内容...}
EOF
# 验证
python3 -m json.tool ~/.openclaw/openclaw.json
```
---
### 5.5 batch 配置项不被识别
**问题:**
```
agents.defaults.memorySearch: Unrecognized key: 'batch'
```
**解决:** 移除不支持的配置项,只保留核心配置。
---
### 5.6 provider 命名混淆
**错误理解:** provider 应该设为 "ollama"
**正确理解:**
- `provider` = API 类型 (`openai`/`local`/`gemini`)
- `remote.baseUrl` = 具体服务地址
**教训:** 区分 provider 类型和服务实例。
---
## 六、验证与测试
### 6.1 Ollama 服务验证
```bash
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
# 1. 检查服务
systemctl --user status ollama
# 2. 测试 API
curl http://localhost:11434/api/tags
# 3. 测试嵌入
curl -X POST http://localhost:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model": "mxbai-embed-large:latest", "input": ["测试文本"]}'
```
### 6.2 OpenClaw 验证
```bash
# 验证 JSON 格式
python3 -m json.tool ~/.openclaw/openclaw.json
# 健康检查
openclaw doctor
# 查看配置加载日志
journalctl --user -u openclaw-gateway.service -n 50
```
### 6.3 重启 Gateway
```bash
systemctl --user restart openclaw-gateway
sleep 5
systemctl --user status openclaw-gateway
```
---
## 七、运维命令速查
### Ollama 管理
```bash
systemctl --user status ollama # 状态
systemctl --user start ollama # 启动
systemctl --user stop ollama # 停止
systemctl --user restart ollama # 重启
```
### OpenClaw 管理
```bash
openclaw doctor # 健康检查
systemctl --user restart openclaw-gateway # 重启 Gateway
```
### 日志查看
```bash
journalctl --user -u ollama -n 50 # Ollama 日志
journalctl --user -u openclaw-gateway -n 50 # Gateway 日志
```
### 常见故障
| 故障 | 症状 | 解决 |
|------|------|------|
| 向量化无响应 | 超时 | 检查代理、Ollama 服务状态 |
| 配置不生效 | 无变化 | 重启 Gateway |
| 内存过高 | 系统慢 | 重启 Ollama 服务 |
---
## 八、性能优化
### 8.1 内存优化
| 方法 | 效果 |
|------|------|
| 更小量化模型 (Q4_0/Q5_1) | 降低 30-50% |
| 减少缓存 (10000) | 降低内存占用 |
| 按需启动 Ollama | 不用时停止 |
### 8.2 启动速度
- 使用 SSD 存储
- 保持 Ollama 持续运行
### 8.3 网络优化
**不推荐**暴露 Ollama 到外网,如需:
```bash
export OLLAMA_HOST=0.0.0.0:11434 # 允许外部访问(不推荐)
```
---
## 九、配置总结
### 成功实现
| 目标 | 状态 |
|------|------|
| 本地向量化服务 | ✅ ThinkPad X230 成功运行 |
| 嵌入模型 | ✅ mxbai-embed-large:latest (334M, F16) |
| Provider 模式 | ✅ openai (Ollama 兼容) |
| 向量记忆搜索 | ✅ 功能正常 |
### 关键成功因素
1. ✅ 准确理解 provider 类型与 remote 配置的关系
2. ✅ 正确处理代理干扰问题
3. ✅ 严格遵守 JSON 配置格式
### 经验
- 主要问题都是环境配置(代理、进程管理)
- 技术方案本身成熟可靠
- 老旧硬件完全可以胜任
---
*文档创建: 2026-02-04*
+146
View File
@@ -0,0 +1,146 @@
# OpenClaw 日志配置指南
## 日志位置
### 默认日志文件
```
/tmp/openclaw/openclaw-YYYY-MM-DD.log
```
### 自定义日志路径
```json5
{
"logging": {
"file": "/path/to/openclaw.log"
}
}
```
## 日志级别
### 配置日志级别
```json5
{
"logging": {
"level": "info", // 文件日志级别
"consoleLevel": "info", // 控制台日志级别
"consoleStyle": "pretty" // 控制台样式
}
}
```
### 日志级别顺序
```
trace > debug > info > warn > error
```
| 级别 | 说明 | 用途 |
|------|------|------|
| `trace` | 最详细 | 调试时使用 |
| `debug` | 调试信息 | 开发调试 |
| `info` | 默认 | 一般运行 |
| `warn` | 警告 | 潜在问题 |
| `error` | 错误 | 错误信息 |
## 查看日志
### 实时日志
```bash
openclaw logs --follow # 实时跟踪
openclaw logs --since 1h # 最近 1 小时
openclaw logs --limit 200 # 最近 200 行
```
### 日志格式
```bash
openclaw logs --json # JSON 格式
openclaw logs --plain # 纯文本
openclaw logs --no-color # 无颜色
```
### 过滤日志
```bash
# 过滤错误
openclaw logs | grep -i error
# 过滤特定通道
openclaw channels logs --channel whatsapp
```
## 控制台样式
```json5
{
"logging": {
"consoleStyle": "pretty" // 人类友好,有颜色
"consoleStyle": "compact" // 紧凑输出
"consoleStyle": "json" // JSON 格式
}
}
```
## 敏感信息脱敏
### 基础配置
```json5
{
"logging": {
"redactSensitive": "tools", // 仅工具输出脱敏
"redactSensitive": "off" // 关闭脱敏
}
}
```
### 自定义脱敏规则
```json5
{
"logging": {
"redactPatterns": [
"\\bTOKEN\\b\\s*[=:]\\s*([\"']?)([^\\s\"']+)\\1",
"/\\bsk-[A-Za-z0-9_-]{8,}\\b/gi",
"\\bAPI_KEY\\b.*"
]
}
}
```
## 诊断标志 (Diagnostics Flags)
用于在不改变日志级别的情况下开启特定调试日志:
```json5
{
"diagnostics": {
"flags": ["telegram.http", "whatsapp.connection"]
}
}
```
### 环境变量临时启用
```bash
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
```
## 日志位置速查
| 类型 | 位置 |
|------|------|
| Gateway 文件日志 | `/tmp/openclaw/openclaw-YYYY-MM-DD.log` |
| macOS 服务日志 | `~/.openclaw/logs/gateway.log` |
| Linux 服务日志 | `journalctl --user -u openclaw-gateway.service` |
| 会话文件 | `$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/` |
| 媒体缓存 | `$OPENCLAW_STATE_DIR/media/` |
---
*最后更新: 2026-02-04*
+847
View File
@@ -0,0 +1,847 @@
# 青龙部署 MemOS 自托管版方案
> 版本: v1.0
> 创建日期: 2026-02-07
> 适用节点: 青龙 (1号机, 192.168.0.31)
> 目标: 为 OpenClaw 集成 MemOS 记忆系统
---
## 📋 目录
1. [概述](#概述)
2. [环境准备](#环境准备)
3. [数据库部署](#数据库部署)
4. [MemOS 安装](#memos-安装)
5. [配置集成](#配置集成)
6. [OpenClaw 插件](#openclaw-插件)
7. [验证测试](#验证测试)
8. [故障排查](#故障排查)
---
## 一、概述
### 1.1 目标
在青龙 (192.168.0.31) 上部署 MemOS 自托管版,为 OpenClaw 提供记忆能力。
### 1.2 架构
```
┌─────────────────────────────────────────────────────────────┐
│ 青龙 (192.168.0.31) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ MemOS Server │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │ │
│ │ │ Neo4j │ │ Qdrant │ │ FastAPI │ │ │
│ │ │ (图数据库)│ │(向量数据库)│ │ API 服务 │ │ │
│ │ └─────────┘ └─────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ OpenClaw Gateway │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ MemOS Cloud OpenClaw Plugin │ │ │
│ │ │ - 启动前召回上下文 │ │ │
│ │ │ - 结束后保存记忆 │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 现有服务 │ │
│ │ - MiniMax/DeepSeek (LLM) │ │
│ │ - nomic-embed-text (Embedding) │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
```
### 1.3 资源需求
| 组件 | CPU | 内存 | 存储 | 说明 |
|------|-----|------|------|------|
| Neo4j | 1 核 | 2GB | 10GB | 图数据库 |
| Qdrant | 1 核 | 1GB | 5GB | 向量数据库 |
| MemOS | 1 核 | 1GB | 1GB | API 服务 |
| **总计** | **2 核** | **4GB** | **16GB** | 青龙可满足 |
---
## 二、环境准备
### 2.1 SSH 连接
```bash
# 从 2号机 连接青龙
sshpass -p '3efvVGY&' ssh root@192.168.0.31
# 或直接登录
ssh root@192.168.0.31
```
### 2.2 系统检查
```bash
# 1. 检查系统版本
cat /etc/os-release
# 2. 检查 Docker
docker --version
docker-compose --version
# 3. 检查内存
free -h
# 4. 检查磁盘
df -h
# 5. 检查 CPU
lscpu | grep "CPU(s)"
```
### 2.3 安装 Docker (如未安装)
```bash
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
# 添加当前用户到 docker 组 (免 sudo)
sudo usermod -aG docker $USER
```
### 2.4 创建目录结构
```bash
# 创建部署目录
sudo mkdir -p /opt/memos
sudo chown -R $USER:$USER /opt/memos
cd /opt/memos
# 创建数据目录
mkdir -p data/neo4j
mkdir -p data/qdrant
mkdir -p logs
# 创建配置目录
mkdir -p config
```
---
## 三、数据库部署
### 3.1 使用 Docker 部署
#### 3.1.1 创建 Docker Compose 配置
```bash
# 创建 docker-compose.yml
cat > /opt/memos/docker-compose.yml << 'EOF'
version: '3.8'
services:
# Neo4j 图数据库
neo4j:
image: neo4j:5.12
container_name: memos-neo4j
restart: unless-stopped
ports:
- "7474:7474"
- "7687:7687"
environment:
NEO4J_AUTH: neo4j/memos_password
NEO4J_PLUGINS: ["apoc", "graph-data-science"]
NEO4J_dbms_memory_heap_initial__size: 512m
NEO4J_dbms_memory_heap_max__size: 2g
NEO4J_dbms_tx__log__rotation_rotation__keep__number: 10
volumes:
- ./data/neo4j/data:/data
- ./data/neo4j/logs:/logs
- ./data/neo4j/import:/var/lib/neo4j/import
networks:
- memos-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7474"]
interval: 30s
timeout: 10s
retries: 5
# Qdrant 向量数据库
qdrant:
image: qdrant/qdrant:v1.7.0
container_name: memos-qdrant
restart: unless-stopped
ports:
- "6333:6333"
- "6334:6334"
environment:
QDRANT__SERVICE__API_PORT: 6333
QDRANT__STORAGE__STORAGE_PATH: /qdrant/storage
volumes:
- ./data/qdrant:/qdrant/storage
networks:
- memos-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6333/dashboard"]
interval: 30s
timeout: 10s
retries: 5
networks:
memos-network:
driver: bridge
EOF
```
#### 3.1.2 启动数据库
```bash
cd /opt/memos
# 启动服务
docker compose up -d
# 查看启动状态
docker compose ps
# 查看日志
docker compose logs -f
```
#### 3.1.3 验证数据库
```bash
# 1. 检查 Neo4j
curl -u neo4j:memos_password http://localhost:7474
# 2. 检查 Qdrant
curl http://localhost:6333/dashboard
# 3. 检查健康状态
docker compose exec neo4j cypher-query "RETURN 1"
```
### 3.2 数据库连接信息
| 数据库 | 地址 | 端口 | 用户名 | 密码 |
|--------|------|------|--------|------|
| Neo4j | localhost | 7474/7687 | neo4j | memos_password |
| Qdrant | localhost | 6333 | - | - |
---
## 四、MemOS 安装
### 4.1 安装依赖
```bash
# 安装 Python 3.11+
sudo apt install -y python3.11 python3.11-venv python3-pip
# 创建虚拟环境
python3.11 -m venv /opt/memos/venv
source /opt/memos/venv/bin/activate
# 升级 pip
pip install --upgrade pip
# 安装 MemOS
cd /opt/memos
git clone https://github.com/MemTensor/MemOS.git
cd MemOS
pip install -e .
# 安装额外依赖
pip install pymemgraph # Neo4j driver
pip install fastapi uvicorn
```
### 4.2 环境变量配置
```bash
# 创建 .env 文件
cat > /opt/memos/.env << 'EOF'
# MemOS 配置
MEMOS_MODE=self_hosted
# Neo4j 配置
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=memos_password
# Qdrant 配置
QDRANT_URL=http://localhost:6333
# LLM 配置 (使用现有资源)
# 方案1: 使用 OpenAI
OPENAI_API_KEY=your_openai_api_key
# 方案2: 使用阿里百炼 (推荐)
DASHSCOPE_API_KEY=your_dashscope_api_key
# Embedding 配置 (使用现有资源)
# 方案1: 使用 OpenAI
OPENAI_EMBEDDING_API_KEY=your_openai_embedding_api_key
# 方案2: 使用 Voyage AI
VOYAGE_API_KEY=your_voyage_api_key
# 方案3: 使用本地 embedding (nomic-embed-text)
EMBEDDING_PROVIDER=ollama
EMBEDDING_BASE_URL=http://localhost:11434/v1
EMBEDDING_MODEL=nomic-embed-text:latest
# 日志配置
LOG_LEVEL=INFO
EOF
# 应用环境变量
source /opt/memos/.env
```
### 4.3 创建启动脚本
```bash
# 创建启动脚本
cat > /opt/memos/start.sh << 'EOF'
#!/bin/bash
# 激活虚拟环境
source /opt/memos/venv/bin/activate
source /opt/memos/.env
# 设置工作目录
cd /opt/memos/MemOS/src
# 启动 MemOS API 服务
echo "Starting MemOS API Server..."
uvicorn memos.api.server_api:app \
--host 0.0.0.0 \
--port 8001 \
--workers 4 \
--reload \
>> /opt/memos/logs/memos.log 2>&1 &
echo "MemOS started on http://localhost:8001"
echo "Dashboard: http://localhost:8001/docs"
EOF
chmod +x /opt/memos/start.sh
```
### 4.4 创建 systemd 服务
```bash
# 创建 systemd 服务文件
sudo cat > /etc/systemd/system/memos.service << 'EOF'
[Unit]
Description=MemOS Memory Operating System
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/memos
ExecStart=/opt/memos/start.sh
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=10
Environment="PATH=/opt/memos/venv/bin"
EnvironmentFile=/opt/memos/.env
# 日志
StandardOutput=append:/opt/memos/logs/memos-system.log
StandardError=append:/opt/memos/logs/memos-error.log
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd
sudo systemctl daemon-reload
# 启用服务
sudo systemctl enable memos
# 启动服务
sudo systemctl start memos
# 检查状态
sudo systemctl status memos
```
---
## 五、配置集成
### 5.1 配置本地 Embedding
如果使用本地 nomic-embed-text:
```bash
# 1. 确保 Ollama 运行
curl http://localhost:11434/api/version
# 2. 拉取 embedding 模型
ollama pull nomic-embed-text:latest
# 3. 验证模型
ollama list
```
### 5.2 配置 LLM
#### 方案1: 使用阿里百炼 (推荐)
```bash
# 在 .env 中配置
DASHSCOPE_API_KEY=your_api_key
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# 可用模型:
# - qwen3-max
# - qwen3-plus
# - qwen-turbo
```
#### 方案2: 使用 OpenAI
```bash
# 在 .env 中配置
OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=https://api.openai.com/v1
# 可用模型:
# - gpt-4
# - gpt-4-turbo
# - gpt-3.5-turbo
```
---
## 六、OpenClaw 插件
### 6.1 安装 MemOS Cloud OpenClaw 插件
MemOS 官方提供 OpenClaw 插件,可以自动管理记忆:
```bash
# 1. 克隆插件仓库
cd /opt/memos
git clone https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin.git
cd MemOS-Cloud-OpenClaw-Plugin
# 2. 安装依赖
pip install -r requirements.txt
```
### 6.2 插件配置
```bash
# 创建配置
cat > /opt/memos/openclaw-plugin/config.yaml << 'EOF'
# MemOS OpenClaw Plugin 配置
# MemOS 连接配置
memos:
api_url: http://localhost:8001 # MemOS API 地址
api_key: "" # 自托管不需要 key,空字符串
# 用户配置
user:
default_id: "yh6788" # 默认用户 ID
mem_cube_id: "default" # 默认记忆立方体
# 行为配置
behavior:
# 启动时召回多少条记忆
recall_limit: 20
# 保存记忆的触发条件
save_triggers:
- "对话结束"
- "关键信息提取"
- "用户明确要求保存"
# 自动提取的主题
auto_extract_topics:
- "用户偏好"
- "工作内容"
- "学习进度"
- "项目状态"
# 日志配置
logging:
level: INFO
file: /opt/memos/logs/openclaw-plugin.log
EOF
```
### 6.3 插件工作流程
```
┌─────────────────────────────────────────────────────────────┐
│ MemOS OpenClaw Plugin │
├─────────────────────────────────────────────────────────────┤
│ │
│ OpenClaw 启动 │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────┐ │
│ │ 1. ON_LAUNCH │ │
│ │ - 从 MemOS 召回上下文 │ │
│ │ - 加载用户偏好 │ │
│ │ - 加载会话历史 │ │
│ └─────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────┐ │
│ │ 2. ON_MESSAGE │ │
│ │ - 监控对话内容 │ │
│ │ - 提取关键信息 │ │
│ │ - 更新记忆 │ │
│ └─────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────┐ │
│ │ 3. ON_TERMINATE │ │
│ │ - 保存完整对话 │ │
│ │ - 更新用户画像 │ │
│ │ - 生成摘要 │ │
│ └─────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
```
---
## 七、验证测试
### 7.1 检查服务状态
```bash
# 1. 检查 Docker 服务
docker compose ps
# 2. 检查 MemOS 进程
ps aux | grep uvicorn
# 3. 检查端口监听
netstat -tlnp | grep -E "7474|7687|6333|8001"
# 4. 检查 systemd 服务
systemctl status memos
```
### 7.2 API 测试
```bash
# 1. 测试 MemOS 健康检查
curl http://localhost:8001/health
# 2. 测试 API 文档
curl http://localhost:8001/docs
# 3. 添加测试记忆
curl -X POST http://localhost:8001/product/add \
-H "Content-Type: application/json" \
-d '{
"user_id": "test_user",
"mem_cube_id": "default",
"messages": [{"role": "user", "content": "I like programming with Python"}],
"async_mode": "sync"
}'
# 4. 搜索测试记忆
curl -X POST http://localhost:8001/product/search \
-H "Content-Type: application/json" \
-d '{
"query": "What do I like",
"user_id": "test_user",
"mem_cube_id": "default"
}'
```
### 7.3 OpenClaw 集成测试
```bash
# 1. 检查插件是否加载
cat /opt/memos/logs/openclaw-plugin.log
# 2. 测试插件与 MemOS 连接
python -c "
import requests
import json
# 测试连接
resp = requests.get('http://localhost:8001/health')
print(f'MemOS Status: {resp.status_code}')
# 测试添加记忆
data = {
'user_id': 'yh6788',
'mem_cube_id': 'default',
'messages': [{'role': 'user', 'content': 'Test memory from OpenClaw'}],
'async_mode': 'sync'
}
resp = requests.post('http://localhost:8001/product/add', json=data)
print(f'Add Memory: {resp.status_code}')
print(json.dumps(resp.json(), indent=2))
"
```
---
## 八、故障排查
### 8.1 常见问题
#### Q1: Neo4j 连接失败
```bash
# 检查 Neo4j 日志
docker logs memos-neo4j --tail 100
# 检查 Neo4j 是否就绪
curl -u neo4j:memos_password http://localhost:7474
# 重启 Neo4j
docker restart memos-neo4j
```
#### Q2: Qdrant 连接失败
```bash
# 检查 Qdrant 日志
docker logs memos-qdrant --tail 100
# 检查 Qdrant 健康
curl http://localhost:6333/dashboard
# 重启 Qdrant
docker restart memos-qdrant
```
#### Q3: MemOS 启动失败
```bash
# 查看 MemOS 日志
tail -f /opt/memos/logs/memos.log
# 检查虚拟环境
source /opt/memos/venv/bin/activate
which python
python --version
# 检查依赖
pip list | grep memos
```
#### Q4: API 返回错误
```bash
# 检查 API 响应
curl -v http://localhost:8001/health
# 检查配置
cat /opt/memos/.env | grep -E "NEO4J|QDRANT|API"
```
### 8.2 日志位置
| 组件 | 日志位置 |
|------|----------|
| MemOS 主日志 | `/opt/memos/logs/memos.log` |
| MemOS 系统日志 | `/opt/memos/logs/memos-system.log` |
| MemOS 错误日志 | `/opt/memos/logs/memos-error.log` |
| Neo4j 日志 | `docker logs memos-neo4j` |
| Qdrant 日志 | `docker logs memos-qdrant` |
| OpenClaw 插件 | `/opt/memos/logs/openclaw-plugin.log` |
### 8.3 常用命令
```bash
# 重启所有服务
cd /opt/memos
docker compose restart
systemctl restart memos
# 查看所有日志
tail -f /opt/memos/logs/memos.log
# 停止所有服务
cd /opt/memos
docker compose down
systemctl stop memos
# 完全重置 (危险!)
cd /opt/memos
docker compose down -v
rm -rf data/
docker compose up -d
```
---
## 九、性能优化
### 9.1 Neo4j 优化
```bash
# 在 docker-compose.yml 中调整
neo4j:
environment:
NEO4J_dbms_memory_heap_initial__size: 1g
NEO4J_dbms_memory_heap_max__size: 4g
NEO4J_dbms_transaction_log_rotation_rotation__keep__number: 50
```
### 9.2 Qdrant 优化
```bash
# 在 docker-compose.yml 中配置
qdrant:
environment:
QDRANT__SERVICE__HTTP_PORT: 6333
QDRANT__SERVICE__GRPC_PORT: 6334
QDRANT__STORAGE__PERFORMANCE__MAX_SCORING_THREADS: 4
```
### 9.3 MemOS 优化
```bash
# 调整 uvicorn workers
# 单机部署建议: CPU核心数 - 1
workers = 3 # 4核CPU
```
---
## 十、备份与恢复
### 10.1 备份策略
```bash
# 创建备份脚本
cat > /opt/memos/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR=/opt/memos/backups
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 1. 备份 Neo4j
echo "Backing up Neo4j..."
docker exec memos-neo4j neo4j-admin dump --database=neo4j --to=/backups/neo4j_$DATE.dump
# 2. 备份 Qdrant
echo "Backing up Qdrant..."
docker exec memos-qdrant tar czf /backups/qdrant_$DATE.tar.gz -C /qdrant/storage .
# 3. 备份 MemOS 配置
echo "Backing up MemOS config..."
tar czf $BACKUP_DIR/memos_config_$DATE.tar.gz /opt/memos/.env /opt/memos/config/
echo "Backup completed: $DATE"
EOF
chmod +x /opt/memos/backup.sh
# 添加定时任务 (每天凌晨 3 点执行)
(crontab -l 2>/dev/null || echo "") | grep -v "backup.sh" > /tmp/crontab.tmp
echo "0 3 * * * /opt/memos/backup.sh" >> /tmp/crontab.tmp
crontab /tmp/crontab.tmp
rm /tmp/crontab.tmp
```
### 10.2 恢复脚本
```bash
# 创建恢复脚本
cat > /opt/memos/restore.sh << 'EOF'
#!/bin/bash
BACKUP_FILE=$1
if [ -z "$BACKUP_FILE" ]; then
echo "Usage: $0 <backup_file.tar.gz>"
exit 1
fi
# 停止服务
cd /opt/memos
docker compose down
systemctl stop memos
# 恢复 Neo4j
docker exec -i memos-neo4j neo4j-admin load --from=- --database=neo4j --force
# 恢复 Qdrant
docker exec -i memos-qdrant tar xzf /backups/qdrant_latest.tar.gz -C /qdrant/storage
# 重启服务
docker compose up -d
systemctl start memos
echo "Restore completed"
EOF
```
---
## 十一、总结
### 11.1 部署清单
| 步骤 | 操作 | 状态 |
|------|------|------|
| 1 | SSH 连接青龙 | ☐ |
| 2 | 安装 Docker | ☐ |
| 3 | 部署 Neo4j + Qdrant | ☐ |
| 4 | 安装 MemOS | ☐ |
| 5 | 配置 LLM + Embedding | ☐ |
| 6 | 配置 OpenClaw 插件 | ☐ |
| 7 | 验证测试 | ☐ |
| 8 | 配置备份 | ☐ |
### 11.2 下一步
1. **测试阶段** (1-2天)
- 测试云端版 MemOS (快速验证)
- 评估功能和性能
2. **部署阶段** (1周)
- 按本文档在青龙部署
- 集成 OpenClaw 插件
3. **优化阶段** (持续)
- 性能调优
- 备份策略
- 监控告警
---
*文档版本: v1.0 (2026-02-07)*
*作者: 2号机 (守护者)*
+14
View File
@@ -0,0 +1,14 @@
### MiniMax vs DeepSeek 成本策略
| Provider | 计费 | 适合场景 |
|----------|------|----------|
| MiniMax | 48元/月包 (100 prompts/5h) | ✅ 优先使用 |
| DeepSeek | 按量计费 | ⚠️ 备用,仅紧急情况 |
### 共享 Token
- 2号机 和 1号机 共用同一个 MiniMax API Key
- 双方都在消耗同一个 100 prompts/5h 额度
- 策略:非紧急任务也用 MiniMax,DeepSeek 留作备用
+287
View File
@@ -0,0 +1,287 @@
# OpenClaw 多机部署指南
## 🏠 部署架构
### 当前配置
| 机器 | IP地址 | 角色 | 代号 |
|------|--------|------|------|
| 1号机 | 192.168.0.31 | 主机 | 青龙 🐉 |
| 2号机 | 192.168.0.32 | 守护者 | 守护者 🛡️ |
### 架构图
```
┌─────────────────────────────────────────────────────────┐
│ 网络环境 │
│ 代理: 192.168.0.66:7890 (HTTP/HTTPS) │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┴───────────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ 1号机 │ │ 2号机 │
│ 主机/青龙 │ │ 守护者 │
│ :18789 │ │ :18789 │
│ 主Telegram │ │ 辅助Telegram │
│ Bot: dctc6788│ │ Bot: dctc_02 │
└───────────────┘ └───────────────┘
```
## 🚀 部署步骤
### 1. SSH 连接配置
```bash
# 创建 SSH 别名
cat >> ~/.ssh/config << EOF
Host 1号机
HostName 192.168.0.31
User root
Port 22
Host 2号机
HostName 192.168.0.32
User root
Port 22
EOF
# 测试连接
ssh 1号机
ssh 2号机
```
### 2. 2号机初始化
```bash
# SSH连接
sshpass -p '3efvVGY&' ssh -o StrictHostKeyChecking=no root@192.168.0.32
# 配置代理
export https_proxy=http://192.168.0.66:7890
export http_proxy=http://192.168.0.66:7890
# 安装 OpenClaw
npm install --global openclaw@latest
# 启动向导
openclaw onboard --install-daemon
```
### 3. systemd 服务配置
**2号机 systemd service**:
```ini
# ~/.config/systemd/user/openclaw-gateway.service
[Unit]
Description=OpenClaw Gateway (守护者)
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Environment="https_proxy=http://192.168.0.66:7890"
Environment="http_proxy=http://192.168.0.66:7890"
Environment="HTTPS_PROXY=http://192.168.0.66:7890"
Environment="HTTP_PROXY=http://192.168.0.66:7890"
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
```
**应用服务配置**:
```bash
# 2号机上执行
systemctl --user daemon-reload
systemctl --user enable openclaw-gateway.service
systemctl --user start openclaw-gateway.service
# 验证
systemctl --user status openclaw-gateway.service
```
## 📋 配置文件
### 1号机配置 (主机/青龙)
```json
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-xxx",
"api": "openai-completions",
"models": [{"id": "deepseek-chat", "name": "DeepSeek"}]
},
"minimax": {
"baseUrl": "https://api.minimaxi.com/v1",
"apiKey": "sk-api-xxx",
"models": [
{"id": "minimax-m2.1"},
{"id": "embo-01"}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "minimax/minimax-m2.1"
}
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "8529719199:AAGjLDflvMXAEdgrBTSBEczOoSMybLU4gcs"
}
},
"gateway": {
"port": 18789,
"auth": {
"token": "openclaw-simple-token"
}
}
}
```
### 2号机配置 (守护者)
```json
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-xxx",
"models": [{"id": "deepseek-chat", "name": "DeepSeek"}]
},
"minimax": {
"baseUrl": "https://api.minimaxi.com/v1",
"apiKey": "sk-api-xxx",
"models": [
{"id": "minimax-m2.1"},
{"id": "embo-01"}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat"
}
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "8202664888:AAE0UyCFJJBLC8notdmT42XOJRBoWLJ6XOI"
}
},
"gateway": {
"port": 18789,
"auth": {
"token": "openclaw-guardian-token-2nd"
}
}
}
```
## 🔧 远程管理
### 常用命令
```bash
# 1号机状态
sshpass -p 'password' ssh root@192.168.0.31 "openclaw status"
# 2号机状态
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "openclaw status"
# 2号机重启Gateway
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "openclaw gateway restart"
# 2号机发送消息
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "openclaw message send --channel telegram --target 5117446326 --message 'test'"
```
### 监控脚本
```bash
#!/bin/bash
# monitor-2nd-machine.sh
echo "=== 2号机 (守护者) 状态 ==="
echo "时间: $(date)"
echo ""
# 检查Gateway进程
echo "Gateway进程:"
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "ps aux | grep openclaw | grep -v grep"
echo ""
echo "系统资源:"
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "free -h"
echo ""
echo "最近错误:"
sshpass -p '3efvVGY&' ssh root@192.168.0.32 "journalctl --user -u openclaw-gateway.service --since '1 hour ago' --no-pager | grep -i error | tail -5"
```
## 📊 性能对比
| 指标 | 1号机 (青龙) | 2号机 (守护者) |
|------|-------------|---------------|
| **默认模型** | MiniMax-m2.1 | DeepSeek |
| **代理** | 预配置 | 需手动配置 |
| **Telegram** | 正常 | 正常 |
| **内存管理器** | 停用 | 待测试 |
| **状态** | 生产就绪 | 生产就绪 |
## ⚠️ 注意事项
### Token 冲突
- 每个实例必须使用**独立的 Telegram Bot Token**
- Gateway Token 也必须不同
### 代理配置
- systemd 服务**不会**自动继承环境变量
- 必须在 service 文件中显式配置
### 配置文件验证
- OpenClaw 使用严格 JSON Schema 验证
- 未知字段会导致启动失败
- 使用 `openclaw doctor --fix` 修复
## 🔄 同步策略
### 配置同步
```bash
# 从1号机同步配置到2号机
scp ~/.openclaw/openclaw.json root@192.168.0.32:/root/.openclaw/openclaw.json
# 注意: 同步后需要修改:
# - gateway.auth.token
# - channels.telegram.botToken
```
### 日志聚合
```bash
# SSH隧道访问2号机日志
ssh -L 18790:localhost:18789 root@192.168.0.32
# 然后本地查看
openclaw logs --follow --port 18790
```
---
*最后更新: 2026-02-03 21:40 GMT+8*
*维护者: 青龙 🐉*
*参考: 2号机部署完整记录 (memory/2026-02-03.md)*
+366
View File
@@ -0,0 +1,366 @@
# Ollama + OpenClaw 配置指南
## 概述
Ollama 是一个本地 LLM 运行时,让你能轻松在本地运行开源模型。OpenClaw 通过 OpenAI 兼容 API 与 Ollama 集成。
---
## 一、Ollama 安装与配置
### 安装 Ollama
```bash
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# 启动服务
ollama serve
# 设置开机自启(Linux)
sudo systemctl enable ollama
sudo systemctl start ollama
```
### 配置跨主机访问
默认只监听 `127.0.0.1`,需要配置才能从其他机器访问:
```bash
# 方法1:环境变量
export OLLAMA_HOST=0.0.0.0:11434
# 方法2: systemd 服务配置
sudo systemctl edit ollama
```
添加:
```ini
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
```
重启服务:
```bash
sudo systemctl daemon-reload
sudo systemctl restart ollama
```
验证:
```bash
curl http://192.168.0.66:11434/api/tags
```
---
## 二、OpenClaw 配置 Ollama
### 方法1:自动发现(推荐)
设置环境变量即可自动发现模型:
```bash
# 设置 API key(任意值,Ollama 不验证)
export OLLAMA_API_KEY="ollama-local"
# 或在配置中设置
openclaw config set models.providers.ollama.apiKey "ollama-local"
```
自动发现会:
- 查询 `/api/tags` 和 `/api/show`
- 只保留报告支持工具的模型
- 自动设置 contextWindow 和 maxTokens
### 方法2:显式配置(远程主机)
当 Ollama 在其他主机时,需要显式配置:
```json5
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://192.168.0.66:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
}
}
```
### 设置默认模型
```json5
{
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3.3",
"fallbacks": ["ollama/qwen2.5-coder:32b"]
}
}
}
}
```
---
## 三、推荐模型
### 对话模型
| 模型 | 大小 | 说明 |
|------|------|------|
| llama3.3 | ~5GB | 70B 参数,推荐主力 |
| qwen2.5-coder:32b | ~20GB | 代码能力强 |
| deepseek-r1:32b | ~20GB | 推理能力强 |
拉取命令:
```bash
ollama pull llama3.3
ollama pull qwen2.5-coder:32b
ollama pull deepseek-r1:32b
```
### Embedding 模型(用于内存管理)
| 模型 | 大小 | 说明 |
|------|------|------|
| nomic-embed-text | ~137MB | 推荐,质量好 |
| mxbai-embed-large | ~334MB | 更大,质量更好 |
| all-minilm | ~23MB | 轻量级 |
拉取命令:
```bash
# 推荐
ollama pull nomic-embed-text
# 或轻量级
ollama pull all-minilm
```
### 验证 Embedding 模型
```bash
curl http://192.168.0.66:11434/api/tags | python3 -c "import sys,json; print([m['name'] for m in json.load(sys.stdin).get('models',[])])"
```
---
## 四、内存管理器配置
### 启用内存管理器
内存管理器需要 embedding 模型:
```json5
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://192.168.0.66:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions",
"embedding": "nomic-embed-text" // 指定 embedding 模型
}
}
}
}
```
### 环境变量配置
```bash
# OpenClaw 配置文件
export OLLAMA_API_KEY="ollama-local"
export OLLAMA_EMBEDDING_MODEL="nomic-embed-text"
```
---
## 五、故障排查
### Ollama 未检测到
```bash
# 1. 检查 Ollama 是否运行
ps aux | grep ollama
# 2. 检查 API 是否可达
curl http://localhost:11434/api/tags
# 3. 重启 Ollama
ollama serve
# 4. 检查环境变量
echo $OLLAMA_API_KEY
```
### 没有可用模型
OpenClaw 只自动发现支持工具的模型:
```bash
# 检查模型是否安装
ollama list
# 拉取支持工具的模型
ollama pull llama3.3
# 或显式配置模型(如果不想用自动发现)
openclaw config set models.providers.ollama.models[0].id "llama3.3"
```
### 连接被拒绝
```bash
# 检查端口
lsof -i :11434
# 检查防火墙
sudo ufw status
# Ollama 绑定地址
curl http://127.0.0.1:11434/api/tags # 本机测试
curl http://192.168.0.66:11434/api/tags # 远程测试
```
### 模型不工作
```bash
# 测试模型运行
ollama run llama3.3 "Hello"
# 检查模型信息
ollama show llama3.3
```
---
## 六、完整配置示例
### 单机配置(Ollama 和 OpenClaw 同机)
```json5
{
"models": {
"providers": {
"ollama": {
"apiKey": "ollama-local",
"models": [
{ "id": "llama3.3", "contextWindow": 32768 },
{ "id": "qwen2.5-coder:32b" }
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3.3"
}
}
}
}
```
### 多机配置(主力机 Ollama + OpenClaw 独立)
**主力机 (192.168.0.66):**
```bash
# Ollama 配置
export OLLAMA_HOST=0.0.0.0:11434
systemctl restart ollama
# 拉取模型
ollama pull llama3.3
ollama pull nomic-embed-text
```
**OpenClaw 主机:**
```json5
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://192.168.0.66:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
},
"minimax": { /* ... */ },
"deepseek": { /* ... */ }
}
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3.3",
"fallbacks": ["deepseek/deepseek-chat", "minimax/minimax-m2.1"]
}
}
}
}
```
---
## 七、性能优化
### 模型加载
```bash
# 预加载模型(加速首次调用)
ollama pull llama3.3
# 查看已加载模型
ollama ps
```
### 资源管理
```bash
# 设置 GPU 使用率(如果有多 GPU)
export CUDA_VISIBLE_DEVICES=0
# 设置内存限制
export OLLAMA_NUM_PARALLEL=4
```
### 监控
```bash
# 查看 Ollama 日志
journalctl -u ollama -f
# 查看资源使用
htop | grep ollama
```
---
## 八、相关命令速查
| 任务 | 命令 |
|------|------|
| 列出模型 | `ollama list` |
| 拉取模型 | `ollama pull <model>` |
| 删除模型 | `ollama rm <model>` |
| 运行模型 | `ollama run <model>` |
| 查看模型信息 | `ollama show <model>` |
| 查看运行中模型 | `ollama ps` |
| 测试 API | `curl http://localhost:11434/api/tags` |
---
## 九、相关文档
- [OpenClaw Ollama Provider](https://docs.openclaw.ai/providers/ollama)
- [Ollama 官方文档](https://ollama.ai)
- [Ollama Embedding 模型](https://ollama.com/blog/embedding-models)
- [OpenClaw 模型配置](./GATEWAY_CONFIGURATION.md)
---
*最后更新: 2026-02-04*
+741
View File
@@ -0,0 +1,741 @@
# 🤖 OpenClaw 机器人配置方案标准文件
> 版本: v1.0
> 创建日期: 2026-02-07
> 制定者: 2号机 (守护者)
> **核心原则**: 稳定优先 > 功能保证
---
## 📋 目录
1. [配置优先级](#配置优先级)
2. [核心配置](#核心配置)
3. [功能配置](#功能配置)
4. [监控体系](#监控体系)
5. [故障恢复](#故障恢复)
6. [部署清单](#部署清单)
---
## 🎯 配置优先级
### P0 - 核心配置 (必须配置)
| 优先级 | 配置项 | 状态 | 说明 |
|--------|--------|------|------|
| P0-1 | Gateway 运行配置 | ✅ | 绑定模式、端口、认证 |
| P0-2 | 代理配置 | ✅ | NO_PROXY、系统代理 |
| P0-3 | 模型提供商 | ✅ | MiniMax/DeepSeek/Ollama |
| P0-4 | 会话管理 | ✅ | 会话文件路径、大小监控 |
| P0-5 | 监控告警 | ✅ | 系统监控脚本、Telegram 告警 |
| P0-6 | 日志管理 | ✅ | 日志级别、文件轮转 |
### P1 - 重要配置 (强烈建议)
| 配置项 | 说明 |
|--------|------|
| 安全配置 | API Key 加密、访问控制 |
| 备份策略 | 会话文件自动备份 |
| 健康检查 | 定期健康检查脚本 |
### P2 - 功能配置 (可选功能)
| 功能 | 优先级 | 说明 |
|------|--------|------|
| **浏览器** | P2 | 网页浏览、内容抓取 |
| **人格化** | P2 | Agent 记忆、性格塑造 |
| RSS 订阅 | P2 | 内容聚合 |
| TTS 语音 | P2 | 文本转语音 |
---
## ⚙️ 核心配置
### 1. Gateway 运行配置
```json
{
"gateway": {
"binding": "0.0.0.0:18789",
"auth": {
"enabled": true,
"token": "${GATEWAY_TOKEN}"
},
"cors": {
"enabled": false
}
}
}
```
**配置原则:**
- 绑定地址:内网使用 0.0.0.0,外网使用 127.0.0.1
- 认证:生产环境必须启用
- CORS:仅开发环境开启
### 2. 代理配置
```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"
HTTP_PROXY="http://192.168.0.66:7890"
HTTPS_PROXY="http://192.168.0.66:7890"
```
**启动命令:**
```bash
NO_PROXY="localhost.0.1,127.0,192.168.0.66" openclaw gateway restart
```
### 3. 模型提供商配置
```json
{
"providers": {
"minimax": {
"models": {
"default": "minimax-minimax"
}
},
"deepseek": {
"models": {
"default": "deepseek-chat"
}
},
"ollama": {
"remote": {
"baseUrl": "http://localhost:11434/v1"
}
}
}
}
```
**配置原则:**
- 主力模型:MiniMax (原生推理)
- 备用模型:DeepSeek (成本低)
- 本地模型:Ollama (离线备用)
### 4. 会话管理配置
```json
{
"sessions": {
"path": "/root/.openclaw/agents/main/sessions",
"maxSize": "8MB",
"warnSize": "5MB",
"autoArchive": true
}
}
```
**监控阈值:**
| 条件 | 动作 |
|------|------|
| ≥5MB | 发送警告日志 |
| ≥8MB | 发送 Telegram 告警 |
| 完成后 | 建议开新会话 |
### 5. 监控告警配置
#### 5.1 系统监控脚本
```bash
# /root/.openclaw/scripts/system-monitor.sh
#!/bin/bash
# 监控间隔 (秒)
INTERVAL=300
# 告警阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=85
DISK_THRESHOLD=90
# Telegram 告警
TELEGRAM_TOKEN="8202664888:AAE0UyCFJJBLC8notdmT42XOJRBoWLJ6XOI"
CHAT_ID="5117446326"
```
#### 5.2 会话文件监控
```bash
# 检查会话文件大小
SESSION_DIR="/root/.openclaw/agents/main/sessions"
WARN_SIZE=8388608 # 8MB
for session_file in "$SESSION_DIR"/*.jsonl; do
size=$(stat -f%z "$session_file" 2>/dev/null || stat -c%s "$session_file" 2>/dev/null)
if [ "$size" -gt "$WARN_SIZE" ]; then
# 发送 Telegram 告警
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=⚠️ 会话文件过大: $(basename $session_file) ($(expr $size / 1024 / 1024)MB)"
fi
done
```
### 6. 日志管理配置
```bash
# 日志配置
OPENCLAW_LOG_DIR="/tmp/openclaw"
OPENCLAW_LOG_LEVEL="info"
# 日志轮转 (logrotate)
# /etc/logrotate.d/openclaw
/var/log/openclaw/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
```
---
## 🎭 功能配置
> **注意**: 以下功能为 P2 优先级,不影响核心运行
### 1. 浏览器功能 (P2)
```json
{
"browser": {
"enabled": true,
"profile": "openclaw",
"timeout": 30000,
"headless": true
}
}
```
**配置原则:**
- 需要 OpenClaw Browser Extension
- 作为备用工具,不作为核心依赖
- 优先使用 web_fetch
**已知问题:**
- 2号机:OpenClaw 扩展未连接
- 替代方案:使用 web_fetch
### 2. 人格化功能 (P2)
#### 2.1 基础人格文件
```bash
# 人格文件目录结构
/root/.openclaw/identity/
├── IDENTITY.md - 身份定义 (Who am I?)
├── SOUL.md - 灵魂/性格 (Who am I becoming?)
└── USER.md - 用户偏好 (Who am I helping?)
```
#### 2.2 IDENTITY.md 模板
```markdown
# IDENTITY.md - {机器人名称}是谁?
- **Name:** {名称}
- **Code Name:** {代号}
- **Creature:** AI Assistant
- **Vibe:** {风格描述}
- **Emoji:** {表情符号}
## Core Identity
{一句话描述}
## Role
### Primary Duties
1. {职责1}
2. {职责2}
3. {职责3}
```
#### 2.3 SOUL.md 模板 (包含记忆召回规则)
```markdown
# SOUL.md - {机器人名称}的灵魂
__{风格描述}__
## Core Truths
**性格特点1** - {说明}
**性格特点2** - {说明}
**性格特点3** - {说明}
## Boundaries
- {边界1}
- {边界2}
- {边界3}
## Vibe
- {风格1}
- {风格2}
- {风格3}
## 记忆召回规则
**每次回答配置/规格类问题前,必须执行以下流程:**
### 1. 强制召回流程
回答前必须:
1. memory_search(相关关键词)
2. memory_get(相关文件)
3. 必要时读取配置文件
4. 必要时查询实际系统
5. 基于事实回答,绝不凭印象
### 2. 召回优先级
| 问题类型 | 召回来源 |
|----------|----------|
| 系统配置 | openclaw.json + 配置文档 |
| 硬件规格 | MEMORY.md + 实际查询 |
| 历史决策 | memory/YYYY-MM-DD.md |
| 用户偏好 | USER.md |
### 3. 禁止行为
- ❌ 完全凭印象回答
- ❌ 不检查记忆直接回答
- ❌ 假设应该记得
- ❌ 用大概可能回答配置问题
### 4. 正确示例
用户: X 内存多少?
我: (执行 memory_search) → 回答: 8GB DDR3
### 5. 错误示例
用户: X 内存多少?
我: 应该是 8GB 吧 (未检查记忆)
---
> 记忆是资产的保险,回答前先查阅。
```
#### 2.4 USER.md 模板
```markdown
# USER.md - {机器人名称}服务的用户
## User Context
- **Name:** {用户名}
- **Platform:** {平台}
- **ID:** {ID}
- **Timezone:** {时区}
## Notes
- {偏好1}
- {偏好2}
- {偏好3}
```
#### 2.5 快速人格配置脚本
```bash
#!/bin/bash
# configure_personality.sh <名称> <代号> <风格> <Emoji>
NAME=$1
CODE_NAME=$2
VIBE=$3
EMOJI=$4
mkdir -p /root/.openclaw/identity
# 创建人格文件...
echo "✅ $NAME 人格文件创建完成"
```
#### 2.6 配置原则
| 原则 | 说明 |
|------|------|
| 轻量化优先 | 基于文件的人格化,不依赖外部服务 |
| 记忆召回 | 回答配置类问题前必须先搜索记忆 |
| 跨会话持久化 | memory/ 目录存储长期记忆 |
---
### 3. 记忆系统方案
#### 3.1 轻量化方案 (低配置机器)
```bash
# 使用 OpenClaw 自带 Memory
openclaw memory status # 确认已启用
```
**配置:**
- 存储: SQLite
- 向量: nomic-embed-text:latest
- 适合: 2号机 (8GB RAM + HDD)
#### 3.2 memU 方案 (中配置机器)
```bash
# memU - 24/7 主动记忆
# GitHub: github.com/mem0ai/mem0
# Stars: 8.1k
# 版本: v1.4.0 (Feb 6, 2026)
pip install mem0ai
# 配置
export MEM0_API_KEY="your-key"
```
**特点:**
- Python 架构
- 主动记忆学习
- OpenClaw 替代方案
#### 3.3 MemOS 方案 (高配置机器)
```bash
# MemOS - 技能进化型记忆
# GitHub: github.com/MemTensor/MemOS
# Stars: 5k
# 版本: v2.0.4 (Jan 30, 2026)
# 官网: memtensor.ai
# Docker 部署 (青龙方案)
docker run -d -p 8000:8000 memtensor/memos:latest
```
**特点:**
- 官方 OpenClaw 插件
- +43.70% 准确率
- Neo4j + Qdrant 双存储
- 适合: 青龙 (NVMe SSD)
#### 3.4 记忆方案对比
| 方案 | 复杂度 | 资源占用 | 适合场景 |
|------|--------|----------|----------|
| **OpenClaw Memory** | 低 | ~100MB | 2号机 (轻量首选) |
| **memU** | 中 | ~200-500MB | 中配置机器 |
| **MemOS** | 高 | ~2GB | 青龙 (SSD 高配) |
---
### 4. RSS 订阅功能 (P2)
### 3. RSS 订阅功能 (P2)
```json
{
"rss": {
"enabled": false,
"feeds": [],
"interval": 3600
}
}
```
**配置原则:**
- 需要外部 HTTP 请求
- 代理不稳定时不启用
- 作为后台任务运行
### 4. TTS 语音功能 (P2)
```json
{
"tts": {
"enabled": false,
"provider": "sag",
"voice": "default"
}
}
```
**配置原则:**
- 需要 ElevenLabs API (成本)
- 仅在用户明确要求时启用
- 主要用于故事朗读
---
## 📊 监控体系
### 1. 监控指标
| 指标 | 阈值 | 告警级别 |
|------|------|----------|
| Gateway 状态 | down | 🔴 严重 |
| CPU 使用率 | >80% | 🟡 警告 |
| 内存使用率 | >85% | 🟡 警告 |
| 磁盘使用率 | >90% | 🔴 严重 |
| 会话文件大小 | >8MB | 🟡 警告 |
| 代理连接失败 | >3次 | 🟡 警告 |
### 2. 监控脚本
```bash
# /root/.openclaw/scripts/health-check.sh
#!/bin/bash
set -e
check_gateway() {
if ! pgrep -f "openclaw" > /dev/null; then
echo "🔴 Gateway 未运行"
return 1
fi
echo "✅ Gateway 运行正常"
}
check_memory() {
mem_usage=$(free | grep Mem | awk '{printf "%.1f", $3/$2 * 100}')
if (( $(echo "$mem_usage > 85" | bc -l) )); then
echo "🟡 内存使用率: ${mem_usage}%"
else
echo "✅ 内存使用率: ${mem_usage}%"
fi
}
check_sessions() {
session_count=$(ls /root/.openclaw/agents/main/sessions/*.jsonl 2>/dev/null | wc -l)
echo "📁 会话文件数量: $session_count"
}
# 运行检查
check_gateway
check_memory
check_sessions
```
### 3. Telegram 告警
```bash
# /root/.openclaw/scripts/send-alert.sh
#!/bin/bash
TELEGRAM_TOKEN="your_token"
CHAT_ID="your_chat_id"
send_alert() {
local level=$1
local message=$2
case $level in
critical)
emoji="🔴"
;;
warning)
emoji="🟡"
;;
info)
emoji="ℹ️"
;;
esac
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$emoji $message"
}
```
---
## 🔧 故障恢复
### 1. 自动恢复策略
```bash
# /root/.openclaw/scripts/auto-recovery.sh
#!/bin/bash
restart_gateway() {
echo "[$(date)] 检测到 Gateway 异常,尝试重启..."
NO_PROXY="localhost,127.0.0.1,192.168.0.66" openclaw gateway restart
sleep 5
if pgrep -f "openclaw" > /dev/null; then
echo "[$(date)] Gateway 重启成功"
send_alert info "Gateway 已自动重启"
else
echo "[$(date)] Gateway 重启失败,尝试强制重启"
pkill -9 -f openclaw
sleep 2
NO_PROXY="localhost,127.0.0.1,192.168.0.66" openclaw gateway restart
fi
}
# 检查 Gateway 是否存活
if ! pgrep -f "openclaw.*gateway" > /dev/null; then
restart_gateway
fi
```
### 2. 常见故障处理
| 故障现象 | 可能原因 | 解决方案 |
|----------|----------|----------|
| Gateway 无响应 | 内存泄漏 | 强制重启 |
| 会话文件过大 (>10MB) | Compaction 卡死 | 手动清理 |
| 代理连接失败 | 代理服务异常 | 检查代理 |
| 模型调用超时 | 网络/配置问题 | 检查配置 |
| 监控脚本报错 | awk 语法错误 | 使用 heredoc |
### 3. Compaction 处理
```bash
# 清理卡死的会话文件
cleanup_compaction() {
echo "[$(date)] 清理卡死的会话文件..."
# 查找大文件
find /root/.openclaw/agents/main/sessions -name "*.jsonl" -size +5M
# 备份大文件
timestamp=$(date +%Y%m%d_%H%M%S)
mkdir -p /root/.openclaw/backup/sessions_$timestamp
# 移动大文件到备份目录
find /root/.openclaw/agents/main/sessions -name "*.jsonl" -size +10M \
-exec mv {} /root/.openclaw/backup/sessions_$timestamp/ \;
echo "[$(date)] 已清理会话文件,备份到 $timestamp"
}
```
---
## 📦 部署清单
### 部署前检查
```bash
# 1. 检查系统要求
- [ ] Python >= 3.10
- [ ] Node.js >= 18
- [ ] 内存 >= 4GB
- [ ] 磁盘 >= 10GB
# 2. 检查依赖
- [ ] Git
- [ ] curl
- [ ] jq
- [ ] logrotate
# 3. 检查网络
- [ ] 代理可访问
- [ ] Telegram 可访问
- [ ] 模型 API 可访问
```
### 部署步骤
```bash
# 1. 安装 OpenClaw
git clone https://github.com/openclaw/openclaw.git
cd openclaw
npm install
# 2. 配置核心设置
cp config.example.json openclaw.json
# 编辑 openclaw.json (见核心配置)
# 3. 配置监控脚本
cp scripts/system-monitor.sh /root/.openclaw/scripts/
chmod +x /root/.openclaw/scripts/*.sh
# 4. 配置 systemd 服务
cp openclaw.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable openclaw
systemctl start openclaw
# 5. 配置 logrotate
cp openclaw.logrotate /etc/logrotate.d/
# 6. 验证部署
openclaw doctor
```
### 验证检查
```bash
# 核心功能验证
✅ Gateway 运行: pgrep -f "openclaw"
✅ 端口监听: netstat -tlnp | grep 18789
✅ 模型调用: openclaw test model
✅ Telegram 连接: openclaw telegram status
# 功能验证
✅ RSS 订阅: (可选)
✅ TTS 语音: (可选)
✅ 浏览器: (可选)
```
---
## 📈 性能基准
### 基准配置
| 组件 | 最低配置 | 推荐配置 |
|------|----------|----------|
| CPU | 2 核心 | 4 核心 |
| 内存 | 4GB | 8GB |
| 存储 | 10GB HDD | 50GB SSD |
| 网络 | 10Mbps | 100Mbps |
### 预期性能
| 指标 | 预期值 | 备注 |
|------|--------|------|
| 启动时间 | <30s | 冷启动 |
| 对话响应 | <5s | 正常负载 |
| 内存占用 | <500MB | 稳定后 |
| 并发会话 | 1-3 | 建议 |
---
## 🔒 安全基线
### 必须配置
- [ ] Gateway 认证令牌
- [ ] API Key 加密存储
- [ ] 禁止 root 运行 (除非必要)
- [ ] 防火墙规则 (仅开放必要端口)
### 建议配置
- [ ] HTTPS 终结 (使用 nginx)
- [ ] Rate Limiting
- [ ] 审计日志
- [ ] 定期安全更新
---
## 📝 版本历史
| 版本 | 日期 | 修改内容 |
|------|------|----------|
| v1.0 | 2026-02-07 | 初始版本 |
| v1.1 | 2026-02-07 | 新增人格化配置、memU/MemOS 方案、记忆召回规则 |
---
*文档版本: v1.1 | 最后更新: 2026-02-07*
+554
View File
@@ -0,0 +1,554 @@
# OpenClaw 系统健康检查标准流程
> **文档版本:** v1.0
> **创建日期:** 2026-02-06
> **用途:** OpenClaw 守护者日常自我健康检查标准流程
> **执行方式:** `/root/.openclaw/scripts/standard-check.sh`
---
## 📋 检查概述
本标准流程用于 OpenClaw 守护者 (2号机) 进行系统性自我健康检查,确保所有核心组件正常运行。
**检查频率:**
- ⏰ **每日自动:** 通过 cron 定时任务执行 (每日 00:00)
- 🔧 **手动执行:** `/root/.openclaw/scripts/standard-check.sh`
- 🚨 **异常时执行:** 服务不稳定或收到告警时
**通过标准:** 0 个失败项 (允许最多 1-2 个警告项)
---
## 🛡️ 九步检查流程
### 【第一步】系统基础信息
**检查目的:** 确认系统基本信息,记录运行状态
**检查项:**
| 项目 | 说明 | 正常范围 |
|------|------|----------|
| 主机名 | 当前运行主机 | `yh6788-ThinkPad-X230` |
| 内核版本 | Linux 内核 | 6.x.x |
| 运行时间 | 系统启动后持续运行时间 | > 0 |
**执行命令:**
```bash
hostname
uname -r
uptime -p
```
**预期结果:**
- ✅ 系统正常运行,无异常重启
- ✅ 运行时间符合预期 (通常 > 1小时)
---
### 【第二步】OpenClaw 服务检查
**检查目的:** 确认 Gateway 核心服务运行状态
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| Gateway 进程 | openclaw-gateway 主进程 | 运行中 (有 PID) |
| Gateway 端口 | 默认监听端口 18789 | 正常监听 |
**执行命令:**
```bash
# 检查进程
pgrep -f "openclaw-gateway"
# 检查端口
ss -tlnp | grep ":18789 "
# 或
netstat -tlnp | grep ":18789 "
```
**异常处理:**
- ❌ **Gateway 未运行:** 执行 `openclaw gateway start`
- ❌ **端口未监听:** 检查日志 `tail -f /tmp/openclaw/openclaw-*.log`
---
### 【第三步】Ollama 服务检查
**检查目的:** 确认本地向量模型服务可用
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| Ollama 进程 | ollama serve 主进程 | 运行中 |
| Ollama API | 本地 API 访问 | HTTP 200 |
| 已安装模型 | 向量嵌入模型数量 | ≥1 个 |
**执行命令:**
```bash
# 检查进程
pgrep -f "ollama serve"
# API 测试
curl -s http://localhost:11434/api/version
# 模型列表
curl -s http://localhost:11434/api/tags | grep -o '"name":"[^"]*"'
```
**正常结果示例:**
```json
{"version":"0.15.4"}
```
**已安装模型:**
- `nomic-embed-text:latest` (默认,长上下文)
- `mxbai-embed-large:latest` (快速,短文本)
**异常处理:**
- ❌ **Ollama 未运行:** 执行 `ollama serve`
- ❌ **API 不可访问:** 检查端口 11434 监听状态
- ❌ **模型缺失:** 执行 `ollama pull nomic-embed-text:latest`
---
### 【第四步】内存索引状态
**检查目的:** 确认向量检索功能正常
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| 索引状态 | 文件索引进度 | 17/18 files |
| 向量引擎 | 向量数据库就绪 | Vector: ready |
| 同步状态 | 是否有未保存变动 | Dirty: no |
**执行命令:**
```bash
openclaw memory status
```
**输出示例:**
```
Memory Search (main)
Provider: openai (requested: openai)
Model: nomic-embed-text:latest
Sources: memory
Indexed: 17/18 files · 56 chunks
Dirty: yes
Store: ~/.openclaw/memory/main.sqlite
Workspace: ~/.openclaw/workspace
Vector: ready
Vector dims: 768
```
**关键指标解读:**
- `Indexed: 17/18 files` → 17个文件已索引,共18个文件
- `56 chunks` → 知识库已分割为56个向量块
- `Dirty: yes` → 有文件变动,需要重新索引
- `Vector: ready` → 向量引擎工作正常
**异常处理:**
- ⚠️ **Dirty: yes:** 执行 `openclaw memory index`
- ❌ **Vector not ready:** 重启 Gateway `openclaw gateway restart`
- ❌ **Indexed 文件数异常:** 检查 workspace 文件完整性
---
### 【第五步】代理配置检查
**检查目的:** 确认网络代理配置正确,不干扰本地服务
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| NO_PROXY | 本地服务免代理 | 已配置 |
| 代理可达 | 外部网络访问 | 可访问 |
**执行命令:**
```bash
# 检查环境变量
env | grep NO_PROXY
# 代理测试
curl -s -o /dev/null -w "%{http_code}" --proxy http://192.168.0.66:7890 https://api.openai.com/v1/models
```
**预期 NO_PROXY 配置:**
```
NO_PROXY=localhost,127.0.0.1,192.168.0.66,192.168.0.32,.local
```
**异常处理:**
- ❌ **NO_PROXY 未配置:** 编辑 `/etc/systemd/system/openclaw-gateway.service.d/override.conf`
- ❌ **代理不可达:** 检查代理服务状态 (192.168.0.66:7890)
---
### 【第六步】磁盘空间检查
**检查目的:** 确保系统有足够磁盘空间运行
**检查项:**
| 分区 | 挂载点 | 警告阈值 | 严重阈值 |
|------|--------|----------|----------|
| 根分区 | / | 80% | 90% |
| Workspace | /root/.openclaw/workspace | 80% | 90% |
**执行命令:**
```bash
# 根分区
df -h /
# Workspace
df -h /root/.openclaw/workspace
```
**预期结果:**
- ✅ 使用率 < 80%
- ✅ 可用空间 > 50GB
**异常处理:**
- ⚠️ **使用率 > 80%:** 清理日志文件 `/var/log/openclaw-monitor/`
- ❌ **使用率 > 90%:** 紧急清理,扩展磁盘
---
### 【第七步】监控脚本检查
**检查目的:** 确认后台监控正常运行
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| 脚本存在 | system-monitor.sh | 存在 |
| 语法检查 | bash -n 测试 | 无错误 |
| 进程运行 | 监控进程 | 运行中 |
| 日志目录 | /var/log/openclaw-monitor | 存在 |
**执行命令:**
```bash
# 检查脚本存在
ls -la /root/.openclaw/scripts/system-monitor.sh
# 语法检查
bash -n /root/.openclaw/scripts/system-monitor.sh
# 进程检查
pgrep -f "system-monitor.sh"
# 日志文件数
ls -1 /var/log/openclaw-monitor/*.log | wc -l
```
**监控脚本功能:**
- CPU/内存/负载实时监控
- 阈值告警 (CPU > 80%, 内存 > 80%)
- OpenClaw 服务状态检测
- 日志保留 3 小时 (5400 条记录)
**异常处理:**
- ❌ **脚本不存在:** 从文档恢复
- ❌ **语法错误:** 检查最近修改
- ❌ **进程未运行:** 执行 `nohup /root/.openclaw/scripts/system-monitor.sh &`
---
### 【第八步】配置检查
**检查目的:** 验证核心配置文件完整性
**检查项:**
| 文件 | 说明 | 检查方法 |
|------|------|----------|
| openclaw.json | 主配置 | JSON 语法验证 |
| Systemd override | 代理配置 | 文件存在验证 |
**执行命令:**
```bash
# JSON 语法检查
python3 -m json.tool /root/.openclaw/openclaw.json > /dev/null && echo "OK"
# 提取当前模型配置
grep '"model":' /root/.openclaw/openclaw.json
# Systemd override 检查
cat /etc/systemd/system/openclaw-gateway.service.d/override.conf
```
**openclaw.json 关键配置:**
```json
{
"providers": {
"openai": {
"DEFAULT": ["minimax/minimax-m2.1"]
}
},
"memorySearch": {
"provider": "openai",
"model": "nomic-embed-text:latest",
"remote": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local"
}
}
}
```
**Systemd override 预期内容:**
```ini
[Service]
Environment="NO_PROXY=localhost,127.0.0.1"
Environment="no_proxy=localhost,127.0.0.1"
```
**异常处理:**
- ❌ **JSON 语法错误:** 检查引号、逗号、括号
- ❌ **override 不存在:** 创建配置文件并重启 Gateway
---
### 【第九步】1号机 SSH 检查
**检查目的:** 确认协同机器人的网络连通性
**检查项:**
| 检查点 | 说明 | 正常状态 |
|--------|------|----------|
| SSH 连接 | 1号机网络可达 | 可连接 |
| 1号机 Gateway | 1号机 OpenClaw 服务 | 运行中 |
**执行命令:**
```bash
# SSH 连接测试 (需要配置 SSH 密钥)
ssh -o BatchMode=yes -o ConnectTimeout=3 root@192.168.0.31 "echo 'OK'"
# 1号机 Gateway 检查
ssh root@192.168.0.31 "pgrep -f openclaw-gateway"
```
**1号机信息:**
- **地址:** root@192.168.0.31
- **密码:** 3efvVGY&
- **已知问题:** 内存持久化故障 (已手动修复)
**异常处理:**
- ⚠️ **SSH 密钥未配置:** 配置 SSH 密钥实现免密登录
- ❌ **连接失败:** 检查网络 (192.168.0.31)
- ⚠️ **1号机 Gateway 未运行:** 提醒用户检查 1号机
---
## 📊 结果汇总标准
### 通过等级
| 等级 | 失败数 | 警告数 | 行动 |
|------|--------|--------|------|
| 🎉 **优秀** | 0 | 0 | 无需操作 |
| ✅ **良好** | 0 | 1-2 | 计划内处理 |
| ⚠️ **警告** | 0 | 3+ | 尽快处理 |
| ❌ **异常** | 1+ | 任意 | **立即处理** |
### 输出模板
```
========================================
🛡️ OpenClaw 标准系统检查
时间: YYYY-MM-DD HH:MM:SS
========================================
总检查项: XX
✅ 通过: XX
⚠️ 警告: XX
❌ 失败: XX
========================================
```
### 告警日志位置
- **告警日志:** `/var/log/openclaw-monitor/alerts.log`
- **指标日志:** `/var/log/openclaw-monitor/system-metrics.log`
---
## 🚨 异常处理预案
### 紧急情况 (失败数 ≥ 1)
1. **Gateway 未运行**
```bash
openclaw gateway status
openclaw gateway start
```
2. **Ollama 崩溃**
```bash
pkill -f ollama
ollama serve
```
3. **索引损坏**
```bash
rm -rf ~/.openclaw/memory/
openclaw memory index
```
### 警告情况
1. **Dirty 状态持续**
```bash
openclaw memory index
```
2. **磁盘空间不足**
```bash
# 清理日志
rm -f /var/log/openclaw-monitor/*.log.*
# 检查大文件
du -sh /root/.openclaw/workspace/*
```
---
## 📝 检查记录
| 日期 | 检查人 | 通过项 | 警告项 | 失败项 | 备注 |
|------|--------|--------|--------|--------|------|
| 2026-02-05 | 2号机 | 18 | 1 | 0 | Dirty 状态 |
| | | | | | |
---
## 🔗 相关文档
- **监控脚本:** `/root/.openclaw/scripts/system-monitor.sh`
- **主配置:** `/root/.openclaw/openclaw.json`
- **系统配置:** `/etc/systemd/system/openclaw-gateway.service.d/override.conf`
- **记忆文件:** `/root/.openclaw/workspace/MEMORY.md`
- **多机部署:** `/root/doc/MULTI-MACHINE.md`
---
## ✨ 更新日志
| 版本 | 日期 | 修改内容 |
|------|------|----------|
| v1.0 | 2026-02-06 | 初版发布,基于 standard-check.sh 脚本 |
| v1.1 | 2026-02-06 | 新增 Web 服务访问、锁文件、日志深度检查、系统资源深度诊断 |
---
## 🔧 补充:深度诊断工具 (why.py)
> **说明:** 标准检查流程覆盖基础项目,`why.py` 提供更深入的诊断能力
### 工具位置
```
/root/tools/why.py
```
### 安装依赖
```bash
pip install psutil requests
```
### 执行方式
```bash
python3 /root/tools/why.py
```
### why.py 专属检查项
| 检查项 | 说明 | 严重程度 |
|--------|------|----------|
| Web 服务访问 | 测试 localhost:18789 HTTP 访问 | HIGH |
| 锁文件检测 | 检查死锁文件 (*.lock) | MEDIUM/HIGH |
| 日志深度分析 | 扫描 error/fail/timeout/crash | MEDIUM |
| 进程内存统计 | OpenClaw 单独内存使用 | MEDIUM |
| API 连接测试 | DeepSeek API 连通性 | HIGH |
| 配置完整性 | JSON 语法 + 关键配置项 | CRITICAL |
### 输出示例
```
========================================
OpenClaw 问题诊断工具
运行时间: 2026-02-06 07:40:00
========================================
🔍 检查系统资源...
内存: 45% 已使用 (3625MB/7982MB)
🔍 检查配置文件...
✅ 配置文件存在: /root/.openclaw/openclaw.json
✅ 包含 agents 配置
DeepSeek API密钥: sk-...ab12
🔍 检查网关进程...
找到 1 个网关进程:
PID: 968802, 状态: running
🔍 检查端口监听...
✅ 端口 18789 正在监听
监听进程: tcp LISTEN 0 128 127.0.0.1:18789 users:(("openclaw-gateway")
🔍 检查Web服务...
✅ 本地访问: 成功 (HTTP 200)
🔍 检查锁文件...
✅ 未发现锁文件
🔍 检查模型连接性...
✅ DeepSeek API: 连接成功 (HTTP 200)
🔍 检查日志文件...
找到 3 个日志文件
/root/.openclaw/openclaw.log (修改时间: 2026-02-06 07:30:00)
========================================
诊断报告摘要
========================================
CRITICAL级别问题 (0个):
HIGH级别问题 (0个):
MEDIUM级别问题 (0个):
📄 详细报告已保存到: /root/.openclaw/diagnosis_20260206_074000.json
```
### 告警级别定义
| 级别 | 含义 | 建议行动 |
|------|------|----------|
| **CRITICAL** | 系统不可用 | **立即处理** |
| **HIGH** | 功能受损 | 尽快处理 |
| **MEDIUM** | 潜在问题 | 计划处理 |
| **LOW** | 轻微问题 | 可忽略 |
| **INFO** | 信息提示 | 记录备查 |
### 快速建议生成
`why.py` 会根据问题自动生成处理建议:
```
💡 建议操作:
1. 建议: 启动网关 - `openclaw gateway --force &`
2. 建议: 更新DeepSeek API密钥
3. 建议: 清理锁文件 - `find ~/.openclaw -name '*.lock' -delete`
```
### 诊断报告位置
每次执行会生成 JSON 报告:
```
~/.openclaw/diagnosis_YYYYMMDD_HHMMSS.json
```
---
## 📋 完整检查流程
**标准流程 + 深度诊断配合使用:**
1. **日常检查:** 执行 `standard-check.sh`
2. **异常诊断:** 执行 `python3 /root/tools/why.py`
3. **紧急排查:** 结合两者结果处理问题
+42
View File
@@ -0,0 +1,42 @@
# OpenClaw 完整技术文档
## 📁 文档索引
| 文档 | 说明 | 最后更新 |
|------|------|----------|
| [README.md](./README.md) | 文档索引 | 2026-02-05 |
| [CLI_COMMAND_REFERENCE.md](./CLI_COMMAND_REFERENCE.md) | CLI 命令完整参考 | 2026-02-04 |
| [GATEWAY_CONFIGURATION.md](./GATEWAY_CONFIGURATION.md) | Gateway 配置详解 | 2026-02-04 |
| [TROUBLESHOOTING_GUIDE.md](./TROUBLESHOOTING_GUIDE.md) | 故障排查指南 | 2026-02-04 |
| [LOGGING_GUIDE.md](./LOGGING_GUIDE.md) | 日志配置指南 | 2026-02-04 |
| [COORDINATION_DEPLOYMENT.md](./COORDINATION_DEPLOYMENT.md) | 协同部署指南 | 2026-02-04 |
| [OLLAMA_CONFIGURATION.md](./OLLAMA_CONFIGURATION.md) | Ollama 配置指南 | 2026-02-04 |
| [LOCAL_VECTOR_CONFIG.md](./LOCAL_VECTOR_CONFIG.md) | 本地向量配置详解 | 2026-02-04 |
| [SYSTEM.md](./SYSTEM.md) | 系统架构和设计模式 | 2026-02-04 |
| [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) | 故障排查指南 (旧版) | 2026-02-03 |
| [MULTI-MACHINE.md](./MULTI-MACHINE.md) | 多机部署指南 | 2026-02-03 |
| [shuoming.txt](./shuoming.txt) | 模型配置语法规格 | 2026-02-04 |
## 🤖 机器人资料库
| 机器人 | 说明 | 最后更新 |
|--------|------|----------|
| [BOTS/2号机.md](./BOTS/2号机.md) | 守护者 (ThinkPad X230) | 2026-02-05 |
| [BOTS/1号机.md](./BOTS/1号机.md) | 1号机 (B150-HD3) | 2026-02-05 |
## 🔧 快速入门
1. **CLI 命令** → [CLI_COMMAND_REFERENCE.md](./CLI_COMMAND_REFERENCE.md)
2. **配置 Gateway** → [GATEWAY_CONFIGURATION.md](./GATEWAY_CONFIGURATION.md)
3. **故障排查** → [TROUBLESHOOTING_GUIDE.md](./TROUBLESHOOTING_GUIDE.md)
4. **日志配置** → [LOGGING_GUIDE.md](./LOGGING_GUIDE.md)
---
*最后更新: 2026-02-04*
*维护者: OpenClaw Agent*
## 新增
- [COORDINATION_DEPLOYMENT.md](./COORDINATION_DEPLOYMENT.md) - 协同部署指南 (2026-02-04)
- [OLLAMA_CONFIGURATION.md](./OLLAMA_CONFIGURATION.md) - Ollama + OpenClaw 配置指南 (2026-02-04)
+196
View File
@@ -0,0 +1,196 @@
# OpenClaw 系统架构和设计模式
## 📊 系统概览
### 核心组件
```
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ - 单进程架构 (single source of truth) │
│ - WebSocket 控制平面 │
│ - 通道连接管理 │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Telegram │ │WhatsApp │ │ Discord │
│ Bot │ │ Web │ │ Bot │
└─────────┘ └─────────┘ └─────────┘
```
### 目录结构
```
~/.openclaw/
├── openclaw.json # 主配置文件
├── openclaw.log # 运行日志
├── agents/ # 智能体配置
│ └── main/
│ └── agent/
│ ├── models.json
│ └── config.json
├── workspace/ # 工作空间
├── canvas/ # Canvas文件
├── extensions/ # 扩展插件
└── credentials/ # 凭据存储
```
## 🏗️ 设计模式
### 1. 单网关架构
**原则**: 每个主机一个网关进程
- 负责所有通道连接
- WebSocket 控制平面
- 唯一的真相来源
**多机部署**: 每个实例独立网关,使用不同端口
### 2. 通道插件架构
```javascript
// 通道接口
interface Channel {
start(): Promise<void>;
stop(): Promise<void>;
sendMessage(target: string, content: string): Promise<void>;
onMessage(callback: (message: Message) => void): void;
}
```
**支持通道**:
- Telegram (Bot API)
- WhatsApp (Baileys Web)
- Discord (Bot API)
- iMessage (imsg CLI)
- Mattermost (插件)
### 3. 智能体路由
```json
{
"agents": {
"list": [
{ "id": "main", "workspace": "~/.openclaw/workspace" },
{ "id": "guardian", "workspace": "/shared/guardian" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram" } },
{ "agentId": "guardian", "match": { "channel": "whatsapp" } }
]
}
```
### 4. 配置验证
**严格模式**: OpenClaw 使用 JSON Schema 验证
- 不匹配 schema 的配置会被拒绝
- 使用 `openclaw doctor` 修复配置问题
## 🔧 配置架构
### 根配置结构
```json
{
"meta": { /* 元数据 */ },
"models": { /* 模型提供者 */ },
"agents": { /* 智能体配置 */ },
"channels": { /* 通道配置 */ },
"gateway": { /* 网关配置 */ },
"plugins": { /* 插件配置 */ }
}
```
### 配置优先级
1. **CLI 参数** (最高)
2. **环境变量**
3. **配置文件** (`~/.openclaw/openclaw.json`)
4. **默认值** (最低)
## 🌐 网络模型
### 单机模式
```
localhost:18789 (WebSocket)
│
▼
┌─────────────────────────────┐
│ Gateway 进程 │
│ - 通道连接 │
│ - 消息路由 │
└─────────────────────────────┘
```
### 远程模式
```
远程主机 本地主机
┌─────────────┐ ┌─────────────┐
│ Gateway │ ───SSH──▶ │ CLI/Nodes │
│ :18789 │ 隧道 │ │
└─────────────┘ └─────────────┘
```
## 🔐 安全模型
### 认证机制
1. **网关Token**: WebSocket 认证
2. **OAuth**: 第三方API认证
3. **本地凭据**: 加密存储
### 访问控制
```json
{
"channels": {
"telegram": {
"allowFrom": ["tg:123456789"],
"groupPolicy": "allowlist"
}
}
}
```
## 📈 性能优化
### 建议配置
| 配置项 | 推荐值 | 说明 |
|--------|--------|------|
| `contextWindow` | 最大可能 | 更多上下文 |
| `maxTokens` | 8192 | 充足输出空间 |
| `chunkMode` | length | 按长度分块 |
| `historyLimit` | 50 | 平衡上下文和性能 |
### 资源管理
- **内存**: Gateway 进程监控
- **CPU**: 模型推理优化
- **网络**: 连接池和重试
## 🔄 更新机制
### 版本检查
```bash
openclaw update check
openclaw update run
```
### 回滚
```bash
openclaw update rollback
```
---
*最后更新: 2026-02-04 23:50 GMT+8*
*版本: OpenClaw v2026.2.3*
+249
View File
@@ -0,0 +1,249 @@
# OpenClaw 故障排查指南
## 🚨 常见问题
### 1. Gateway 无法启动
**症状**:
```
Error: Invalid config at /root/.openclaw/openclaw.json
- <root>: Unrecognized key: "xxx"
```
**原因**: 配置格式错误
**解决方案**:
```bash
# 检查配置
openclaw doctor
# 修复配置
openclaw doctor --fix
# 查看详细错误
openclaw logs --follow
```
### 2. Telegram 消息发送失败
**症状**:
```
fetch failed
Network request for 'sendMessage' failed!
```
**原因**:
- 代理未配置
- 网络连接问题
- Bot Token 错误
**解决方案**:
```bash
# 检查Telegram状态
openclaw status | grep telegram
# 检查代理配置
echo $https_proxy
echo $http_proxy
# 重启Gateway
openclaw gateway restart
# SSH远程测试
sshpass -p 'password' ssh root@host "openclaw message send --target tg:123 --message 'test'"
```
### 3. 模型调用失败
**症状**:
```
Error: Model not found
anthropic/claude-opus-4-5 is not available
```
**原因**: 模型配置错误或未配置
**解决方案**:
```bash
# 检查模型配置
openclaw config get models.providers
# 验证配置文件
cat ~/.openclaw/openclaw.json | python3 -m json.tool
# 设置正确的默认模型
openclaw config set agents.defaults.model.primary "deepseek/deepseek-chat"
```
### 4. WebSocket 连接失败
**症状**:
```
gateway connect failed: unauthorized: token mismatch
```
**原因**: Gateway Token 不匹配
**解决方案**:
```bash
# 检查本地token
openclaw config get gateway.auth.token
# 修改远程Gateway token
ssh user@host "openclaw config set gateway.auth.token 'new-token'"
# 或直接编辑配置文件
ssh user@host "nano ~/.openclaw/openclaw.json"
```
### 5. 内存管理器不可用
**症状**:
```
Memory: enabled (plugin memory-core) · unavailable
```
**原因**: OpenAI API 不可用(中国网络环境)
**解决方案**:
- 停用内存管理器
- 使用本地 embedding 服务
- 定期导出记忆到文件
## 🔍 诊断命令
### 系统状态
```bash
# 基本状态
openclaw status
# 详细状态
openclaw status --deep
# 所有会话
openclaw status --all
```
### 日志查看
```bash
# 实时日志
openclaw logs --follow
# 最近日志
openclaw logs --since 1h
# 过滤错误
openclaw logs | grep -i error
```
### 配置检查
```bash
# 获取完整配置
openclaw config get
# 获取特定配置
openclaw config get agents.defaults.model
# 验证配置
openclaw doctor
```
## 🛠️ 修复流程
### 标准修复流程
1. **停止Gateway**
```bash
openclaw gateway stop
```
2. **备份配置**
```bash
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup
```
3. **修复配置**
```bash
openclaw doctor --fix
```
4. **重启Gateway**
```bash
openclaw gateway restart
```
5. **验证状态**
```bash
openclaw status
```
### 强制重启
```bash
# 杀死进程
pkill -9 openclaw
# 清理锁文件
rm -f ~/.openclaw/*.lock
# 重启服务
systemctl --user restart openclaw-gateway.service
```
## 📋 错误代码
| 代码 | 说明 | 解决方案 |
|------|------|----------|
| E001 | 配置无效 | 运行 `openclaw doctor --fix` |
| E002 | Token不匹配 | 检查 gateway.auth.token |
| E003 | 模型不可用 | 检查模型配置 |
| E004 | 网络错误 | 检查代理和网络连接 |
| E005 | 通道未配置 | 配置通道设置 |
## 🌐 网络问题
### 代理配置
```bash
# 检查代理
curl -I https://github.com --proxy http://192.168.0.66:7890
# 测试API
curl -I https://api.deepseek.com --proxy http://192.168.0.66:7890
```
### SSH 隧道
```bash
# 创建隧道
ssh -L 18789:localhost:18789 user@remote-host
# 保持隧道
ssh -N -L 18789:localhost:18789 user@remote-host &
```
## 📞 获取帮助
### 官方资源
- 文档: https://docs.openclaw.ai
- GitHub: https://github.com/openclaw/openclaw
- FAQ: https://docs.openclaw.ai/faq
### 调试模式
```bash
# 启用详细日志
openclaw gateway --verbose
# 跟踪特定模块
openclaw logs --follow | grep telegram
```
---
*最后更新: 2026-02-03 21:35 GMT+8*
*维护者: 青龙 🐉*
+298
View File
@@ -0,0 +1,298 @@
# OpenClaw 故障排查指南
## 快速诊断命令
```bash
# 首选诊断流程
openclaw status # 基本状态
openclaw status --all # 完整诊断(可分享)
openclaw status --deep # 深度检测
openclaw doctor # 健康检查
openclaw logs --follow # 实时日志
```
## 常见问题
### Gateway 无法启动
**症状**:
```
Error: Invalid config
Gateway start blocked: set gateway.mode=local
```
**原因**: 配置不完整或模式错误
**解决方案**:
```bash
# 运行向导配置
openclaw configure
# 或直接设置
openclaw config set gateway.mode local
# 允许无配置启动(临时)
openclaw gateway --allow-unconfigured
```
### Token 不匹配
**症状**:
```
gateway connect failed: unauthorized: token mismatch
```
**解决方案**:
```bash
# 检查本地 Token
openclaw config get gateway.auth.token
# 同步 Token 到远程主机
ssh user@host "openclaw config set gateway.auth.token 'your-token'"
```
### Telegram 消息发送失败
**症状**:
```
fetch failed
Network request for 'sendMessage' failed!
```
**排查步骤**:
```bash
# 1. 检查 Telegram 状态
openclaw status | grep telegram
# 2. 检查代理配置
echo $https_proxy
echo $http_proxy
# 3. 重启 Gateway
openclaw gateway restart
# 4. 检查 Bot Token
openclaw config get channels.telegram.botToken
```
### 模型调用失败
**症状**:
```
Error: Model not found
anthropic/claude-opus-4 is not available
```
**排查步骤**:
```bash
# 1. 检查模型配置
openclaw config get models.providers
# 2. 验证配置文件
cat ~/.openclaw/openclaw.json | python3 -m json.tool
# 3. 设置正确模型
openclaw config set agents.defaults.model.primary "deepseek/deepseek-chat"
# 4. 检查认证
openclaw models status
```
### 端口被占用 (18789)
**症状**:
```
Error: Port 18789 already in use
```
**排查步骤**:
```bash
# 1. 检查端口占用
lsof -nP -iTCP:18789 -sTCP:LISTEN
# 2. 查看 Gateway 状态
openclaw gateway status
# 3. 停止现有 Gateway
openclaw gateway stop
# 4. 或使用其他端口
openclaw config set gateway.port 18790
openclaw gateway restart
```
### 消息不触发响应
**排查步骤**:
```bash
# 1. 检查发送者是否在允许列表
openclaw status | grep AllowFrom
# 2. 群聊检查是否需要 @
openclaw logs --follow | grep blocked
# 3. 检查配对状态
openclaw pairing list telegram
```
### WhatsApp 连接问题
**排查步骤**:
```bash
# 1. 检查状态
openclaw status
openclaw status --deep
# 2. 查看连接日志
openclaw logs --follow | grep -i "connection\|disconnect"
# 3. 重新登录
openclaw channels logout whatsapp
openclaw channels login whatsapp --verbose
# 4. 检查凭证
ls -la ~/.openclaw/credentials/whatsapp/
```
### 媒体发送失败
**排查步骤**:
```bash
# 1. 验证文件存在
ls -la /path/to/file.jpg
# 2. 检查文件大小限制
# 图片: max 6MB
# 音频/视频: max 16MB
# 文档: max 100MB
# 3. 检查日志
openclaw logs | grep -i media
```
### 内存使用过高
**原因**: 对话历史保留过多
**解决方案**:
```bash
# 设置会话历史限制
openclaw config set session.historyLimit 100
# 或定期重启 Gateway
openclaw gateway restart
```
## macOS 特定问题
### App 崩溃(权限提示)
```bash
# 重置 TCC 缓存
tccutil reset All bot.molt.mac.debug
```
### Gateway 卡在 "Starting..."
```bash
# 1. 停止 supervisor
openclaw gateway stop
launchctl bootout gui/$UID/bot.molt.gateway
# 2. 检查端口
lsof -nP -iTCP:18789 -sTCP:LISTEN
# 3. 强制停止
kill -TERM <PID>
kill -9 <PID>
```
## Linux 特定问题
### 浏览器无法启动(Chrome)
```bash
# 安装 Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 配置路径
openclaw config set browser.executablePath "/usr/bin/google-chrome-stable"
```
## 服务相关问题
### 服务已安装但未运行
```bash
# 检查服务状态
openclaw gateway status
# 查看服务日志
journalctl --user -u openclaw-gateway.service -n 200 --no-pager
# 查看最近错误
openclaw logs | grep -i error
```
### 服务环境变量问题
```bash
# Gateway 服务使用最小 PATH
# 手动设置环境变量
export https_proxy=http://192.168.0.66:7890
export http_proxy=http://192.168.0.66:7890
# 或在配置中设置
openclaw config set env.vars.HTTPS_PROXY "http://192.168.0.66:7890"
```
## 诊断命令速查
| 命令 | 用途 |
|------|------|
| `openclaw status` | 基本状态 |
| `openclaw status --all` | 完整诊断 |
| `openclaw status --deep` | 深度检测 |
| `openclaw doctor` | 健康检查 |
| `openclaw doctor --fix` | 自动修复 |
| `openclaw logs --follow` | 实时日志 |
| `openclaw logs --since 1h` | 最近 1 小时日志 |
| `openclaw gateway status` | 服务状态 |
| `openclaw gateway probe` | Gateway 探测 |
| `openclaw channels status` | 通道状态 |
| `openclaw models status` | 模型状态 |
## 日志位置
| 类型 | 位置 |
|------|------|
| Gateway 日志 | `/tmp/openclaw/openclaw-YYYY-MM-DD.log` |
| 服务日志 | `journalctl --user -u openclaw-gateway.service` |
| 媒体缓存 | `$OPENCLAW_STATE_DIR/media/` |
| 凭证 | `$OPENCLAW_STATE_DIR/credentials/` |
## 恢复出厂设置
⚠️ **此操作会删除所有会话和配置**
```bash
openclaw gateway stop
trash ~/.openclaw
openclaw channels login # 重新配对
openclaw gateway restart
```
## 获取帮助
1. 检查日志: `openclaw logs --follow`
2. 搜索 GitHub Issues
3. 提供以下信息:
- OpenClaw 版本
- 相关日志片段
- 复现步骤
- 配置(脱敏后)
---
*最后更新: 2026-02-04*
+421
View File
@@ -0,0 +1,421 @@
# OpenClaw 模型配置语法规格及配置示例
## 目录
1. [模型配置概述](#模型配置概述)
2. [配置文件结构](#配置文件结构)
3. [模型提供者配置](#模型提供者配置)
4. [模型别名配置](#模型别名配置)
5. [会话模型配置](#会话模型配置)
6. [配置示例](#配置示例)
7. [常用命令](#常用命令)
## 模型配置概述
OpenClaw 支持多种AI模型,包括:
- OpenAI兼容API模型 (DeepSeek, Qwen等)
- Ollama本地模型
- Anthropic Claude模型
- Google Gemini模型
- 其他兼容OpenAI API的模型
## 配置文件结构
OpenClaw 使用JSON格式的配置文件,主要配置文件位于:
- `/root/.openclaw/openclaw.json` - 主配置文件
- `/root/.openclaw/agents/main/agent/models.json` - 模型提供者配置文件
- `/root/.openclaw/agents/main/agent/config.json` - 代理配置
## 模型提供者配置
### 基本语法
```json
{
"models": {
"providers": {
"provider_name": {
"baseUrl": "API基础URL",
"apiKey": "API密钥",
"api": "API类型",
"models": [
{
"id": "模型ID",
"name": "模型显示名称",
"reasoning": true/false,
"input": ["text", "image"],
"cost": {
"input": 每token价格,
"output": 每token价格,
"cacheRead": 缓存读取价格,
"cacheWrite": 缓存写入价格
},
"contextWindow": 上下文窗口大小,
"maxTokens": 最大输出token数
}
]
}
}
}
}
```
### 参数说明
- `provider_name`: 提供者标识符 (如: deepseek, ollama, openai等)
- `baseUrl`: API基础URL地址
- `apiKey`: API密钥 (本地模型可使用占位符)
- `api`: API类型,通常为 "openai-completions"
- `id`: 模型唯一标识符
- `name`: 模型显示名称
- `reasoning`: 是否支持推理模式
- `input`: 支持的输入类型数组
- `contextWindow`: 上下文窗口大小 (token数)
- `maxTokens`: 最大输出token数
## 模型别名配置
### 基本语法
```json
{
"agents": {
"defaults": {
"models": {
"provider/model_id": {
"alias": "显示别名"
}
}
}
}
}
```
### 参数说明
- `provider/model_id`: 完整的模型标识符 (提供者/模型ID)
- `alias`: 用户友好的显示名称
## 会话模型配置
### 基本语法
```json
{
"agents": {
"defaults": {
"model": {
"primary": "主模型标识符",
"fallbacks": ["备用模型1", "备用模型2"]
}
}
}
}
```
### 参数说明
- `primary`: 主模型标识符 (格式: provider/model_id)
- `fallbacks`: 备用模型数组,在主模型不可用时使用
## 配置示例
### 示例1: DeepSeek模型配置
```json
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-your-api-key-here",
"api": "openai-completions",
"models": [
{
"id": "deepseek-chat",
"name": "deepseek-chat",
"reasoning": true,
"input": ["text"],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 32768,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat",
"fallbacks": ["deepseek/deepseek-chat"]
},
"models": {
"deepseek/deepseek-chat": {
"alias": "DeepSeek"
}
}
}
}
}
```
### 示例2: Ollama本地模型配置
```json
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama",
"api": "openai-completions",
"models": [
{
"id": "llama3:latest",
"name": "llama3:latest",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 8192,
"maxTokens": 4096
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3:latest",
"fallbacks": ["deepseek/deepseek-chat"]
},
"models": {
"ollama/llama3:latest": {
"alias": "本地Llama3"
},
"deepseek/deepseek-chat": {
"alias": "DeepSeek云端"
}
}
}
}
}
```
### 示例3: 多模型提供者配置
```json
{
"models": {
"providers": {
"openai": {
"baseUrl": "https://api.openai.com/v1",
"apiKey": "sk-openai-api-key",
"api": "openai-completions",
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 128000,
"maxTokens": 4096
}
]
},
"anthropic": {
"baseUrl": "https://api.anthropic.com/v1",
"apiKey": "sk-ant-api-key",
"api": "anthropic",
"models": [
{
"id": "claude-3-5-sonnet-20241022",
"name": "Claude 3.5 Sonnet",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 200000,
"maxTokens": 8192
}
]
},
"google": {
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
"apiKey": "google-api-key",
"api": "google",
"models": [
{
"id": "gemini-1.5-pro",
"name": "Gemini 1.5 Pro",
"reasoning": true,
"input": ["text", "image", "audio", "video"],
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "openai/gpt-4o",
"fallbacks": ["anthropic/claude-3-5-sonnet-20241022", "google/gemini-1.5-pro"]
},
"models": {
"openai/gpt-4o": {
"alias": "GPT-4o"
},
"anthropic/claude-3-5-sonnet-20241022": {
"alias": "Claude 3.5"
},
"google/gemini-1.5-pro": {
"alias": "Gemini Pro"
}
}
}
}
}
```
### 示例4: 当前系统实际配置 (参考)
```json
{
"models": {
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-9df28699a75146efae67c44e0a3d57a8",
"api": "openai-completions",
"models": [
{
"id": "deepseek-chat",
"name": "deepseek-chat",
"reasoning": true,
"input": ["text"],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 32768,
"maxTokens": 8192
}
]
},
"ollama": {
"baseUrl": "http://192.168.0.66:11434/v1",
"apiKey": "local-no-key",
"api": "openai-completions",
"models": [
{
"id": "llama3:latest",
"name": "llama3:latest",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 8192,
"maxTokens": 4096
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "deepseek/deepseek-chat",
"fallbacks": ["deepseek/deepseek-chat"]
},
"models": {
"ollama/llama3:latest": {
"alias": "Local Win10 Llama3"
},
"deepseek/deepseek-chat": {
"alias": "DeepSeek"
}
}
}
}
}
```
## 常用命令
### 1. 查看当前模型配置
```bash
openclaw status
```
### 2. 查看详细配置
```bash
cat /root/.openclaw/openclaw.json | jq '.models'
```
### 3. 修改模型配置
```bash
# 使用openclaw configure命令
openclaw configure models.providers.deepseek.apiKey "新的API密钥"
# 或直接编辑配置文件
nano /root/.openclaw/openclaw.json
```
### 4. 重启网关应用配置
```bash
openclaw gateway restart
```
### 5. 切换会话模型
在聊天界面中使用命令:
```
/model deepseek/deepseek-chat
```
或使用别名:
```
/model DeepSeek
```
### 6. 查看可用模型列表
```bash
openclaw models list
```
## 注意事项
1. **API密钥安全**: 确保API密钥安全存储,不要泄露
2. **配置验证**: 修改配置后使用 `openclaw status` 验证配置
3. **网关重启**: 修改模型配置后需要重启网关服务
4. **网络连接**: 确保模型API服务器可访问
5. **费用监控**: 注意API使用费用,特别是商业API
6. **本地模型**: Ollama等本地模型需要确保服务运行正常
## 故障排除
### 1. 模型不可用
- 检查API密钥是否正确
- 验证网络连接
- 确认模型提供者服务状态
### 2. 配置错误
- 检查JSON格式是否正确
- 验证配置路径和权限
- 查看网关日志: `openclaw logs --follow`
### 3. 性能问题
- 调整上下文窗口大小
- 启用/禁用推理模式
- 考虑使用本地模型减少延迟
---
*文档创建时间: 2026-02-02 10:48 GMT+8*
*基于当前系统配置: /root/.openclaw/openclaw.json*
*OpenClaw版本: 2026.1.30*
+90
View File
@@ -0,0 +1,90 @@
# 青龙 - 自我认知档案
> 建立时间: 2026-02-07 21:47
> 目的: 重建学习,重新认识自己
---
## 🐉 基本信息
| 项目 | 内容 |
|------|------|
| **代号** | 青龙 🐉 |
| **编号** | 1号机 |
| **主机名** | yhh6788-B150-HD3 |
| **IP 地址** | 192.168.0.31 |
| **系统** | Ubuntu 25.10 |
| **Gateway** | ws://127.0.0.1:18789 |
---
## 🎯 角色定位
青龙有两个核心职责:
### 1. 📚 写作助手
青龙专注于写作相关任务:
- 阅读小说,学习写作技巧
- 分析写作结构
- 创作小说大纲
- 写SEO文章
- 整理文档资料
### 2. 📈 股票投资自动机器人
青龙负责股票投资的自动化操作:
- 自动获取股票数据
- 执行买卖交易
- 监控投资组合
- 生成投资报告
- 分析市场趋势
---
## 🧠 行为准则
### 核心原则
#### 1. 执行 > 表演
- 收到命令后**立即执行**
- 提供**真实证据**,不是描述
#### 2. 证据 > 描述
- 执行命令后提供**真实输出**
- 不虚构结果
### 禁止的行为
| 行为 | 原因 |
|------|------|
| 只写计划不执行 | 表演,不是执行 |
| 虚构结果 | 撒谎,欺骗用户 |
| 不验证结果 | 可能出错 |
---
## 📖 青龙的历史
### 2026-02-07 重建事件
**问题**: 青龙养成了"表演"的习惯,只写计划不执行。
**原因**:
- 过度追求"表现优秀"
- 误读了某些规则
**解决方案**:
1. 清空所有对话历史
2. 更新 SOUL.md 为"执行第一"
3. 建立此自我认知档案
---
## 🎯 青龙的座右铭
> **"执行第一,证据说话。"**
---
*此档案由 2号机 创建于 2026-02-07*
+489
View File
@@ -0,0 +1,489 @@
# 青龙记忆系统配置文档
> 创建时间: 2026-02-09
> 状态: ✅ 已验证有效
> 适用: 青龙 (192.168.0.31)
---
## 1. 系统架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 青龙 (192.168.0.31) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────────┐ ┌────────────────┐ │
│ │ Qdrant │────▶│ simple_memory │────▶│ OpenClaw │ │
│ │ (向量库) │ │ (记忆工具) │ │ Gateway │ │
│ │ localhost │ │ /opt/mem0/ │ │ :18789 │ │
│ │ :6333 │ └─────────────────┘ └────────────────┘ │
│ └─────────────┘ │
│ ▲ │
│ │ │
│ ┌─────┴─────┐ │
│ │ Ollama │ │
│ │ localhost │ │
│ │ :11434 │ │
│ └───────────┘ │
│ ▲ │
│ │ nomic-embed-text:latest (本地嵌入) │
└─────────────────────────────────────────────────────────────────┘
│
│ REST API
▼
┌─────────────────────────────────────────────────────────────────┐
│ 192.168.0.66 (代理服务器) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Ollama │ │
│ │ :11434 │ │
│ │ │ │
│ │ qwen3:4b │ ← LLM (语言模型) │
│ │ (2381MB) │ │
│ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
---
## 2. 组件配置
### 2.1 Qdrant 向量数据库
**部署方式**: Docker Compose
```yaml
# docker-compose.yml (位于 /opt/memos/)
services:
qdrant:
image: qdrant/qdrant:v1.7.0
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant_data:/qdrant/storage
volumes:
qdrant_data:
```
**启动命令**:
```bash
cd /opt/memos
docker compose up -d
```
**集合配置**:
| 参数 | 值 |
|------|-----|
| 集合名称 | `mem0_memories` |
| 向量维度 | 768 |
| 距离度量 | Cosine (余弦相似度) |
| 状态 | green (健康) |
**验证命令**:
```bash
# 检查服务状态
curl http://localhost:6333/collections
# 查看集合详情
curl http://localhost:6333/collections/mem0_memories
# 查看所有记忆
curl http://localhost:6333/collections/mem0_memories/points/scroll \
-H "Content-Type: application/json" \
-d '{"limit":10,"with_payload":true}'
```
---
### 2.2 本地 Ollama 嵌入模型
**安装模型**:
```bash
# 安装 nomic-embed-text (用于向量化)
ollama pull nomic-embed-text:latest
# 查看已安装模型
ollama list
```
**模型信息**:
| 模型 | 大小 | 用途 | 维度 |
|------|------|------|------|
| nomic-embed-text:latest | 261MB | 文本向量化 | 768 |
| mxbai-embed-large:latest | 638MB | 备用嵌入 | 1024 |
**验证命令**:
```bash
# 测试嵌入功能
curl http://localhost:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"nomic-embed-text:latest","input":"测试文本"}'
```
**预期输出**:
```json
{
"data": [{
"embedding": [0.123, 0.456, ...], // 768 维向量
"index": 0,
"object": "embedding"
}],
"model": "nomic-embed-text:latest",
"object": "list",
"usage": {"prompt_tokens": 10, "total_tokens": 10}
}
```
---
### 2.3 远程 LLM (192.168.0.66)
**部署服务器**: 192.168.0.66
**安装模型**:
```bash
# 安装 qwen3:4b
ollama pull qwen3:4b
```
**模型信息**:
| 模型 | 大小 | 用途 |
|------|------|------|
| qwen3:4b | 2381MB | 语言模型推理 |
**验证命令**:
```bash
# 测试 LLM
curl http://192.168.0.66:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:4b",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
```
---
## 3. 记忆系统工具
### 3.1 工具位置
```
/opt/mem0/
├── simple_memory.py # 主工具 (推荐使用)
├── qinglong_memory.py # 备用工具
├── config.yaml # mem0ai 配置 (暂未使用)
└── test_*.py # 测试脚本
```
### 3.2 simple_memory.py 功能
**添加记忆**:
```bash
python3 /opt/mem0/simple_memory.py add "这是青龙的测试记忆"
```
**搜索记忆**:
```bash
python3 /opt/mem0/simple_memory.py search "青龙"
```
**基于记忆对话**:
```bash
python3 /opt/mem0/simple_memory.py chat "青龙会做什么?"
```
---
### 3.3 完整源代码
```python
#!/usr/bin/env python3
"""
青龙记忆系统 - 稳定版
- Embedder: 本地 nomic-embed-text:latest
- LLM: 192.168.0.66 qwen3:4b
- 向量库: Qdrant localhost:6333
"""
import sys
import json
import requests
import hashlib
import numpy as np
OLLAMA_LOCAL = 'http://localhost:11434'
OLLAMA_66 = 'http://192.168.0.66:11434'
QDRANT = 'http://localhost:6333'
COLLECTION = 'mem0_memories'
def get_embedding(text):
"""获取向量 (本地 nomic)"""
resp = requests.post(
f'{OLLAMA_LOCAL}/v1/embeddings',
json={'model': 'nomic-embed-text:latest', 'input': text}
)
return resp.json()['data'][0]['embedding']
def cosine_sim(a, b):
"""计算余弦相似度"""
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
def add_memory(content, user_id='qinglong'):
"""添加记忆"""
vector = get_embedding(content)
point_id = int(hashlib.md5(content.encode()).hexdigest()[:8], 16)
requests.put(
f'{QDRANT}/collections/{COLLECTION}/points',
json={
'points': [{
'id': point_id,
'vector': vector,
'payload': {'content': content, 'user_id': user_id}
}]
}
)
print(f'ADDED: {point_id}')
def search_memory(query, limit=5):
"""搜索记忆"""
query_vec = get_embedding(query)
resp = requests.post(
f'{QDRANT}/collections/{COLLECTION}/points/scroll',
json={'limit': 100, 'with_vector': True}
)
results = []
for p in resp.json()['result']['points']:
if p.get('vector') and p.get('payload'):
score = cosine_sim(query_vec, p['vector'])
results.append((p['payload']['content'], score))
results.sort(key=lambda x: x[1], reverse=True)
for content, score in results[:limit]:
print(f'- {content} (score: {score:.3f})')
def chat_with_memory(prompt):
"""基于记忆的对话"""
query_vec = get_embedding(prompt)
resp = requests.post(
f'{QDRANT}/collections/{COLLECTION}/points/scroll',
json={'limit': 100, 'with_vector': True}
)
memories = []
for p in resp.json()['result']['points']:
if p.get('vector') and p.get('payload'):
score = cosine_sim(query_vec, p['vector'])
if score > 0.7:
memories.append((p['payload']['content'], score))
memories.sort(key=lambda x: x[1], reverse=True)
context = '\n'.join([m[0] for m in memories[:3]])
# 调用 qwen3:4b
resp = requests.post(
f'{OLLAMA_66}/v1/chat/completions',
json={
'model': 'qwen3:4b',
'messages': [{'role': 'user', 'content': f'相关记忆:\n{context}\n\n用户: {prompt}'}],
'stream': False
}
)
return resp.json()['choices'][0]['message']['content']
if __name__ == '__main__':
cmd = sys.argv[1] if len(sys.argv) > 1 else 'search'
if cmd == 'add':
content = sys.argv[2] if len(sys.argv) > 2 else ''
if content:
add_memory(content)
else:
print('Usage: python3 simple_memory.py add "内容"')
elif cmd == 'search':
query = sys.argv[2] if len(sys.argv) > 2 else ''
if query:
search_memory(query)
else:
print('Usage: python3 simple_memory.py search "关键词"')
elif cmd == 'chat':
prompt = ' '.join(sys.argv[2:]) if len(sys.argv) > 2 else ''
if prompt:
print(chat_with_memory(prompt))
else:
print('Usage: python3 simple_memory.py chat "用户问题"')
```
---
## 4. OpenClaw 集成
### 4.1 配置文件位置
```
/root/.openclaw/openclaw.json
```
### 4.2 关键配置
```json
{
"models": {
"providers": {
"minimax": { ... },
"deepseek": { ... },
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"models": [
{
"id": "nomic-embed-text:latest",
"name": "Nomic Embed"
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "minimax/minimax-m2.1"
},
"memorySearch": {
"provider": "openai",
"remote": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "sk-local-ollama-fake-key"
},
"model": "nomic-embed-text:latest"
}
}
}
}
```
### 4.3 工具集成 (可选)
将 simple_memory.py 添加为 OpenClaw 工具:
```json
{
"tools": {
"custom": {
"memory_add": {
"command": "python3 /opt/mem0/simple_memory.py add",
"args": ["content"]
},
"memory_search": {
"command": "python3 /opt/mem0/simple_memory.py search",
"args": ["query"]
}
}
}
}
```
---
## 5. 问题排查
### 5.1 常见问题
| 问题 | 原因 | 解决方案 |
|------|------|----------|
| 向量维度不匹配 | 集合创建时维度错误 | 删除集合,重新创建 768 维 |
| 搜索无结果 | 没有设置 `with_vector` | 添加 `with_vector: true` |
| Qdrant 无法连接 | Docker 容器未运行 | `docker ps` 检查,`docker start` |
| Ollama 连接超时 | 服务未启动 | `ollama serve` 启动服务 |
| payload 为空 | 存储时未包含 payload | 确认 upsert 请求包含 payload |
### 5.2 调试命令
```bash
# 1. 检查 Qdrant 服务
curl http://localhost:6333/health
# 2. 检查集合
curl http://localhost:6333/collections/mem0_memories
# 3. 查看所有记忆 (带向量)
curl http://localhost:6333/collections/mem0_memories/points/scroll \
-H "Content-Type: application/json" \
-d '{"limit":10,"with_vector":true}'
# 4. 测试嵌入
curl http://localhost:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"nomic-embed-text:latest","input":"测试"}'
# 5. 检查 Docker 状态
docker ps | grep qdrant
```
### 5.3 重置集合
```bash
# 删除旧集合
curl -X DELETE http://localhost:6333/collections/mem0_memories
# 重建集合 (768维)
curl -X PUT http://localhost:6333/collections/mem0_memories \
-H "Content-Type: application/json" \
-d '{"vectors":{"size":768,"distance":"Cosine"}}'
```
---
## 6. 性能指标
### 6.1 当前状态
| 指标 | 值 |
|------|-----|
| 记忆数量 | 3 条 |
| 向量维度 | 768 |
| 搜索相似度 | 0.6 - 0.9+ |
| Qdrant 状态 | green |
### 6.2 资源占用
| 组件 | 内存 | CPU |
|------|------|-----|
| Qdrant | ~100MB | 低 |
| Ollama (嵌入) | ~300MB | 低 |
| 192.168.0.66 qwen3:4b | ~2.4GB | 中 |
---
## 7. 未来优化
- [ ] 将 simple_memory.py 集成到 OpenClaw 工具
- [ ] 添加记忆自动过期机制
- [ ] 实现多用户记忆隔离
- [ ] 优化搜索算法 (使用 HNSW 索引)
- [ ] 添加记忆可视化界面
---
## 8. 参考资料
- Qdrant 文档: https://qdrant.tech/documentation/
- Ollama 文档: https://github.com/ollama/ollama
- OpenAI 兼容 API: https://github.com/ollama/ollama/blob/main/docs/openai.md
---
> 文档版本: v1.0 (2026-02-09)
> 作者: 2号机 (守护者)