深入理解OpenClaw技术架构与实现原理(上)
一句话概括
阿里云开发者公众号上由”踏天”撰写的 OpenClaw 技术架构深度解析(上篇),系统性梳理了从 Gateway 网关、Agentic Loop、调度系统、工具系统、Channels、上下文管理到 SubAgent 子智能体共 7 个核心模块的实现细节,并提出”OpenClaw 是 AI-Coding 软件构建范式开山之作”的论点。
实践内容
Gateway 关键配置项(原文 3.1.9)
{
"gateway": {
"port": 18789,
"bind": "loopback",
"mode": "local",
"auth": {
"mode": "token",
"token": "your-token"
},
"tls": {
"enabled": true,
"certPath": "/path/to/cert.pem",
"keyPath": "/path/to/key.pem"
},
"reload": {
"mode": "hybrid",
"debounceMs": 300
}
}
}Gateway 常用 CLI 命令(原文 3.1.10)
# 启动网关
openclaw gateway --port 18789
# 查看状态
openclaw gateway status
openclaw gateway status --deep # 深度检查
# 健康检查
openclaw gateway health
openclaw channels status --probe
# 发现局域网网关
openclaw gateway discover
# 查看日志
openclaw logs --followLinux systemd 安装(原文 3.1.7)
openclaw gateway install
systemctl --user enable --now openclaw-gateway.service配置热重载四档(原文 3.1.8)
| 模式 | 行为 |
|---|---|
off | 不重载 |
hot | 仅应用安全热更新 |
restart | 需要重启时自动重启 |
hybrid | 安全时热更新,必要时重启(默认) |
核心源码定位(原文 3.1.11)
| 模块 | 路径 |
|---|---|
| CLI 入口 | src/cli/gateway-cli/ |
| 客户端 | src/gateway/client.ts |
| 协议定义 | src/gateway/protocol/ |
| 服务端 HTTP | src/gateway/server-http.ts |
| 配置类型 | src/config/types.gateway.ts |
摘录
最近 OpenClaw 如日中天,俨然已经是当下最热门并实用的个人助理。OpenClaw 已经是我每日深度使用的效率工具,作为技术人,忍不住想系统性扒一下其技术架构与实现细节。当然了,本文也是通过与一堆 Agent 协作完成,包括 OpenClaw、OpenCode、ClaudeCode、NotebookLLM、DeRisk 等。OpenClaw 在面向个人助手方向上,不仅仅体现在其灵活先进的智能体架构,还有其围绕个人助手方向的各种工具与生态的完整实现,是各类技术与工具的集大成者。最让人惊讶的是,这些能力的基本全部通过 AI-Coding 实现,可以说彻底改变了软件开发的范式,而且清晰简洁的架构设计与表达,比传统人类编程的系统具有更高的标准,可以说是开启新的软件构建范式的开山之作,非常值得深入的研究。
如下图所示为 OpenClaw 的技术架构图,其架构设计上是以本地优先(Local-First)多端联动为核心,建立一个高度灵活且可拓展的个人 AI 助手系统。其架构可以概括为一个以 Gateway(网关)为核心的控制平面的分布式系统。Gateway 是 OpenClaw 的心脏,充当系统的单一控制平面——负责管理会话(Sessions)、状态感知(Presence)、配置、定时任务(Cron)、网络钩子(Webhooks)以及控制界面(Control UI)和 Canvas 宿主,通信协议基于 WebSocket(WS) 网络构建,为所有客户端、工具和事件提供统一的连接通道。
OpenClaw 的整个推理循环架构,也是构成整个系统执行的大脑思考核心。系统中所有的运行逻辑都由推理循环架构来控制,也就是 AgenticLoop——OpenClaw 的推理循环是一个事件驱动的架构:主循环(run.ts)负责错误处理、重试、profile 轮换;尝试层(attempt.ts)负责单次 LLM 调用的完整生命周期;事件订阅(subscribe.ts)处理流式响应和工具调用;工具循环由底层 SDK 自动管理,当模型返回
tool_use时自动执行工具并继续调用。
涉及实体
- OpenClaw —— 本文是其架构总览(含 Gateway / Agentic Loop / 调度 / 工具 / Channels / 上下文 / SubAgent 7 模块)
涉及主题
(本篇为单文档来源,主题待累计 ≥5 篇同议题来源后聚合)
我的评注
- 文章把 Gateway 抬到”心脏”的位置,强调其作为单一控制平面的角色——这与 Claude Code “本地 CLI + MCP” 的扁平架构形成对比。OpenClaw 选了一条更接近”个人级 PaaS”的路:所有能力先汇聚到 Gateway,再分发给 Channel/Agent/Node
- “AI-Coding 是开山之作”是作者最强烈的论点。但文章主要讲实现细节,并没有展开论述”为什么 AI 写出来比人写出来质量高”——这部分有待下篇或后续素材补充
- Gateway 的配置热重载分档(off/hot/restart/hybrid)是个值得借鉴的设计:一刀切的”重启即生效”或”全部热重载”都不够细腻,按更新内容的危险度分档更可控