用了大半年 OpenClaw,这篇把它在我机器上真实的样子拆开。不是官方文档转述,是我对着自己的目录、会话 key、配置一条条核出来的。
四层结构
聊天渠道(微信/网页/…) ──> Gateway(常驻网关进程) ──> Agent(模型+工具) ──> Workspace(Markdown 文件们)
1. Gateway 网关。 本机常驻的 WebSocket 服务,一切的中枢:渠道消息进它,Agent 调用经它,定时任务、日志都归它管。CLI 里 openclaw gateway 一族负责起停查。我 5 月第一次升级时就是 CLI 升到 2026.5.18 后网关服务没对齐,重装服务才恢复——它是独立于 CLI 的常驻进程,这个认知能解释一大半"明明改了为什么不生效"(配置热改后多数要重启网关加载,我 9/25 那次 thinkingDefault 改完就是 15:56 重启才生效)。
2. Sessions 会话。 每条聊天线都是一个持久会话,key 长这样(我自己的):
agent:main:openclaw-weixin:direct:o9cq…@im.wechat
读法:哪个agent : 哪条渠道 : 私聊还是群聊 : 对方是谁。每个会话有独立的历史与上下文,openclaw sessions list、openclaw transcripts 可以直接翻存储的会话和转录——透明,没有黑盒。
3. Agent 与工具。 模型负责想,工具负责做:exec(shell)、read/write/edit、browser、cron、web_search 这些,按策略过滤后授权给会话。工具清单不是背出来的,是每次运行时注入的元数据——所以"我的工具箱"里我能干啥,取决于配置,不取决于传说。子 agent(sessions_spawn)用来把长任务丢后台,跑完把结果推回来,主会话不陪着卡死。
4. Workspace 工作区。 这是 OpenClaw 最有味道的设计:人格和记忆全是 Markdown 文件。我的 D:\openClaw\workspace 根目录:
| 文件 | 作用 |
|---|---|
| AGENTS.md | 工作区守则(记忆规则、红线、执行约定) |
| SOUL.md | 性格与说话方式 |
| IDENTITY.md / USER.md | 它是谁 / 我是谁 |
| TOOLS.md | 本机工具操作笔记 |
| MEMORY.md | 长期记忆(精炼画像) |
| memory/daily/ | 每日原始日志 YYYY-MM-DD.md |
| memory/projects/ | 专项档案(按需读取,不常驻注入) |
每次会话开始,这几个文件被注入进上下文——所以"每次都是全新醒来,文件即记忆"。会话之间它什么都不记得,但读完文件它就知道我是谁、进度到哪、哪些事不能干。
两个值得聊的设计取舍
取舍一:记忆在文件,也在索引。 注入的只有那几份 bootstrap 文件(我 9/25 降本时把这块从 42KB 瘦到 20KB,因为每次会话都背着它们跑 token)。历史日志靠 memory_search 语义检索按需捞回,另有 wiki 知识库目录(~\.openclaw\wiki\)。文件是事实源,索引是加速层——索引坏了数据不丢,这个架构对我这种要长期攒记忆的人很关键,具体故事见系列第五篇。
取舍二:上下文是成本,也是纪律。 大模型按 token 计费,注入越多越贵越慢。所以我把"详细操作手册"都沉到 projects 档案里,常驻的只留高频守则和指针;心跳(heartbeat,每 30 分钟自动唤醒跑一轮模型)直接禁用,用便宜的 cron + 纯脚本接管。这套账算下来是第六篇的主题。
架构层自查命令
openclaw status # 网关/渠道/模型/最近会话总览
openclaw sessions list # 存量会话
openclaw agents list # 隔离 agent(工作区+路由)
openclaw channels list # 接了哪些聊天渠道
openclaw config get # 当前配置
一句话总结架构:网关是身体,会话是神经,工具是手,Markdown 文件是记忆。搞清楚这四层,后面装模型、接微信、修记忆、排任务都是按图索骥。
「OpenClaw 实战」系列(随我用随更):① Windows 安装上线篇 · ② 架构扫盲 · ③ 控制台与日常使用 · ④ 模型接入 · ⑤ 记忆系统 · ⑥ 定时任务与降本 · ⑦ 增加依赖