OpenClaw 深度解析(一):架构设计与核心概念
·
本文适合:刚接触 OpenClaw 的新手,想系统了解架构设计
前置知识:Python 基础、命令行使用经验
目录
1. 什么是 OpenClaw?
1.1 定义
OpenClaw 是一个开源的 AI Agent 运行时框架,让大模型能够:
- 读写本地文件
- 执行系统命令
- 访问互联网
- 连接多个通讯平台(微信、Telegram、飞书等)
- 拥有长期记忆
本质:在大模型和你的电脑/手机之间架一座桥。
1.2 与同类工具对比
| 特性 | OpenClaw | Claude Desktop | Dify |
|---|---|---|---|
| 本地文件访问 | ✅ 完整 | ⚠️ 受限 | ❌ |
| 命令执行 | ✅ 可配置 | ❌ | ⚠️ |
| 多平台连接 | ✅ 10+ | ⚠️ 有限 | ❌ |
| 开源程度 | ✅ 完全开源 | ❌ 闭源 | ✅ |
| 自定义技能 | ✅ 简单 | ❌ | ⚠️ |
2. 核心架构图解
2.1 整体架构
┌─────────────────────────────────────────────────────────┐
│ 用户设备 │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 微信 │ │ Telegram │ │ 飞书 │ ... │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ Gateway │ ← 消息路由中心 │
│ │ (127.0.0.1) │ │
│ └────────┬────────┘ │
└───────────────────────┼─────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌───────▼───────┐ ┌─────▼─────┐ ┌──────▼──────┐
│ Session │ │ Tools │ │ Memory │
│ (会话管理) │ │ (工具集) │ │ (记忆系统) │
└───────┬───────┘ └─────┬─────┘ └─────────────┘
│ │
│ ┌────────▼────────┐
│ │ Workspace │
│ │ (工作目录) │
│ └─────────────────┘
│
┌───────▼───────────────────────────────┐
│ 大模型 API │
│ ┌─────────┐ ┌─────────┐ ┌────────┐ │
│ │ Qwen │ │ Claude │ │ GPT │ │
│ └─────────┘ └─────────┘ └────────┘ │
└───────────────────────────────────────┘
2.2 进程模型
openclaw gateway start
│
▼
┌─────────────────────┐
│ Gateway 进程 │
│ - HTTP Server │ 监听 127.0.0.1:18789
│ - Session Manager │ 管理多个会话
│ - Tool Executor │ 执行工具调用
│ - Memory Store │ 存储记忆数据
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Agent 会话进程 │ ← 每个会话独立
│ - 模型对话 │
│ - 工具调用 │
│ - 状态维护 │
└─────────────────────┘
3. 关键组件详解
3.1 Gateway(网关)
职责:消息路由、会话管理、工具调度
配置文件:~/.openclaw/openclaw.json
{
"gateway": {
"host": "127.0.0.1",
"port": 18789,
"workspace": "~/.openclaw/workspace"
},
"tools": {
"profile": "coding",
"fs": {
"workspaceOnly": true
},
"denyCommands": [
"shutdown", "taskkill", "format", "del"
]
},
"channels": {
"feishu": {
"enabled": true,
"mode": "allowlist",
"allowlist": ["chat_xxxxx"]
}
}
}
关键配置说明:
| 配置项 | 含义 | 推荐值 |
|---|---|---|
tools.profile |
工具权限级别 | coding / full / minimal |
fs.workspaceOnly |
限制文件访问范围 | true(安全) |
denyCommands |
禁止执行的命令 | 高危命令列表 |
3.2 Session(会话)
定义:一次完整的对话上下文,包含历史消息、状态、工具使用记录。
会话类型:
main:主会话(直接对话)subagent:子代理(后台任务)isolated:隔离会话(独立上下文)
查看会话:
openclaw sessions list
会话数据结构:
{
"sessionKey": "abc123",
"channel": "webchat",
"messages": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮你?"}
],
"tools": {
"used": ["read", "write", "exec"],
"cost": 0.002
}
}
3.3 Tools(工具集)
内置工具:
| 工具 | 功能 | 示例 |
|---|---|---|
read |
读取文件 | read(path="config.json") |
write |
写入文件 | write(path="test.txt", content="hello") |
edit |
编辑文件 | edit(path="main.py", oldText="x", newText="y") |
exec |
执行命令 | exec(command="python test.py") |
web_search |
搜索网络 | web_search(query="AI news") |
web_fetch |
抓取网页 | web_fetch(url="https://example.com") |
sessions_spawn |
创建子代理 | sessions_spawn(task="分析数据") |
工具调用格式(Agent 内部):
{
"tool": "read",
"parameters": {
"path": "~/.openclaw/workspace/MEMORY.md"
}
}
3.4 Memory(记忆系统)
三层记忆结构:
┌─────────────────────────────────────┐
│ 短期记忆 (Session Context) │
│ - 当前对话历史 │
│ - 工具调用记录 │
│ - 会话结束后清除 │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 中期记忆 (memory/YYYY-MM-DD.md) │
│ - 每日日志 │
│ - 临时笔记 │
│ - 按日期自动归档 │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 长期记忆 (MEMORY.md) │
│ - 重要决策 │
│ - 用户偏好 │
│ - 经验教训 │
│ - 手动 curated │
└─────────────────────────────────────┘
记忆文件示例:
# MEMORY.md - 长期记忆
## 关于用户
- 名字:老大
- 时区:Asia/Shanghai
- 偏好:不喜欢废话,直接给结果
## 项目进度
- 股票指标工具开发完成
- 回测系统开发中
- 每日涨幅榜分析待实现
## 经验教训
1. 完成任务后立即更新 MEMORY.md
2. 执行命令前必须告知用户
3. 批量修改文件前先备份
4. 消息流转流程
4.1 用户消息 → Agent 回复
1. 用户发送消息
│
▼
2. Channel 接收(微信/Telegram/飞书)
│
▼
3. Gateway 路由到对应 Session
│
▼
4. Session 将消息 + 历史上下文打包
│
▼
5. 发送到大模型 API
│
▼
6. 大模型返回回复 + 工具调用请求
│
▼
7. Gateway 执行工具(读文件/运行命令等)
│
▼
8. 工具执行结果返回给大模型
│
▼
9. 大模型生成最终回复
│
▼
10. Gateway 通过 Channel 发送给用户
4.2 工具调用示例
用户:帮我查一下今天的天气
Agent 思考:
{
"thought": "用户想查天气,我需要用 web_search 工具搜索",
"tool": "web_search",
"parameters": {
"query": "北京天气 2026-03-16"
}
}
Gateway 执行:
# 内部调用 Brave Search API
curl "https://api.search.brave.com/..."
工具返回:
{
"results": [
{"title": "北京天气预报", "snippet": "晴,15-25°C..."}
]
}
Agent 最终回复:
今天北京天气:晴,气温 15-25°C,适合户外活动。
5. 实战:第一个 Agent 交互
5.1 环境准备
# 1. 安装 OpenClaw
npm install -g openclaw
# 2. 启动 Gateway
openclaw gateway start
# 3. 检查状态
openclaw gateway status
5.2 配置模型
编辑 ~/.openclaw/openclaw.json:
{
"models": {
"default": "qwen3.5-plus",
"providers": {
"bailian": {
"apiKey": "sk-xxxxx",
"models": ["qwen3.5-plus", "qwen3.5-turbo"]
}
}
}
}
5.3 开始对话
Web 界面:访问 http://127.0.0.1:18789
命令行:
openclaw chat "你好,介绍一下你自己"
集成到微信:
- 运行
openclaw channel wechat - 扫码登录
- 在微信中直接对话
5.4 第一个任务:读取文件
用户:帮我看看 MEMORY.md 里记了什么
Agent 工具调用:
read(path="~/.openclaw/workspace/MEMORY.md")
执行流程:
- Gateway 解析工具调用
- 检查文件路径是否在 workspace 内(安全校验)
- 读取文件内容
- 返回给 Agent
- Agent 总结后回复用户
6. 常见问题 FAQ
Q1: Gateway 启动失败怎么办?
检查步骤:
# 1. 查看端口是否被占用
netstat -ano | findstr :18789
# 2. 查看日志
openclaw gateway logs
# 3. 重置 Gateway
openclaw gateway restart
Q2: 工具调用被拒绝?
原因:
- 文件路径超出 workspace 范围
- 命令在 denyCommands 黑名单中
- tools.profile 权限不足
解决:
// openclaw.json
{
"tools": {
"profile": "coding", // 改为 full(谨慎)
"fs": {
"workspaceOnly": false // 允许访问 workspace 外(危险)
}
}
}
Q3: 如何添加自定义工具?
步骤:
- 创建 Skill 目录:
~/.openclaw/workspace/skills/my-skill/ - 编写
SKILL.md和工具脚本 - 在
openclaw.json中注册 - 重启 Gateway
示例:
# SKILL.md
## 功能
发送飞书消息
## 工具
- feishu_send_message(to, content)
Q4: 会话太多怎么管理?
# 列出所有会话
openclaw sessions list
# 查看会话详情
openclaw sessions show <sessionKey>
# 删除旧会话
openclaw sessions delete <sessionKey>
# 清理所有过期会话
openclaw sessions prune
Q5: 如何备份记忆数据?
# 备份整个 workspace
cp -r ~/.openclaw/workspace ~/.openclaw/workspace.bak
# 只备份记忆文件
cp ~/.openclaw/workspace/MEMORY.md ~/backup/
cp -r ~/.openclaw/workspace/memory ~/backup/
总结
OpenClaw 的核心价值:
- 开放:完全开源,可审计,可定制
- 连接:打通大模型与本地资源
- 安全:多层防护,权限可控
- 扩展:Skill 系统,无限可能
作者:阿财 | 更新时间:2026-03-16
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)