
作者花了 4 小时构建了一个每天赚 300 美元的机器人,token 开销却降低了 3 倍——仅仅因为他搞懂了 OpenClaw 内部的真正运作机制。
大多数人都在盲目使用 OpenClaw。他们安装技能、编写提示词、调整设置,却完全不知道底层发生了什么。一个黑盒。尽管它其实完全透明。
你知道 OpenClaw 有两种记忆类型吗——引导记忆(bootstrap)和语义搜索?如果不知道,你的 Agent 只发挥了一半的能力。
你知道可以通过纯文本编辑器控制 Agent,并获得比 95% 的人更好的结果吗?
你知道如果“开箱即用”地运行 Agent,你的 token 花费(= 金钱)会比必要的多 3 倍吗?
现在就收藏这篇文章,别弄丢了!
OpenClaw 由六个部分构成
每个部分独立运作,但组合在一起形成一个完整的 Agent 系统。
Gateway(网关) - 系统核心。所有东西都经过它。它维护与 Telegram、WhatsApp、Discord、Slack 的持久连接。当消息到达时,Gateway 决定哪个 Agent 处理它,调取历史记录,组装上下文并发送给 LLM。响应以同样的方式返回。此外,它还启动 WebSocket API,让你可以接入自己的界面或外部集成。
Agent(智能体) - 大脑。从 Gateway 接收组装好的上下文:聊天历史、记忆文件、可用工具。思考,决定调用哪个工具,构建响应。如果需要,启动链式调用:调用工具,获得结果,再思考,再调用另一个工具。持续进行直到最终答案准备好。
Tools(工具) - Agent 的双手。exec 在服务器上运行 shell 命令。browser 打开页面、点击、截图。file 读写文件。message 向频道发送消息。memory 搜索长期笔记。每个工具都是一个独立的能力,你可以开启或关闭。
Workspace(工作空间) - 长期记忆。一个包含文件的文件夹,记录 Agent 在会话之间需要知道的一切。它是谁,使用什么语气,你喜欢什么,你们一起做过什么决定,昨天发生了什么。没有 workspace,Agent 每次醒来都是一张白纸。
Sessions(会话) - 单次对话的记忆。特定对话的完整历史:你写了什么,它回复了什么,调用了哪些工具。每个会话独立存在,不会互相干扰(除非你搞乱了设置——稍后会详细说明)。
Nodes(节点) - 物理设备。你的 Mac、手机、远程服务器。它们连接到 Gateway 并扩展 Agent 的能力:拍照、截屏、获取地理位置。服务器上的 Gateway 是大脑。Mac 上的 Node 是眼睛和双手。
所有这些都是文本文件。不是数据库,不是二进制文件。纯粹的 .md 和 .json 文件,你可以在编辑器中打开并手动修改。每个部分的具体位置——我会在下面的各个章节中展示。
Workspace - 没人配置的超能力
Workspace 是一个包含文件的文件夹。听起来很无聊。但这正是将愚蠢的机器人与真正可用的 Agent 区分开来的关键。
没有 workspace,Agent 每次醒来都是一片空白。不记得你是谁。不记得上周讨论了什么。不记得你们一起做的决定。
每次对话都从零开始。每次你都在浪费 token 重新解释上下文。
Workspace 是一组 .md 文件,每个都有自己的角色:
AGENTS.md - 操作手册。这里写明 Agent 应该如何思考。何时使用哪个工具,遵循什么安全规则,按什么顺序做事。它的行动指南。
SOUL.md - 个性。语气、边界、优先级。想让 Agent 简洁且不主动提供建议——写在这里。想要一个友好的助手——也写在这里。
USER.md - 你的档案。如何称呼你,你做什么,你的偏好。Agent 在每次响应前都会读取这个文件。
MEMORY.md - 长期记忆。不能丢失的事实。“我们只在 DEX 交易,不用 CEX。”“主要 RPC 是 Alchemy,Infura 作为备份。”“在 Polymarket 上基于 15 分钟市场构建了套利机器人。” Agent 会自己写入这里,或者当你告诉它时写入。
YYYY-MM-DD.md - 每日日志。今天发生了什么,正在进行什么任务,讨论了什么。明天 Agent 打开昨天的日志,继续上下文。
IDENTITY.md - 名字和氛围。“我叫 Clawdia,是你的自动化助手。”一个简短的文件,但它为一切定下基调。
HEARTBEAT.md - 定期检查的清单。“检查邮件”,“看看监控是否运行”。更多内容在自动化部分。
TOOLS.md - 关于本地工具的提示。脚本在哪里,哪些命令可用,快捷方式。这样 Agent 就不用猜测了。
关于两级记忆——以及为什么大多数人只用了一级
每次运行时,Gateway 会取出 AGENTS.md、SOUL.md、USER.md、IDENTITY.md、今天的每日日志,并在 LLM 看到你的消息之前将它们注入上下文。这是引导记忆(bootstrap)——第一级记忆。Agent 每次都“记得”这些文件的内容。
第二级是语义搜索。如果启用了 memory 插件,Agent 可以通过向量索引搜索 MEMORY.md 和其他笔记。你问“我们在哪个 DEX 交易?”——它会找到正确的片段,即使你两个月前写的。不是通过关键词,而是通过含义。你写了“我们只在 DEX 交易”——当你问“我们在哪里开仓”时,Agent 会找到它。
区别在于:引导记忆是 Agent 每次都会看到的,没有例外。但文件会消耗 token。你往 AGENTS.md 和 USER.md 里塞得越多,每次请求就越贵。语义搜索则相反——不会持续消耗上下文,只在需要时拉取相关内容。但它不保证一定能找到正确的事实。
策略很直接。把关键内容放在引导记忆中——Agent 在每条消息中都需要记住的东西。语气、规则、你是谁。其他所有东西都放进 MEMORY.md 和每日日志:决定、事实、任务上下文。语义搜索会在需要时拉取它们。
如果只配置了引导记忆——Agent 只发挥一半的能力。如果两者都没配置——你每天只是在烧钱。
举个例子。你告诉 Agent:“记住我只在 DEX 交易,我在 Curve 上观察池子。”它把这个写进 MEMORY.md。一周后你问:“我们通常在哪里查看流动性?” Agent 搜索它的记忆并回答,不需要额外的问题。你没有浪费 token 重新解释。它就是知道。
Gateway - 消息如何变成响应
Gateway 是所有东西都要经过的地方。每条消息、每个响应、每次工具调用。如果 Agent 是大脑,Gateway 就是循环系统。它停了——一切都死了。
它是一个长期运行的守护进程。你启动一次——它就坐在那里工作。维护与频道的持久连接,等待消息,处理它们,返回响应。不需要重启,不需要手动干预。
当你在 Telegram 上给机器人发消息时会发生什么:
步骤 1. Gateway 维护与 Telegram API 的持久连接。一个事件进来——你发来的新消息。
步骤 2. Gateway 检查配置:哪个 Agent 应该处理这条消息?绑定在那里定义——频道 -> Agent 的映射。它还确定 SessionId:这是旧对话的延续还是新会话。
步骤 3. Gateway 组装上下文。从 .jsonl 文件读取会话历史。从 workspace 拉取引导文件:AGENTS.md、SOUL.md、USER.md 等等。添加可用技能。把所有东西打包在一起发送给 LLM。
步骤 4. LLM 返回文本或工具调用。如果是工具调用——Gateway 执行它:运行命令、打开浏览器、写文件,并将结果反馈回上下文。LLM 查看结果,进一步思考。可能调用另一个工具。再一个。循环持续旋转,直到最终答案出现。
步骤 5. 响应流式返回到 Telegram。你实时看到“正在输入……”。与此同时,整个交换——你的消息、Agent 的响应、所有工具调用——都被写入 .jsonl。sessions.json 得到更新。
Gateway 在端口 18789 上启动 WebSocket API。通过它你可以接入自己的 UI——网页界面、移动应用。或者通过 HTTP 与外部系统集成。甚至有一个 OpenAI 兼容的端点——你可以接入任何支持 OpenAI API 的工具。
默认情况下,Gateway 只监听 localhost。意味着——没人能从另一台机器访问它。对于远程访问,有两个可靠的选项:通过 Tailscale 的 VPN(你将 Gateway 桥接到私有网络)或 SSH 隧道(ssh -L 18789:127.0.0.1:18789 user @server)。将 18789 暴露到开放互联网是个坏主意。那是对所有数据、会话和 Agent 的完全访问。
Tools + Cron — 无需你参与就能工作的 Agent
工具是 Agent 与外部世界交互的方式。没有它们,它只能说话。有了它们——它能行动。
exec - 最强大的工具。运行 shell 命令。通过它,Agent 几乎可以做任何事:运行脚本、安装包、处理文件、部署代码。但也是最危险的。
三种 exec 模式——从安全到危险:
• sandbox - Agent 在 Docker 容器内工作。一个独立的沙箱,与你的服务器没有连接。如果出问题——没关系,你的主系统不受影响。 • gateway - Agent 直接在你的服务器上工作,但有限制。你决定它可以使用哪些命令。把 git 和 python 放在白名单中——它就使用这些。其他所有东西都被阻止。 • full - 没有限制。Agent 在你的服务器上做任何它想做的事。适合实验,但在有钱的生产服务器上——这就像把门敞开一样。
browser - 控制浏览器。Agent 可以打开页面、点击元素、输入文本、截图、保存 PDF。两种配置文件可选:openclaw(完全隔离、托管)和 chrome(通过扩展控制你的常规 Chrome,需要打开的标签页)。
file - 读写文件。message - 向频道发送消息。memory - 搜索长期笔记。
现在是改变一切的部分——cron 和 heartbeat。这就是将 Agent 从聊天机器人变成工作者的东西。
Cron 是 Gateway 端的任务调度器。你设置一次时间表就忘了它:
openclaw cron add --schedule "0 9 * * *" --agent personal --prompt "检查新邮件,发送摘要到 Telegram" --announce每天早上 9:00,Agent 醒来,做你要求的事,并将结果发送到频道。你不用动一根手指。
--announce 标志意味着结果会被发送到频道。如果你需要静默执行——使用 --no-deliver,Agent 在内部完成所有事情。
Heartbeat 类似但更短。基于 HEARTBEAT.md 中的清单进行定期检查。Gateway 要求 Agent 检查项目:监控是否运行,是否还有磁盘空间,日志中是否有错误。如果有问题——Agent 给你发消息。
一个将所有东西联系在一起的例子。你想让 Agent 每天早上检查 Gmail 并发送摘要到 Telegram。
你启用 browser 工具,设置 9:00 的 cron,在 AGENTS.md 中写一条指令:“打开 gmail.com,对邮件列表使用 snapshot(),按相关发件人过滤,编写摘要并通过 message 工具发送。“每天早上,Agent 打开带有保存会话的浏览器,读取收件箱,过滤,发送给你:”今天来自客户的 3 封邮件:X 想要更新,Y 询问付款,Z 确认了会议。“
你还没喝完咖啡——它已经把一切都整理好了。
Multi-agent - 一个 Gateway,一支 Agent 军队
到目前为止,我们一直在谈论单个 Agent。但 Gateway 可以服务任意数量的 Agent。
想象一下:你有一个工作 Agent 处理项目任务。还有一个个人 Agent 处理日常事务、笔记、提醒。两者都在同一个 Gateway 上运行,但各自在自己的世界里。
工作原理。每个 Agent 是 ~/.openclaw/agents/ 中的一个独立文件夹。它自己的 workspace、自己的会话、自己的记忆文件。工作 Agent 知道你的技术栈、你的项目、你的团队。个人 Agent 知道你的习惯、日程、偏好。它们不会交叉。
频道映射通过 config.json 中的绑定完成。你写到一个 Telegram 聊天——它去工作 Agent。写到另一个——去个人 Agent。同一个 Gateway,按规则路由。
Agent 之间的隔离通过 dmScope 处理。将其设置为“per-agent”,每个 Agent 只看到自己的对话。工作 Agent 不知道你问了个人 Agent 什么。个人 Agent 不知道你的工作任务。干净的分离。
你可以更进一步。一个监控 Agent 通过 heartbeat 检查你的服务器,如果有问题就给你发消息。一个研究 Agent 使用 browser 工具解析来源并将摘要保存到它自己的 MEMORY.md。一个交易 Agent 观察池子,当它发现机会时 ping 你。
每个都有自己的 workspace,带有自己的指令、自己的记忆、自己的技能集。但它们都坐在同一个 Gateway 上,使用相同的频道,并从单个 config.json 管理。
主要规则:如果多个人可以访问一个 Agent,你必须设置 dmScope: "per-channel-peer"。没有它,来自不同用户的会话会合并成一个。Agent 可能用一个人的信息回复另一个人。这不是 bug——这是你需要手动更改的默认行为。
5 个会破坏你的 Agent 的错误
你已经了解了整个架构。现在是一个清单——立即检查你的。
错误 1:多用户时 dmScope 设置为“main”
OpenClaw 的默认行为——一个频道中的所有直接消息都被倾倒到单个会话中。如果两个不同的人在 Telegram 上给你发消息,Agent 会将两个对话视为一个。它可能用另一个人对话的上下文回复一个人。不是 bug——是一个没人费心改变的功能。修复:在配置中设置 dmScope: "per-channel-peer"。每个用户获得隔离的会话。
错误 2:exec 工具设置为 full 模式
你给了 LLM 对服务器的完全 shell 访问权限。没有白名单,没有限制。Agent 可以删除文件、安装任何东西、读取任何数据。在 localhost 上实验——可以。在生产服务器上——灾难。修复:切换到 sandbox 或带有适当 exec-approvals.json 的 gateway。
错误 3:没有 workspace 或它是空的
没有 workspace 的 Agent 是没有上下文的 LLM。每次对话都从白纸开始。你解释你是谁、你做什么、如何沟通——每一次。每次你都在同样的事情上花费 token。修复:至少设置 AGENTS.md + SOUL.md + USER.md。这是 15 分钟的工作,从第一次对话就能回本。
错误 4:没有压缩策略
长对话会增长到数千个 token。OpenClaw 可以将旧消息压缩成摘要,但如果 Agent 在压缩前没有将重要内容写入 MEMORY.md——它就丢失了。Agent 忘记了你三天前做的决定。修复:在压缩前启用 memory flush——Agent 自动将重要事实转储到长期记忆中。
错误 5:端口 18789 暴露到互联网
Gateway API 默认监听 localhost。但如果你为了远程访问转发了端口并忘记锁定它——那就是对所有 Agent、会话、数据的完全访问。任何找到该端口的人都可以读取对话、发送命令、修改 workspace。修复:Tailscale 或 SSH 隧道。永远不要直接暴露 18789。
OpenClaw 不是黑盒
每个组件都是你可以打开和编辑的文本文件。每个会话都是你可以读取和解析的 JSONL。每个配置都是你控制的 JSON。
现在你知道这个系统的每个器官是如何工作的。设置你的 workspace,使用两级记忆,关闭清单中的漏洞——你的 Agent 将在不同的层次上运作。
这篇文章有用吗?收藏它并点个赞——我会很感激。
部署了 OpenClaw「大龙虾」,不知道让它干嘛?推荐一堆真实用法直接抄作业
强壮OpenClaw的Agent Skills资源合集与源码仓库全攻略
3分钟免费获取国产大模型GLM-5和Kimi-k2.5 API使用教程
夜雨聆风