我原本也以为,OpenClaw 最值得写的是 SOUL.md:几行文字让助手有脾气、有口吻,传播起来太顺了。可顺着一次消息真正走完源码,我改了主意。人格文件只是墙纸,OpenClaw 的主体其实是一台放在家里的 agent 路由器。

一条消息到底经过什么

无论消息来自 WhatsApp、Discord、CLI 还是控制界面,它都先进入一个常驻的 Gateway。默认情况下,这个控制平面只监听本机 127.0.0.1:18789,客户端和 node 通过带类型的 WebSocket 协议接入。

Gateway 接到消息后,大致做五件事:

  1. 根据 channel、账号、群组或发送者,把消息映射到 session key;
  2. 找到对应 agent 的 workspace 和运行状态;
  3. 组装 AGENTS.mdSOUL.mdUSER.mdMEMORY.md 等上下文;
  4. 按 tool policy 决定模型能看见哪些工具,再按 sandbox 设置决定工具在哪里跑;
  5. 把执行事件和最终回复送回原 channel。

这套结构的价值在于“汇合”。手机是入口,浏览器是 node,模型只是可替换的推理部件,真正连续存在的是 Gateway 里的路由、session 和授权状态。换个聊天软件,agent 没有失忆;换个模型,也不必重做所有设备接入。

三个看似相近、实际必须分开的开关

源码文档特意把 sandbox、tool policy 和 elevated exec 分开,我认为这是 OpenClaw 最成熟的一处。

  • tool policy 是能力过滤器:某个工具是否出现在模型的动作空间里;
  • sandbox 是运行位置:允许的工具在宿主机还是隔离环境执行;
  • elevated 只处理 exec 的越界执行,并不是一张“全部放行”的通行证。

这三层如果混在一起,人们很容易误以为“隐藏了 shell 工具就安全”或者“开了容器就什么都能给模型”。OpenClaw 默认的 main session 工具仍可能在宿主机执行;workspace 也只是工作目录,不天然等于 sandbox。它很强,但不会替你取消权限模型。

SOUL.md 还重要吗

重要,只是重要的方式不同。SOUL.md 决定声音,AGENTS.md 决定长期规则,USER.md 提供用户背景,session 保存正在发生的对话。把它们分文件,相当于把人格、规章、关系和现场记录拆开。这比把一切塞进一条巨型 system prompt 更能维护,也更容易检查。

真正危险的细节反而在 session scope。默认 main 会让多个 direct message 汇入同一个主会话,适合“一个人、多个入口”的私人助手;如果收件箱面向多人,就应使用 per-channel-peer 等隔离方式。人格越连贯,串错人的代价也越高。

我的思考

OpenClaw 让我看到的不是又一个聊天机器人,而是“持续委托”开始进入家庭和小团队:消息入口、定时任务、浏览器、文件和设备被同一个代理连接起来。最有共鸣的会是 self-hosting 用户、技术家庭、个人工作室,以及愿意用可配置性换取控制权的人。

市场上下一块真正值钱的东西,可能不是更多 skill,而是托管加固:清晰的权限收据、按人隔离的 session、可回放的工具审计、家庭成员之间的授权边界。过去应用向你申请一次权限;未来 agent 会替你连续行使权限。社会需要学会审查的,不再只是“它能访问什么”,而是“它正在代表谁、持续做什么”。

我还会加一条更个人的判断:SOUL.md 会带来情感认同,Gateway 才会带来迁移成本。真正的产品护城河,往往藏在那部分不适合截图传播的基础设施里。

资料