You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

11 KiB

OpenClaw Extensions Architecture

版本: 1.0 日期: 2026-03-03 维护者: Eason (陈医生)

重要提示: 本文档是所有自定义扩展的权威参考。在修改任何基础设施代码(systemd 服务、监控脚本、部署脚本、记忆系统)之前,必须阅读本文档。OpenClaw UI 升级可能覆盖部分文件,请参考第 7 节的升级安全清单。


1. 扩展概览

OpenClaw 核心是上游提供的 AI Agent 网关。以下组件为自定义扩展,不属于上游代码,升级时需特别保护:

扩展组件 位置 说明
Agent 注册表 agents.yaml 中央 Agent 注册表,deploy.sh / agent-monitor.js 均从此读取配置
解析辅助脚本 scripts/parse_agents.py 解析 agents.yaml,供 deploy.sh / agent-monitor.js 等调用
四层记忆系统 skills/mem0-integration/ Mem0 + Qdrant + FTS5 本地检索
Agent Monitor agent-monitor.js 健康监控、自动重启、Telegram 通知(config-driven,读取 agents.yaml)
部署脚本 deploy.sh 服务管理、备份、回滚、调试命令(config-driven,读取 agents.yaml)
生命周期脚本 templates/onboard.sh, templates/offboard.sh 新 Agent 创建、Agent 下线与清理
环境变量文件 systemd/gateway.env, systemd/{agent_id}-gateway.env 升级安全的环境变量持久化
Systemd 服务模板 systemd/ 用户级和系统级服务定义
项目注册表 skills/mem0-integration/project_registry.yaml Agent-项目归属映射

2. 服务架构 (Hybrid Systemd)

架构图

┌─────────────────────────────────────────────────────────┐
│  System-level (/etc/systemd/system/)                    │
│  ┌───────────────────────────────────┐                  │
│  │ openclaw-agent-monitor.service    │ ← 健康监控守护进程 │
│  │ (Node.js, PID独立于gateway)       │                  │
│  └────────────┬──────────────────────┘                  │
│               │ monitors                                │
├───────────────┼─────────────────────────────────────────┤
│  User-level (~/.config/systemd/user/)                   │
│  ┌────────────▼──────────────────────┐                  │
│  │ openclaw-gateway.service          │ ← 主 Gateway     │
│  │ (port 18789)                      │                  │
│  │ EnvironmentFile=gateway.env       │                  │
│  ├───────────────────────────────────┤                  │
│  │ openclaw-gateway-{agent_id}.service │ ← 可选扩展 Agent │
│  │ EnvironmentFile={agent_id}-gateway.env │             │
│  └───────────────────────────────────┘                  │
└─────────────────────────────────────────────────────────┘

User-level vs System-level

属性 User-level (gateway) System-level (monitor)
路径 ~/.config/systemd/user/ /etc/systemd/system/
管理命令 systemctl --user ... systemctl ...
日志查看 journalctl --user -u <name> journalctl -u <name>
升级风险 — OpenClaw UI 可能覆盖 低 — 不受 UI 升级影响
依赖 需要 loginctl enable-linger 无特殊依赖

文件映射

模板 (workspace/systemd/) 安装位置 说明
openclaw-gateway-user.service ~/.config/systemd/user/openclaw-gateway.service 主 Gateway
agent-{agent_id}.service ~/.config/systemd/user/openclaw-gateway-{agent_id}.service 可选扩展 Agent
openclaw-agent-monitor.service /etc/systemd/system/openclaw-agent-monitor.service 监控
openclaw-gateway.service.legacy /etc/systemd/system/openclaw-gateway.service (已 masked) 废弃
gateway.env 原地引用 (不复制) 主 Gateway 环境变量
{agent_id}-gateway.env 原地引用 (不复制) 扩展 Agent 环境变量

3. 监控系统 (Agent Monitor)

文件: agent-monitor.js 服务: openclaw-agent-monitor.service (system-level) 配置: config-driven — 通过 scripts/parse_agents.py 解析 agents.yaml 获取待监控的 Agent 列表

功能

功能 说明
多服务监控 同时监控 gateway 及已注册的扩展 Agent
重启限制 5 分钟内最多 5 次重启,超限停止并报警
升级容忍 首次检测到服务停止后等待 60 秒,避免升级期间误报
心跳日志 每 10 分钟输出一次状态 (gateway=OK, {agent_id}=OK)
Telegram 通知 服务异常、重启失败时发送告警
日志记录 logs/agents/health-YYYY-MM-DD.log

监控流程

每 30 秒 → 检查 gateway 状态
         → 检查各扩展 Agent 状态
         → 如果正常: 重置故障计时器
         → 如果异常:
            首次: 记录时间,进入 grace period (60s)
            仍异常且已过 grace period:
              检查重启次数 → 未超限: 执行重启
                           → 已超限: 发送 critical 告警
每 10 分钟 → 输出心跳日志

配置参数 (构造函数)

参数 默认值 说明
maxRestarts 5 重启窗口内最大重启次数
restartWindow 300000 (5min) 重启计数窗口
gracePeriod 60000 (60s) 首次故障后的等待时间
heartbeatInterval 600000 (10min) 心跳日志间隔

4. 记忆系统

完整文档: docs/MEMORY_ARCHITECTURE.md (v2.1) 开发者文档: skills/mem0-integration/SKILL.md 多 Agent 管理: docs/MULTI_AGENT_MANAGEMENT.md (Hub-and-Spoke 模型、Onboarding、远程 Agent)

快速参考

  • Layer 1: Core Memory — MD 文件 (CORE_INDEX.md, IDENTITY.md, SOUL.md)
  • Layer 2: Daily Memory — MEMORY.md + memory/*.md, Git 版本控制
  • Layer 3: Short-term — SQLite FTS5 本地检索 (local_search.py)
  • Layer 4: Mem0 — Qdrant (mem0_v4_shared) + DashScope Embedding

关键依赖

依赖 版本 用途
Qdrant 1.15.3 (Docker) Layer 4 向量存储
mem0ai latest Layer 4 客户端
DashScope API text-embedding-v4 1024 维嵌入
SQLite FTS5 Python stdlib Layer 3 全文检索

5. 环境变量与 API 密钥

持久化策略

环境变量存放在 .env 文件中,通过 EnvironmentFile= 指令注入 systemd 服务。这种方式确保 OpenClaw UI 升级覆盖 .service 文件后,只需执行 ./deploy.sh fix-service 即可恢复。

文件 权限 被引用者
systemd/gateway.env 600 openclaw-gateway.service
systemd/{agent_id}-gateway.env 600 openclaw-gateway-{agent_id}.service

变量清单

变量名 说明 使用者
MEM0_DASHSCOPE_API_KEY DashScope API 密钥 mem0_client.py, session_init.py
OPENAI_API_BASE DashScope 兼容端点 mem0 SDK (旧版参数名)
OPENAI_BASE_URL DashScope 兼容端点 mem0 SDK (新版参数名)
TAVILY_API_KEY Tavily 搜索 API OpenClaw 核心

添加新变量

  1. 编辑 systemd/gateway.env (和/或 {agent_id}-gateway.env)
  2. 运行 systemctl --user daemon-reload
  3. 运行 ./deploy.sh restart

6. 调试流程

停止所有服务 (含监控)

./deploy.sh debug-stop

这会停止 gateway、各扩展 Agent 和 monitor,防止 monitor 在调试期间自动重启 gateway。

手动启动 Gateway (前台模式)

openclaw gateway start

查看日志

journalctl --user -u openclaw-gateway -f          # 主 gateway
journalctl --user -u openclaw-gateway-{agent_id} -f  # 扩展 Agent
journalctl -u openclaw-agent-monitor -f            # monitor

恢复服务

./deploy.sh debug-start

修复升级后的服务文件

./deploy.sh fix-service
./deploy.sh restart

7. 升级安全清单

OpenClaw UI 升级 (openclaw gateway install 或类似操作) 可能覆盖以下文件:

会被覆盖的文件

文件 风险 恢复方式
~/.config/systemd/user/openclaw-gateway.service EnvironmentFile= 行丢失 ./deploy.sh fix-service
OpenClaw 二进制 / Node 模块 正常升级行为 无需恢复

不会被覆盖的文件

文件 说明
workspace/systemd/gateway.env 环境变量安全
workspace/systemd/{agent_id}-gateway.env 环境变量安全
workspace/agent-monitor.js 自定义监控逻辑
workspace/deploy.sh 部署脚本
workspace/skills/mem0-integration/* 记忆系统代码
/etc/systemd/system/openclaw-agent-monitor.service 系统级服务

升级后操作

# 1. 恢复环境变量引用
./deploy.sh fix-service

# 2. 重启所有服务
./deploy.sh restart

# 3. 验证服务状态
./deploy.sh health

deploy.sh 命令速查

说明: deploy.shconfig-driven,通过 scripts/parse_agents.py 解析 agents.yaml 获取 Agent 列表,无需硬编码。

命令 说明
install 安装所有 systemd 服务并启动
start 启动 gateway + 扩展 Agent + monitor
stop 停止所有服务
restart 重启所有服务
status 显示所有服务状态
logs 显示最近日志
health 运行健康检查
backup 完整备份 (workspace + Qdrant snapshot + agent profiles)
backup quick 快速备份 (仅 workspace 文件)
restore <dir> 从备份目录恢复 workspace + profiles
restore-qdrant <file> 从 snapshot 恢复 Qdrant 数据
rollback 回滚到上一个 Git 提交
rollback-to <commit> 回滚到指定提交
debug-stop 停止所有服务 (含 monitor),安全调试
debug-start 调试完成后恢复所有服务
fix-service 升级后重新注入 EnvironmentFile=

变更日志

版本 日期 变更
1.0 2026-03-03 初始版本: 统一记忆系统与监控系统文档
1.1 2026-03-06 deploy.sh 增加 backup (full/quick)、restore、restore-qdrant 命令; memory_cleanup.py 实现实际删除逻辑; 新增 setup-cron.sh 自动化定时任务