OpenClaw 是一款专为 AI 代理打造的自托管网关,旨在打破聊天应用与智能助手之间的隔阂。它不仅仅是一个连接器,更是一个强大的中枢,能将 WhatsApp 、Telegram 、Discord 、iMessage 等主流通讯平台无缝接入像 Pi 这样具备编码能力的 AI 代理。
通过在自己的设备或服务器上运行 OpenClaw ,我们获得了一个完全属于自己的“AI 大脑中枢”。它不仅是一个多渠道的聚合器,更是一个代理原生的操作系统——专为处理复杂的工具调用、会话记忆管理和多代理路由而设计。这意味着,无论我们身在何处,通过哪个平台,都能随时唤起我们的私人 AI 助手,而无需担忧数据隐私或依赖不稳定的第三方托管服务。OpenClaw 让我们的 AI 助手真正驻留在自己的硬件上,听从我们的规则,为我们构建一个安全、统一且高度可扩展的智能交互网络。
虽然关于 OpenClaw 的部署文章已经随处可见,但是当你安装并实际使用时,如果你不了解 OpenClaw 设计架构的精妙之处,你很难真正知道 OpenClaw 能干什么、怎么干,以及它的边界和限制在哪里。本篇文章,我将深入 OpenClaw 的工作原理,让你全面了解这个系统。
OpenClaw 的原理可以参考下图。

channel + account + 会话键(sessionKey) + 消息体。这块可以理解成:Gateway 左侧的“外部世界接入层”。
它主要做两件事:
所以这块的作用不是“处理 AI”,而是:把杂乱的外部渠道世界,整理成 Gateway 能懂的统一输入输出。 没有这层,Gateway 就没法稳定接那么多不同平台。
图里把 plugins 画在左边,是从“概念层”强调它在入口侧扩展渠道能力,但在“实现层”上,插件系统确实是 Gateway 启动时加载、注册到 Gateway 内部 的(不是独立外部服务)。所以它不只是“前置动作”,而是 Gateway 运行时的一部分:
Gateway 就是 OpenClaw 的“大脑中枢 + 交通枢纽 + 安全门禁”。
它的定位不是某个聊天渠道,也不是单纯的 API 服务,而是把所有能力组织起来的核心层:
sessionKey、上下文、最后路由目标、线程信息,让“这次对话是谁、在哪、怎么回”始终可追踪。Gateway 的价值是把“多端、多渠道、多能力”变成一个一致、可控、可扩展的系统。没有它,OpenClaw 就会退化成一堆彼此割裂的小工具。
status/health/logs 看到的是同一套运行时,不会出现“CLI 说正常,Web 说异常”的多套口径问题。telegram:123、discord:abc、feishu:xxx)。channel + account + peer (chat/group/thread) 生成 sessionKey,决定这条消息落到哪个会话。所以在 OpenClaw 视角,默认是:同一个“人类用户”在不同渠道,先被当成不同身份流量处理。
如何把同一个人的不同渠道身份认成同为一个人呢?
会不会“合并”取决于配置策略,不是自动魔法识别。如果你配置了 identityLinks,可以把跨平台 ID 映射到同一 canonical identity,实现“跨渠道同人合并”。不配置的话,通常按渠道隔离或按会话策略合并,不会无脑认同一个人。
消息的入站流程需要先了解 OpenClaw 里的 Agent 、Session 、Context 设计。

.class 文件。new 创建出来的实例。Session 是“和谁聊、在哪条线聊”的记忆边界。消息入站的具体流程为:
入站先读 Session
sessionKey 找会话条目( sessionId 、thinking/model override 、lastChannel/lastTo 等)。sessionId。临时生成 Context
模型执行后,写 Transcript
sessionId 对应 JSONL (物理历史)。写回 Session 元数据
updatedAt、lastChannel/lastTo、deliveryContext、思考级别/模型覆盖、token 统计等。可以按渠道、群/团队、账号、甚至具体会话目标去分流到不同 Agent 。可以把它看成“分单规则引擎”,输入一条消息后按优先级匹配:
配置维度(可控项):
会话类型分三大类:
DM (私聊)
Group (群聊)
Channel (频道/公开通道)
DM (私聊):重点是“私聊是否合并/拆分会话” → dmScope
Group (群聊):重点是“群是否允许进入、是否必须 @ 、谁可触发” → groupPolicy / groupAllowFrom / groups.<id>.requireMention
Channel (公开频道):重点是“频道级 allowlist 与提及规则、按频道绑定到哪个 Agent”(例如 Discord/Slack 常是 guild/channel 级配置 + bindings )
我们展开讲一下私聊场景,DM 的关键是 dmScope
它是“私聊会话切分策略”。也就是:当不同人、不同渠道来私聊时,OpenClaw 要不要把他们放到同一条记忆线上。你可以把它理解成“秘书的档案柜分隔规则”。
四种常见策略:
额外维度:
先有 Agent ID ,再生成 SessionKey 。
它的输入维度是:AgentId + 会话类型 + 渠道/账号/对象 ID + 线程信息 + DM 切分策略。
根据你的配置,会生成对应的 SessionKey ,然后再绑定到具体的 Session 上面去。
AgentId + SessionKey 的组合意义:
整个会话的交互时序图如下。

Pi agent 可以理解成 OpenClaw 的“推理执行内核”。
它不是渠道,也不是网关,而是负责“真正思考和产出”的那层。
核心作用:
Agent / Session / Context 是 OpenClaw 的整体架构概念(主要由 Gateway + 运行时共同管理)。 Pi agent 主要负责“执行推理回合”(吃 Context 、跑模型、调用工具、产出结果)。
Web 偏在线运营控制台(可视化 + 实时),CLI:偏全量运维与自动化入口(可脚本、可批处理、覆盖更全)。
Web ( Control UI )能力
OpenClaw CLI 能力
Gateway 里跑着一个一直在线的定时器( scheduler ),负责管理所有定时任务。这些定时任务都会被保存到磁盘上,所以就算服务重启,任务也不会丢失。到了设定的时间点,系统就会触发一次 Agent 的执行。执行完的结果可以选择:
每个 cron 任务主要包含以下几个关键信息:
最核心的两种执行方式对比
iOS/Android nodes 即“移动端节点”,把手机变成 OpenClaw 网络里的一个可控设备角色。
它的作用主要有三件事:
现在 iOS/Android node 就是 OpenClaw 的“移动端能力节点 + 控制入口”,让手机成为整个系统里的第一类成员,而不是外挂设备。
Tailscale 是一个非常好用的现代虚拟组网 / Mesh VPN 工具,简单来说就是:
它能让你把分散在世界各地的设备(手机、电脑、NAS 、服务器、树莓派、云服务器等)像处在同一个局域网里一样互相访问,而且整个过程非常简单、安全、几乎零配置。
openclaw 里默认集成里 tailscale ,默认是关闭的状态。tailscale 模块本质上是 给 Gateway 做“安全远程入口” 。通过 tailscale 你可以在任何地方都能够访问你的 web 管理入口。
不过 openclaw 在中国大陆的网络环境下有点水土不服,你可以使用星空组网进行平替。
openclaw 牛的点在于永久性的记忆,它的记忆机制是让它感觉“像真人一样记住东西”的关键核心:不同于大多数 AI 靠短暂的上下文窗口硬撑,OpenClaw 把记忆彻底外化到磁盘上的纯 Markdown 文件里,文件本身就是真相来源,模型每次只加载需要的内容,就像人类翻笔记而不是把所有人生经历塞进大脑。
具体来说,它采用非常简洁的两层设计:短期/临时记忆靠每天一个追加式文件(通常在 memory/YYYY-MM-DD.md 里),记录当天的决策、运行日志和上下文,启动会话时自动把今天 + 昨天的内容加载进来,提供最近的连续感却不会把 token 撑爆;长期/精选记忆则集中在单个核心文件 MEMORY.md (也有人叫它“灵魂文件”),里面放用户偏好、重要结论、项目约定、不能忘的关键事实,只有在私密个人会话中才会加载(群聊或共享场景故意不读,保护隐私)。此外还有可选的会话记录( sessions/ 目录下),完整对话历史可以被搜索或定期摘要归档。
为了“想起来”东西,OpenClaw 不依赖黑盒向量数据库,而是用混合检索( BM25 关键词 + 向量相似度)在这些 Markdown 文件上建小索引,Agent 需要时自己调用工具去搜(比如“memory_search”),真正需要的内容才 page in 到上下文里。整个过程透明到极致:你随时用任意文本编辑器打开、修改、删除 AI 的“记忆”,没有隐藏状态;当上下文太长时,Agent 还能主动把关键点 flush 到 MEMORY.md 再压缩历史,避免遗忘重要信息。这种“磁盘是硬盘、上下文是缓存”的哲学,让 OpenClaw 在本地 Agent 里拥有了罕见的持久性和可控性——它不会每次重启就失忆,但也完全由你掌控,不会偷偷积累你不想留的东西。简单、开放、却意外强大,这就是很多人觉得它“像活的”原因。
技能的存在,还可以让他自己完善自己的能力。比如你可以让它创建一个邮件收发的技能,你只需第一次详细告诉它你的 SMTP/IMAP 配置(服务器地址、端口、用户名、密码或 app-specific password 、加密方式等),并描述期望的行为(如“用我的 Gmail 发带附件的日报”“自动回复特定关键词的邮件”),OpenClaw 就会自己生成一个专属的“邮件收发技能”——它会写出 SKILL.md 文件(包含工具描述、调用参数、错误处理逻辑),并关联必要的 Python/Node 脚本或内置工具调用(如 smtplib 或 imaplib )。一旦保存进 skills 目录,这个技能就永久可用。
这些自我进化的能力源于 OpenClaw 的核心插件系统和内存机制,允许 Agent 不只是执行指令,而是像活的实体一样,通过代码生成、测试和持久存储来扩展自身边界,最终从一个通用助手变成高度个性化的生产力伙伴。
要是学累了,就来打打游戏吧
1
zz177060 3 天前 via iPhone
我理解,就是个 ai 融合通信调度系统。
|
2
287854442 3 天前
写的挺好的。这年头能耐心写这么多的太少了,能看完这么长的都不多。。我要发个感谢
|
3
kenshinhu 2 天前
agent loop 这里也可以补充一下
|
4
simplejian OP @287854442 哈哈夸得我都不好意思了。我在用 openclaw 搭建一个个人助手的时候,发现多各渠道接入的时候,消息收发和记忆总是调不出我想要的效果,所以就拉来了源代码看了一下。
|
5
tangzhiyong 16 小时 19 分钟前
说不定这边文章都是叫 openclaw 做的
|