最终章,龙虾openclaw给我们的宝藏

今天,这个系列终于迎来了终章~,非常重要的一章。
从第一篇”这龙虾到底是个啥”到今天,我们拆了 Gateway、Runtime、Skill、Tool、Memory、Channel、Workspace、Trace、Sandbox、MCP、Plugin——OpenClaw 的螺丝钉快被我们拧了个遍。
最后一篇,不拆新东西了。我们退后一步,看看这趟旅程到底教会了我们什么。不是”OpenClaw 用了什么技术栈”——那个 GPT 也能回答你。
我想聊的是它做对了哪些架构决策,以及——如果你要自己搭一个 AI Agent 系统,你能从中学到什么。
先说结论:OpenClaw 最厉害的不是它的代码,是它在每一个岔路口都选了更简单的那条路。单进程而不是微服务。Markdown 文件而不是数据库。配对码而不是 OAuth。自然语言而不是 YAML 配置。它一直在拒绝”工程师的本能”——我们被训练出来的”复杂即正确”的肌肉记忆。这份克制,比任何技术都值钱。
· · ·
十个决策,十个「反直觉」的选择
我挑了 OpenClaw 最让我”哇”的十个决策。每个决策拉出来都能单独写一篇文章——事实上我们前面九篇就是在干这事。这里快速复盘,附带”如果你的项目遇到类似问题,该怎么做”。
① Gateway 单进程,不拆微服务
为什么对:Agent 系统的核心瓶颈是状态一致性,不是吞吐量。一个进程 hold 住所有连接、session、memory——没有网络往返、没有分布式事务、没有”谁手里有上下文”的问题。
什么时候你也该这么干:用户量在百到千级、Agent 需要频繁访问本地文件/内存状态、你希望部署就是一条命令。
什么时候别这么干:用户量万级以上、有独立团队维护不同模块、需要独立扩缩容。
② 消息渠道用配对码,不用 OAuth
为什么对:OAuth 需要申请 App ID、配 callback URL、维护 token 刷新——这对个人用户来说是天堑。配对码只需要 Agent 生成一个随机数,用户在聊天框里敲进去——两秒搞定。安全模型直观:”没有码的人不能跟我的 Agent 说话”。
什么时候你也该这么干:个人助手、小团队 Bot、安全需求不涉及企业 SSO。
③ Skill 用 Markdown,不用代码
为什么对:降低创作门槛——非程序员能写、Agent 自己能写/改、Git diff 友好。Skill 的目标不是”精确执行”,而是”教会 Agent”——Markdown 的模糊性在这里反而是优势(Agent 自己理解上下文,不需要精确到每个参数的代码)。
什么时候你也该这么干:需要用户自定义 Agent 行为、希望 Agent 能自我改进(从经验中写 Skill)。
什么时候别这么干:需要复杂计算、需要精确的类型约束、外部 API 有严格的调用格式要求。
④ Memory 用 Markdown 文件,不用向量库
为什么对:人类可读可编辑、Git 可版本、Agent 可操作(write_file 就是它写记忆的方式)。存储层用文件(简洁),检索层用向量(高效)——两层解耦,互不锁定。数据量级(几百条记忆)不需要数据库。
什么时候你也该这么干:个人知识管理、记忆量在千条以内、希望用户能手动修正 Agent 的记忆。
⑤ Tool 输入输出全部 JSON Schema
为什么对:TypeBox 定义一次 → TypeScript 类型 + JSON Schema + 运行时校验器全部自动生成。LLM 通过读 Schema 文本来理解工具——Schema 的 description 写得好坏,直接决定 LLM 会不会用这个工具。类型安全贯穿整个工具链。
代价:所有工具必须写 Schema,初始开发成本增加。但一次写好,三个地方受益。
⑥ Workspace 是文件系统,不是数据库
为什么对:Agent 的配置、记忆、会话——全部 Markdown/JSONL 文件。人类可读、Agent 可编辑、Git 可版本、备份就是 cp。调试时 cat 一个文件就能看到 Agent 的完整状态。个人 Agent 的量级下,数据库是过度设计。
⑦ Trace 是结构化事件流,不是散落日志
为什么对:每个事件有统一的 TypeBox Schema——llm_call、tool_exec、gateway、memory——按时间顺序排列。不是”出问题时去翻日志”,而是”出问题后回放完整推理链”。从”猜”变成”看”。
⑧ 沙箱默认隔离非主会话
为什么对:sandbox.mode: “non-main”——主会话(你自己在聊的)不进沙箱,体验优先。群聊、Discord、子 Agent spawn 自动进 Docker。个人不牺牲体验,第三方才隔离——这个信任梯度设计得非常实际。
⑨ Plugin 和 Skill 分工明确
为什么对:Plugin(代码)扩展”能做什么”——新工具、新渠道、新 Provider。Skill(Markdown)教会”怎么做”——现有工具怎么组合。两个正交维度,互不替代。判断标准:需要 Agent 做以前做不到的事 → Plugin;需要 Agent 用已有工具做得更好 → Skill。
⑩ 30+ 渠道 + 一个消息模型
为什么对:WhatsApp 和微信的消息格式天差地别——但 Agent Runtime 完全不知道。统一 InboundMessage/OutboundMessage + 渠道适配器模式,新增渠道只需 200-500 行 Adapter。适配一次,所有渠道受益。
· · ·

▲ 十大架构决策 + 五条工程铁律全景图
· · ·
五条工程铁律:如果你要自己搭一个 Agent 平台
十篇拆下来,我从 OpenClaw 身上总结了五件事。不是”最佳实践”——那个词太虚了——是如果你不遵守,大概率会后悔的铁律。
铁律 1:先跑通一个 Agent、一个渠道、一个 Tool 的闭环,再做平台化
我做过的最后悔的事,就是上来就画微服务架构图——六个服务、消息队列、API 网关、服务发现。画完发现:一个用户都没有,六个人在维护一个空集群。
OpenClaw 的做法完完全全相反。一个进程,一条命令启动,WhatsApp 上接一个消息,Agent 回一句”你好”。闭环跑通了——再往上加 Telegram、Discord、微信。平台化是结果,不是起点。不要为了”以后可能需要”而提前做架构。”以后”可能永远不会来,但你现在就在为它付复杂度税。
铁律 2:Skill/Tool 的 Schema 是第一公民——没有 Schema 就没有可组合性
OpenClaw 整个工具链的最底层不是代码,是 TypeBox Schema。Tool 注册时写 Schema、LLM 通过读 Schema 决定用哪个工具、Gateway 通过 Schema 校验消息、Trace 通过 Schema 记录事件。Schema 不是”类型注解”,它是 Agent 理解世界的”说明书”。
如果你的 Agent 系统里,工具的 description 是随手写的、参数没有 Schema、LLM 靠猜来调用工具——你会在 debug 上花掉 90% 的时间。Schema 省下的不是编译期的那几毫秒校验——是 LLM 选错工具、传错参数、静默失败的无数个小时。
铁律 3:Memory 让 AI 自己维护,不要替它设计”完美的记忆模型”
这是我的一个血泪教训。曾经我设计了一套精妙的记忆 Schema——entities 表、relations 表、facts 表、temporal_facts 表——四张表,外键约束,级联删除。Agent 写了 300 行代码来操作这四张表。上线三天后,我发现 Agent 的记忆全是乱的——它把”用户喜欢蓝色”存成了 temporal_fact(临时事实),把”今天讨论过 React 19″存成了 entity(实体)。
OpenClaw 的做法是:一个 MEMORY.md 文件,Agent 自己往里面写 Markdown。没有 Schema、没有 ORM、没有外键。Agent 想怎么写就怎么写——它比我们更擅长组织自然语言。人类只需要偶尔打开文件看一眼,删掉不对的。我花了一年才明白这个道理:不要让工程师设计 AI 的记忆模型——让 AI 自己管自己的记忆。
铁律 4:安全边界不要在事后补——沙箱和权限从第一天就在
如果你给 Agent 的 Tool 里有一个 exec(执行 shell 命令)——你没有沙箱,就等于把 root 权限给了 LLM。LLM 不会恶意利用它,但它会因为理解错你的意图而执行错误的命令。
OpenClaw 的安全设计从第一天就在——Docker 沙箱、non-main 自动隔离、五级工具策略、配对码验证。这些不是”产品上线后发现安全问题才加的”——它们是架构的基础假设。安全的成本是指数级的:第一天加 = 几行配置;上线后加 = 重写半个系统。
铁律 5:Gateway 单进程足够——Agent 不是微服务问题,是状态管理问题
这是整个系列我重复最多的一句话——因为它太反直觉了。我们被训练了十年”微服务好、单体烂”。但 Agent 系统的核心特征——长连接、会话状态、Memory、实时推送——这些都是微服务最不擅长的事。分布式状态同步的复杂度,远超单进程部署的”不优雅”。
如果你是一个小团队、或者是一个人在做 Side Project——一个进程跑 Agent。别拆。拆了你会在状态同步上花掉做功能的时间。等你的用户量真的到了单机扛不住的那天——把 Gateway 拆成多个实例 + 共享 session 存储——但你大概率不会到那一天。绝大多数 Agent 产品的日活不需要水平扩展。
· · ·
十篇下来,我最大的收获是什么
写这个系列之前,我对 OpenClaw 的印象是”又一个 AI Agent 项目,Star 多一点而已”。
写完之后,我最佩服的,不是它的 WebSocket 协议设计得有多好——而是它在每一个”这里可以搞复杂”的节点,都选了更简单的那条路。Memory 用 Markdown 不用向量库。Skill 用 Markdown 不用代码。Workspace 用文件系统不用数据库。配对码不用 OAuth。单进程不用微服务。这些选择看起来都很”不专业”——一个资深后端工程师会皱眉头的那种”不专业”。
但就是这些”不专业”的选择,让 OpenClaw 达到了 37.9 万 Star——不是因为它比别人复杂,恰恰是因为它拒绝复杂。它赌的是另一条路:Agent 系统的核心价值不在架构的复杂度,而在降低使用的门槛。你能在 WhatsApp 上用它,不需要学任何新工具。你能打开 MEMORY.md 手动改它的记忆,不需要学 SQL。你能写一个 Markdown 文件教会它做一件事,不需要写代码。你能让它自己整理记忆,不需要你手动维护。
这堂课值 37.9 万 Star。
· · ·
💬 最后一个思考题
十篇读下来,你觉得 OpenClaw 哪个设计决策最让你”没想到”?哪个你原本觉得应该那样做、但它偏偏这样做了?把这个系列里最颠覆你认知的那个决策写在评论区——我想看看大家的答案。
十篇拆解,到此完结。感谢你一路读到这儿。
如果这个系列对你有帮助——转发给一个正在搭 Agent 的朋友。这就是最好的反馈。
📋 系列声明
本系列基于 OpenClaw 2026.6.6 版本。项目采用 MIT 协议,源码截图合规使用。
十篇文章全文约 40,000 字,拆解了 Gateway / Agent Runtime / Skill / Tool / Memory / Channel / Workspace / Trace / Sandbox / MCP / Plugin 共 11 个核心模块。
夜雨聆风