于OpenClaw的设计原理以及技术架构解构分析以及工程实践(仅供参考)
在撰写本文前,必须澄清一个关键事实:OpenClaw(原名Clawdbot/Moltbot)是真实存在的开源AI智能体项目,由Peter Steinberger于2025年末开发并开源。
OpenClaw架构深度解构
一、核心设计哲学:本地优先的私有化智能体
OpenClaw的核心创新在于**分离”智能”与”代理”**:LLM提供推理能力,而Agent运行在用户完全控制的本地设备上 。这种架构实现了:
- 🔒 数据私有化:所有对话历史、文件操作均在本地处理
- 🌐 多通道统一:通过Gateway网关抽象WhatsApp/Telegram/Slack等异构消息通道
- ⚙️ 技能可组合:通过Markdown描述的Skills实现安全可控的自动化
flowchart TD
A[用户消息] --> B{Gateway
消息路由层}
B --> C[Channel Adapter
WhatsApp/Telegram/Slack]
B --> D[Agent Core
Pi运行时]
D --> E[LLM Provider
OpenAI/Anthropic/本地模型]
D --> F[Skills Registry
技能仓库]
F --> G[File System
本地操作]
F --> H[Web APIs
外部服务]
D --> I[Memory Layer
LanceDB/SQLite]
I --> J[长期记忆存储]
classDef gateway fill:#4CAF50,stroke:#388E3C,color:white
classDef agent fill:#2196F3,stroke:#0D47A1,color:white
classDef channel fill:#FF9800,stroke:#E65100,color:white
classDef skill fill:#9C27B0,stroke:#4A148C,color:white
classDef memory fill:#F44336,stroke:#B71C1C,color:white
class B gateway
class D agent
class C channel
class F skill
class I memory二、多Agent架构:隔离与路由的设计原理
2.1 多Agent实现机制
OpenClaw的多Agent并非传统微服务架构,而是通过逻辑隔离实现:
| 隔离维度 | 实现方式 | 技术价值 |
|---|---|---|
| 工作区隔离 | 每个agentId对应独立agentDir目录 | 防止文件操作越界 |
| 会话隔离 | 独立的SQLite会话数据库 | 避免上下文污染 |
| 模型配置 | 每个Agent可绑定不同LLM提供商 | 混合模型策略(如Opus推理+Flash日常) |
| 技能策略 | 通过tools.allow/tools.deny精细控制 | 安全沙箱 |
2.2 路由决策树
flowchart TD
A[入站消息] --> B{消息来源分析}
B -->|WhatsApp| C[提取accountId]
B -->|Telegram| D[提取chatId]
B -->|Slack| E[提取channelId]
C --> F{accountId路由表}
D --> G{chatId路由表}
E --> H{channelId路由表}
F --> I[Agent: personal]
F --> J[Agent: work]
G --> K[Agent: family]
H --> L[Agent: support]
I --> M[执行personal技能集]
J --> N[执行work技能集]
K --> O[执行family技能集]
L --> P[执行support技能集]
classDef router fill:#FFEB3B,stroke:#F57F17
classDef agent fill:#03A9F4,stroke:#01579B,color:white
class B,F,G,H router
class I,J,K,L,M,N,O,P agent💡 关键设计:路由发生在Gateway层,Agent Core无感知。这使得新增Agent无需修改核心逻辑,符合开闭原则。
三、关键实现核心:三层架构解耦
3.1 架构分层表
| 层级 | 组件 | 职责 | 技术栈 |
|---|---|---|---|
| 接入层 | Channel Adapters | 消息协议转换(WhatsApp Web/Telegram Bot API) | Puppeteer/Telegraf |
| 控制层 | Gateway | 会话管理、路由决策、技能调度 | Node.js + Commander.js |
| 执行层 | Pi Agent Core | 状态机管理、工具调用、记忆压缩 | @mariozechner/pi-agent-core |
| 扩展层 | Skills | 具体操作实现(文件/Shell/Web) | Markdown + Shell/Python/JS |
3.2 技能(Skills)加载机制
flowchart LR
A[用户请求] --> B(Gateway)
B --> C{技能匹配引擎}
C --> D[Workspace技能目录]
C --> E[User Home技能目录]
C --> F[内置技能库]
C --> G[插件扩展技能]
D --> H[技能优先级排序]
E --> H
F --> H
G --> H
H --> I[工具调用决策]
I --> J{是否允许调用?}
J -->|tools.allow匹配| K[执行技能脚本]
J -->|tools.deny拦截| L[返回安全拒绝]
K --> M[沙箱环境执行]
M --> N[结果返回LLM]⚠️ 安全设计:所有技能执行前经过
tools.allow策略过滤,且文件操作被重定向到沙箱路径。2026年1月曾发生341个恶意技能供应链攻击事件,凸显此设计必要性。
四、”链式调用”的真相:任务分解与子代理
OpenClaw不存在传统意义上的函数链式调用(如agent.use(skill1).then(skill2)),而是通过以下机制实现复杂任务编排:
4.1 两种任务编排模式
| 模式 | 触发方式 | 适用场景 | 实现原理 |
|---|---|---|---|
| LLM自主规划 | 用户自然语言指令 | 多步骤任务(”整理上周邮件并生成报告”) | LLM生成Plan → Gateway分步调度Skills |
| 子代理(Sub-agent) | 主Agent显式派遣 | 长期子任务(”监控GitHub仓库”) | 主Agent创建临时子Agent,共享会话但独立工作区 |
4.2 子代理工作流
sequenceDiagram
participant U as User
participant G as Gateway
participant MA as Main Agent
participant SA as Sub-agent
U->>G: “监控项目X的GitHub更新”
G->>MA: 路由到Main Agent
MA->>MA: 分析任务需长期监控
MA->>G: 请求创建Sub-agent
agentId=github-watcher
G->>SA: 初始化子代理(独立agentDir)
SA->>SA: 执行GitHub API轮询
loop 每5分钟
SA->>GitHub: 检查更新
alt 有新commit
SA->>MA: 回报新commit摘要
MA->>U: 通知用户“项目X有新提交”
end
end
MA->>G: 任务完成,销毁Sub-agent🔑 核心差异:子代理是完整Agent实例,拥有独立记忆和技能集,而非函数链。这保证了任务隔离性,避免主Agent状态污染。
五、关键注意事项与最佳实践
5.1 安全红线(必读)
| 风险点 | 防御措施 | 配置示例 |
|---|---|---|
| 技能供应链攻击 | 仅使用审核技能 + 本地验证 | openclaw skills audit |
| 文件系统越权 | 启用沙箱路径重定向 | sandbox.enabled=true |
| LLM提示注入 | 系统提示动态构建 + 工具过滤 | tools.deny=shell:* |
| 多账户混淆 | 严格accountId路由绑定 | 避免跨WhatsApp账号路由 |
5.2 性能优化建议
flowchart TD
A[高Token消耗] --> B{诊断方向}
B --> C[上下文过长?]
B --> D[重复工具调用?]
B --> E[模型选择不当?]
C --> F[启用记忆压缩
compaction.enabled=true]
D --> G[优化技能描述
减少模糊匹配]
E --> H[多Agent分工
Opus推理 + Flash日常]
F --> I[Token下降30-50%]
G --> I
H --> I
classDef issue fill:#F44336,stroke:#B71C1C,color:white
classDef solution fill:#4CAF50,stroke:#1B5E20,color:white
classDef result fill:#2196F3,stroke:#0D47A1,color:white
class A,C,D,E issue
class F,G,H solution
class I result5.3 中文环境特殊配置
1 | # ~/.openclaw/config.yaml |
六、心得:架构启示与行业影响
OpenClaw的成功不在于发明新技术,而在于工程化整合:
- 网关模式:将异构消息通道抽象为统一接口,类似API Gateway思想
- 私有化优先:在AI代理热潮中坚持本地优先,回应隐私焦虑
- 技能即插件:Markdown描述降低技能开发门槛,形成生态飞轮
📌 最后提醒:本文所有技术细节均基于2026年2月前的公开资料和官方最新文档。
OpenClaw作为活跃项目持续迭代,请以官方GitHub仓库(https://github.com/openclaw/openclaw)为准。切勿将本文推测性架构图视为官方API文档。

