OpenClaw 系统架构说明文档
📑 目录
第一章 系统概述
OpenClaw 是一个创新的分布式 AI Agent 运行框架,采用「本地优先(Local-First)」的设计理念。它通过集中式 Gateway 与多渠道集成的混合架构,实现了对多平台 AI 智能体的高效管理与调度。
本文档详细阐述 OpenClaw 的系统架构设计,涵盖 Gateway 核心组件、工具系统、会话管理、配置系统、安全与权限模型等核心模块。所有技术描述均基于官方文档和实际实现,确保技术准确性。
📌 文档说明:本文档旨在为技术架构师、开发人员和运维工程师提供全面的技术参考,帮助理解 OpenClaw 的设计理念、架构组成和最佳实践。
第二章 整体架构
2.1 架构概览
OpenClaw 采用分层架构设计,主要包含以下核心组件:
| 层级 | 组件 | 职责 |
|---|---|---|
| 用户交互层 | Channels | WhatsApp、Telegram、Discord、iMessage 等渠道集成 |
| 路由层 | Gateway | 消息路由、会话管理、工具调度 |
| Agent 层 | Agent Runtime | LLM 推理、工具调用、任务执行 |
| 工具层 | Tools | 文件操作、命令执行、浏览器控制等 |
| 扩展层 | Skills & Plugins | 自定义技能和插件扩展 |
| 资源层 | Workspace & Memory | 工作空间、记忆文件、配置存储 |
2.2 Gateway 核心地位
Gateway 是 OpenClaw 的核心中枢,负责:
- 消息路由:将来自不同渠道的消息路由到正确的会话
- 会话管理:维护会话状态、历史记录和上下文
- 工具调度:管理工具调用权限和执行策略
- 配置管理:支持热重载配置变更
- 认证授权:处理客户端认证和权限控制
Gateway 默认运行在端口 18789,支持 WebSocket 和 HTTP API 两种访问方式。
第三章 Gateway 核心组件
3.1 生命周期管理
Gateway 支持多种运行模式和管理命令:
# 启动 Gateway
openclaw gateway --port 18789
# 查看详细状态
openclaw gateway status --deep
# 重启 Gateway
openclaw gateway restart
# 查看日志
openclaw logs --follow
热重载模式:
off- 不重载配置hot- 仅应用安全变更restart- 需要重启时自动重启hybrid(默认)- 安全变更热应用,其他情况重启
3.2 认证机制
Gateway 默认需要认证,支持两种认证方式:
- Token 认证:通过
gateway.auth.token或OPENCLAW_GATEWAY_TOKEN配置 - 密码认证:通过
gateway.auth.password或OPENCLAW_GATEWAY_PASSWORD配置
⚠️ 安全提示:远程访问 Gateway 时,建议使用 Tailscale/VPN 或 SSH 隧道,避免直接暴露公网。
3.3 会话存储
Gateway 使用两层持久化存储管理会话:
1. 会话存储(sessions.json)
- 位置:
~/.openclaw/agents/<agentId>/sessions/sessions.json - 存储会话元数据:sessionKey、最后活动时间、Token 计数等
- 支持手动编辑和清理
2. 对话记录(*.jsonl)
- 位置:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl - 追加式记录完整对话历史和工具调用
- 支持树状结构(父子消息关系)
第四章 工具系统
4.1 工具概览
OpenClaw 提供第一类 Agent 工具,替代了旧的 openclaw-* 技能。工具是类型化的,无需 shell 调用,Agent 应直接使用这些工具。
核心工具列表:
| 工具组 | 工具名称 | 用途 |
|---|---|---|
| 文件系统 | read |
读取文件内容 |
write |
创建或覆盖文件 | |
edit |
精确编辑文件内容 | |
apply_patch |
应用代码补丁 | |
| 运行时 | exec |
执行 Shell 命令 |
process |
管理后台进程 | |
| 会话管理 | sessions_list |
列出会话 |
sessions_history |
获取会话历史 | |
sessions_send |
发送消息到会话 | |
sessions_spawn |
创建子 Agent 会话 | |
session_status |
查看会话状态 | |
| 记忆 | memory_search |
语义搜索记忆 |
memory_get |
获取记忆片段 | |
| Web | web_fetch |
获取网页内容 |
web_search |
网络搜索 | |
| UI 自动化 | browser |
浏览器控制 |
| 画布 | canvas |
画布渲染与控制 |
| 节点 | nodes |
控制配对节点设备 |
| 消息 | message |
发送消息和频道操作 |
| 定时任务 | cron |
管理定时任务和提醒 |
4.2 工具配置文件
OpenClaw 支持通过工具配置文件限制可用工具:
{
tools: {
profile: "coding", // 基础配置
deny: ["group:runtime"], // 拒绝运行时工具
byProvider: {
"google-antigravity": { profile: "minimal" }
}
}
}
预定义配置文件:
minimal- 仅session_statuscoding- 文件系统 + 运行时 + 会话 + 记忆 + 图像工具messaging- 消息工具组full- 无限制(默认)
工具组缩写:
group:runtime- exec, bash, processgroup:fs- read, write, edit, apply_patchgroup:sessions- sessions_*group:memory- memory_search, memory_getgroup:web- web_search, web_fetchgroup:ui- browser, canvas
第五章 会话管理
5.1 会话路由
OpenClaw 使用 sessionKey 唯一标识每个会话。会话路由策略由 session.scope 配置:
per-sender(默认)- 每个发送者一个会话per-channel- 每个频道一个会话global- 全局单一会话
会话重置触发器可通过 session.resetTriggers 配置,例如 ["/new", "/reset"]。
5.2 上下文压缩
当对话历史超过模型上下文窗口时,OpenClaw 自动进行压缩:
- 自动压缩:当 Token 数接近限制时触发
- 手动压缩:通过
/compact命令触发 - 压缩策略:保留最近消息,压缩早期对话为摘要
5.3 定时任务会话
Cron 任务支持两种会话目标:
| sessionTarget | payload.kind | 说明 |
|---|---|---|
main |
systemEvent |
在主会话中运行,通过心跳提示触发 |
isolated |
agentTurn |
在隔离会话中运行,独立执行 |
// 主会话提醒
{
sessionTarget: "main",
payload: { kind: "systemEvent", text: "提醒文本" }
}
// 隔离会话任务
{
sessionTarget: "isolated",
payload: {
kind: "agentTurn",
message: "执行任务",
model: "anthropic/claude-opus-4-6",
thinking: "high"
}
}
第六章 配置系统
6.1 配置文件位置
OpenClaw 配置文件采用分层优先级:
- 环境变量:
OPENCLAW_* - 命令行参数:
--config,--token - Agent 级配置:
~/.openclaw/agents/<id>/agent.json - 用户级配置:
~/.openclaw/openclaw.json - 系统级配置:
/etc/openclaw/openclaw.json - 默认值:内置默认配置
6.2 核心配置项
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-6",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
heartbeat: { every: "30m" },
skipBootstrap: false
},
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true }
}
}
},
routing: {
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"]
}
},
session: {
scope: "per-sender",
resetTriggers: ["/new", "/reset"],
reset: {
mode: "daily",
atHour: 4,
idleMinutes: 10080
}
},
tools: {
profile: "coding",
deny: ["group:runtime"]
},
gateway: {
port: 18789,
bind: "loopback",
reload: { mode: "hybrid" },
auth: {
token: "${SECRET:gateway_token}",
password: "${SECRET:gateway_password}"
}
}
}
6.3 Thinking 级别
OpenClaw 支持控制模型推理深度:
low- 快速响应,适合简单任务medium- 平衡速度与深度high- 深度推理,适合复杂任务
可通过 thinkingDefault 配置默认级别,或在对话中使用 /thinking high 临时切换。
第七章 安全与权限
7.1 命令执行安全
OpenClaw 提供多层命令执行安全控制:
执行模式(exec.ask):
off- 不询问,直接执行(需配合 allowlist)on-miss- allowlist 未命中时询问always- 每次执行都询问
允许列表(exec.allowlist):
{
exec: {
ask: "on-miss",
allowlist: [
"ls*",
"cat*",
"npm install",
"git status"
]
}
}
⚠️ 安全建议:生产环境建议使用 ask: "always" 或严格的 allowlist,避免意外执行危险命令。
7.2 沙箱隔离
OpenClaw 支持沙箱模式限制 Agent 访问范围:
{
agents: {
defaults: {
sandbox: "inherit" // 或 "require"
}
}
}
inherit- 继承父进程权限require- 强制沙箱隔离
沙箱启用时,工具操作限制在 ~/.openclaw/sandboxes 目录下,除非 workspaceAccess 配置为 "rw"。
7.3 渠道安全
渠道级别的安全控制:
allowFrom- 允许的消息发送者列表requireMention- 群聊中需要 @ 提及才响应mentionPatterns- 自定义提及模式
{
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true }
}
}
},
routing: {
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"]
}
}
}
第八章 与传统工具对比
| 功能 | OpenClaw | 传统 CLI 工具 |
|---|---|---|
| 交互方式 | 自然语言对话 | 命令行语法 |
| 上下文理解 | 多轮对话记忆 | 无状态执行 |
| 错误处理 | 自动诊断修复 | 手动排查 |
| 多渠道支持 | WhatsApp/Telegram/Discord 等 | 终端单一界面 |
| 任务编排 | 自动拆解多步骤任务 | 手动编写脚本 |
| 学习记忆 | MEMORY.md 长期记忆 | 无记忆能力 |
| 扩展能力 | Skills/Plugins 生态系统 | 手动编写工具 |
第九章 Agent 工作空间
9.1 工作空间位置
工作空间是 Agent 的家目录,用于文件操作和上下文记忆:
- 默认位置:
~/.openclaw/workspace - 环境变量:
OPENCLAW_PROFILE可设置不同配置档 - 配置覆盖:
agent.workspace可自定义路径
💡 建议:将工作空间初始化为 Git 仓库(建议私有),备份 AGENTS.md 和记忆文件。
9.2 工作空间文件
| 文件 | 用途 | 加载时机 |
|---|---|---|
AGENTS.md |
Agent 操作指令和记忆使用规则 | 每会话 |
SOUL.md |
角色设定、语气和边界 | 每会话 |
USER.md |
用户信息和称呼方式 | 每会话 |
IDENTITY.md |
Agent 名称、风格和 emoji | 每会话 |
TOOLS.md |
本地工具和约定说明 | 每会话 |
HEARTBEAT.md |
心跳任务检查清单 | 心跳时 |
MEMORY.md |
长期记忆(主会话) | 主会话 |
BOOTSTRAP.md |
首次运行仪式(仅新建时) | 首次运行 |
9.3 记忆系统
OpenClaw 的记忆系统包含两个层次:
1. 每日记录(memory/YYYY-MM-DD.md)
- 记录当天的原始活动日志
- 自动创建,无需手动管理
2. 长期记忆(MEMORY.md)
- 存储重要决策、经验教训
- 仅在主会话(与用户直接对话)加载
- 群聊/共享会话不加载(安全考虑)
附录:快速参考
常用命令
# Gateway 管理
openclaw gateway status
openclaw gateway restart
openclaw gateway stop
# 日志查看
openclaw logs --follow
openclaw logs --level debug
# 渠道管理
openclaw channels status
openclaw channels login
# 会话管理
openclaw sessions list
openclaw sessions cleanup --dry-run
# 健康检查
openclaw doctor
会话控制命令
/new - 新建会话
/reset - 重置当前会话
/compact - 手动压缩上下文
/model - 切换模型
/thinking - 设置推理级别
/status - 查看会话状态
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)