OpenClaw 小龙虾真正出圈的原因,不是某次回答更惊艳,而是它让大家看到AI Agent已经从"单人对话窗口"升级成为"可自主完成任务的系统"。
下面我们来一起扒一扒小龙虾的内部实现:
一、先统一术语(避免后文概念混淆)
先把本文反复出现的概念说清楚,并带上使用场景。
接入与通信层
- Gateway Server:统一接入层。Web、IM、CLI 的消息先到这里,再进入同一条处理链。
- JSON-RPC 2.0:通信格式。请求、响应、事件语义分开,排查问题时能定位到具体环节。
路由与隔离层
- Binding:路由合同。定义“哪类消息该给哪个 Agent”。
- session_key:会话隔离键。把用户、通道、Agent 的上下文边界锁住,防串台。
- dm_scope:私聊隔离粒度。决定按“人”隔离,还是按“通道+人”隔离。
认知连续层
- SOUL.md:人格契约。控制长期语气、表达边界和价值排序。
- MEMORY.md:常驻记忆。放稳定事实与长期偏好。
- memory_write / memory_search:记忆写入与检索工具。让记忆从文本变成可执行能力。
运行保障层
- HeartbeatRunner:主动巡检执行器。系统会在合适窗口主动检查,不必等用户发问。
- CronService:时间调度器。统一处理 at/every/cron。
- Delivery Queue:可靠出站层。采用 write-ahead,先落盘再发送,失败可重试可恢复。
二、第一层设计:接入层统一,语义标准化
只要入口先统一,后面所有能力都能复用同一套语义;入口不统一,后面每加一个渠道,都在复制一套问题。
JSON-RPC 2.0 在这里的作用很实际:
- 请求有 id,响应可以回对请求;
- 事件流可以独立推送,不必伪装成“回复”;
- 客户端和服务端都知道当前状态在链路哪一段。
三、第二层设计:路由显式化
OpenClaw 没把“这条消息谁来处理”留给模型临场判断,而是放在 Binding 里显式配置。
在多角色场景里,这个顺序很关键。比如同一时刻有运营、研发、管理三类请求,如果不先做归属,模型再强也会被混杂上下文拖垮。
session_key 和 dm_scope 的协同进一步把边界收紧:
- 哪些信息在同一个会话里共享;
- 哪些信息必须隔离在不同会话里。 用户看到的是体验层结果:回复更稳、串台更少、上下文更“像记得你”。
四、第三层设计:记忆与人格持久化
很多系统把人格当成一段开场 prompt,把记忆当成一次会话缓存。这样做短期可用,长期容易漂。
OpenClaw 的做法更像工程系统:
- SOUL.md 单独维护人格契约。风格和边界不会跟着临时上下文乱跳。
- MEMORY.md 负责长期事实,每日记忆负责增量事件。两层分工明确,避免短期噪声污染长期认知。
- memory_write / memory_search 让记忆进入执行闭环。系统会写入、会检索、会在后续决策中用到。 用户感知到的不是“这轮答得像我想要的”,而是“保持同一种人格和行为的AI助理”。
五、第四层设计:可托管运行,能主动干活
当系统进入真实运行环境,持续做事的能力会比“某一轮生成质量”更先被用户感知。
OpenClaw 在运行面做了三件实事:
- HeartbeatRunner 主动巡检。
它不是无脑定时器,而是基于 should_run 条件链择机运行。HEARTBEAT_OK 机制又把无效提醒压下去,减少噪声。
- CronService 管理时间语义。
at、every、cron 放在统一调度器里。锚点对齐策略让周期任务不容易时间漂移。
- Delivery Queue 保障出站可靠。
write-ahead 先落盘,发送失败走退避重试,超过阈值进 failed 池,支持后续追踪和恢复。
这套组合让系统从“被动应答”走到“能主动做事”!
六、结语:小龙虾的系统启发
OpenClaw 的优势,不是某个“爆点功能”,而是工程链路完整:
- 入口有秩序(Gateway + JSON-RPC);
- 归属有规则(Binding + session_key);
- 认知有连续性(SOUL + MEMORY + memory_search);
- 干活不间断(Heartbeat + Cron + Delivery Queue)。
如果这篇文章对你有帮助,帮忙点个赞,帮助作者有动力继续更新!
欢迎关注公众号:蝈蝈的AI笔记,里面有更多干货内容。