很多人第一次打开 OpenClaw,觉得就是个更好的 Claude——聊天、提问、写代码,仅此而已。

然后看到一位做 AI 基础设施的朋友演示:他打开终端跑了几个命令,三个 Agent 并行运行,Telegram 实时推送结果,人根本没坐在键盘前。问他用了什么高级功能,得到的回答是:"都是基础功能,你只是还没碰到它们。"

这不是少数人的困境。

Gateway 才是真正的产品

大多数人对 Agent 的认知还停留在"聊天界面"。

OpenClaw 的核心不是一个对话窗口,而是一个持续运行的 Gateway 进程——它处理消息路由、Session 管理、工具调用和 Agent 生命周期。你从 Telegram 发一条消息,Gateway 接收后找到对应 Agent,执行完后结果推回给你。你不需要一直盯着聊天窗口。

这对工作的影响很直接:你调度的是一个能独立运转并汇报结果的系统,而不是每次都要守着界面等它完成。

重启后,聊天历史和 Session 状态通常还在,但运行中的任务不会无缝恢复,pending 的结果可能需要重新发送。

Telegram 是最低门槛的入口

终端只是入口之一。真正改变使用习惯的切换是——把 OpenClaw 从终端搬到 Telegram。手机就够了。

OpenClaw 支持 Telegram、Discord、Signal、Web Dashboard 和控制 UI。聊天窗口里可以:

  • ! ls -la 直接跑 shell 命令
  • !poll 查看后台任务状态
  • !stop 终止一个运行中的任务

前提是频道和 Agent 对应的命令能力已开启。一旦配好,日常工作中一大部分操作就可以从终端迁移到手机。

如果一直因为不想开终端而回避 OpenClaw,从 Telegram 开始是最低阻力路径。

Context 管理:Agent 变笨的真正原因

用一段时间后,Agent 开始变笨——重复自己、忘记十分钟前说过的话。很多人第一反应是:模型出问题了。

实际上跟模型没关系,是工作内存满了。

每个模型都有上下文窗口,本质上是它一次能容纳的信息量。你的消息、Agent 读取的文件、工具输出,全部堆积。一旦满了,就开始丢东西。

经验用户真正依赖的是一套命令:

/compact——将对话历史压缩成摘要,释放空间。模型用更短的版本重写历史,保留重要部分、去掉噪音。你甚至可以引导压缩方向。系统也会在接近上限时自动压缩,但手动控制让你自己决定保留什么和什么时候清理。注意:compact 不只删废话,也可能丢失技术细节——重要的配置、命令、错误信息,最好在压缩前先写文件或写入记忆。

/context list——显示当前注入上下文的每个文件及其占用的空间。很多人第一次跑这个才发现,自己上下文中有一半不是对话,而是注入的文件和工具定义。

/context detail——更深入,显示主要工具 schema 的大小。工具定义本身也在吃 token,大多数人完全没有意识到。

/new——开启一个完全全新的对话。不要无限制地一直 compact。超过 85% 还继续抱着同一个 session,事情大概率会越来越乱。

作者现在的习惯:先查 /context list,超过 70% 就 /compact,超过 85% 直接 /new

如果只从这篇文章里带走一个知识点,带这个:觉得 Agent 越来越笨的人,遇到的不是模型问题,是未管理的上下文问题。

Workspace 文件:塑造一个长期协作者

如果你用过 Claude Code,应该知道 CLAUDE.md——一个文件装下所有东西。

OpenClaw 走了另一条路。它把 Agent 的长期配置拆分成一组 workspace 文件,默认位置在 ~/.openclaw/workspace。这些文件在每次 Agent 启动、每次对话轮次时注入到上下文。单个大文件默认截断上限是 20,000 字符。

核心文件及各自的作用:

  • AGENTS.md:操作指令。Agent 每次唤醒都读这个。工作流、工具规则、优先级——相当于给 Agent 签的工作合同。
  • SOUL.md:人格和语气。直接塑造 Agent 的说话方式。比如某人的 SOUL.md 写着:"先回答,再解释,有观点,不绕弯"。差别立竿见影。
  • USER.md:你是谁、你在做什么、时区、沟通偏好。Agent 不再需要每个 session 都猜测。
  • TOOLS.md:工具的使用笔记和坑。更像是给 Agent 的运营提醒,权限控制走工具策略里的 approval 和 sandbox。
  • IDENTITY.md:名字、emoji、身份。
  • MEMORY.md:跨对话持久化的长期记忆。
  • memory/YYYY-MM-DD.md:每日日志。记录发生了什么、发现了什么。注意:每日记忆文件默认不会自动注入上下文,Agent 通过 memory 工具按需读取,所以不占用启动 token。

真正有价值的地方在于分离关注点。CLAUDE.md 像是一份大而全的 master 文档;OpenClaw 的 workspace 文件更像是在塑造一个长期协作者。你雇了一个助理,却从来不告诉他们你是谁、你在做什么、你想让他们怎么说话——他们当然会跑偏。

新手从哪里开始:不要试图一次填满所有文件。先写 SOUL.md 和 USER.md,SOUL.md 三五句定个语气,USER.md 一段话说清楚自己。半小时到一小时,足以跑起来第一个版本。

权限系统:三层逻辑

作者在升级到 3.31 后被教育了一番。升级后 exec 命令开始弹 approval 提示,修改了 agent config 为 full,还是弹。

问题出在只改了一边——~/.openclaw/exec-approvals.json 里的默认值还是旧配置。

权限系统有三个正交的层,理解它们如何叠加是关键:

第一层:认证(authentication)——配对(pairing)是设备认证。一个 node 要先和 Gateway 配对才能连接。它控制谁能进来,不管他们能跑什么。

第二层:执行权限(execution permissions)——两个独立维度:

  • security:控制哪些命令可以跑——deny / allowlist / full
  • ask:跑之前是否确认——off / on-miss / always

两者独立运作,组合出最终行为。比如 security=allowlist + ask=on-miss = 白名单命令直接跑,其他暂停等确认;security=full + ask=always = 什么都能跑,但每次都问。

这个策略可以写在两个地方:agent config 和 exec-approvals.json 默认值。同一字段出现时,严格的值胜出。逐字段比较,不是跨维度比较。

还有一个容易漏的细节:exec approvals 的生效位置是执行所在的主机。跑在 Gateway 主机上就适用 Gateway 侧的 approvals;跑在 node 上就适用 node 本地的 approvals。

第三层:隔离(isolation)——sandbox 将执行环境隔离,默认关闭。开启后 Agent 不直接在 host workspace 里运行。sandbox 隔离主要管工具执行,Gateway 进程本身还是在 host 上跑,elevated host execution 可以绕过 sandbox。

新手建议:不需要第一天就配置所有这些。只记住一条:如果升级后 approval 行为突然变了,回来查这节。

多 Agent 与 Hooks:让系统自己长出结构

作者曾经把所有事情都扔给一个 Agent——写稿、检查数据、回消息、管文件,全部在一个 session 里。最夸张的一次:让 Agent 写一条推文,结果调试日志被拼接到了推文中间。上下文缠绕,角色缠绕。

分拆之后:一个 Agent 做内容和素材,一个做代码任务,一个处理外部消息。各自有独立的 workspace 和 session store。

这样得到的是状态隔离。重要的区分:状态隔离和进程级故障隔离是两回事。一个 session 出问题不会自动污染另一个 session 的上下文,但 Gateway 本身还是协调中心,不要把它当成天然容错的多进程系统。

如果想试,最简单的起点:加一个新 Agent,划出一类任务,试一天。

Hooks——自动化不意味着必须写 cron 任务。OpenClaw 有事件触发的 hooks:某个事件发生,对应逻辑就执行。最有用的内置 hooks:

  • session-memory:session 结束时自动把关键信息写入记忆
  • command-logger:记录 Agent 执行的每条命令
  • boot-md:Gateway 启动时从 BOOT.md 运行初始化任务

作者的用法:内容任务完成后,hook 自动把草稿写入特定目录并更新记忆。不需要在对话里提醒它,事件触发、逻辑执行,完全独立于当前对话上下文是否存活。

这和对话里说一句"记得做完写到这个目录"的差别是:触发器在 Gateway 事件层,不依赖聊天上下文是否完整。当然它也不是万无一失的——磁盘满、权限问题、Gateway 本身挂掉,都会影响。但比聊天里随口提一句显著可靠。

新手建议:知道这个存在就行,今天不需要配置。

Skills:把重复变成系统

这是作者最后发现、后悔没有早点找到的功能。

Skills 是打包的能力模块。一个 skill 目录通常包含:

  • SKILL.md:告诉 Agent 什么时候读它、怎么用
  • scripts/:执行脚本
  • references/:参考资料

优先级顺序(高到低):

<workspace>/skills~/.openclaw/skills → bundled → extraDirs

同名的 skill,workspace 里的会覆盖系统内置的。

作者自己的例子:一个叫 x-writer 的 skill,打包了语气规则、禁用词、文章结构指南。每次 Agent 要写 X 内容,先读这个 skill,再写。不需要在每次对话里重复规则。

不想自己构建,clawhub 是公开的 skills 注册表——想象成一个早期阶段的 skill 市集。还没到 App Store 的规模,但已经有一些可用的包。

OpenClaw 本身已经有大量内置的工具型能力。Skills 更多是关于包装方法、规则和调用模式,让 Agent 知道什么时候用什么、怎么用。

这个部分真正有价值的地方不是安装一个 skill,而是意识到:你一直在对话里重复的那些东西,根本就不应该留在对话里。

自测:你在哪个层级

五个问题,对号入座:

1. 你知道 /compact 做什么吗? 不知道 → 还在表面 / 知道但没用过 → 刚碰到门 / 用过且带自定义指令 → 进阶

2. 你的 SOUL.md 有多少字? 不知道 SOUL.md 是什么 → 表面 / 存在但只有几行 → 刚起步 / 300+ 字且有具体语气规则 → 进阶

3. 你知道 security 和 ask 的区别吗? 不知道 → 表面 / 一个管范围、一个管确认 → 系统层 / 知道它们和多个配置位置叠加 → 系统层

4. 你有没有同时跑过多个 Agent? 没有 → 还没到 / 试过但不稳定 → 在路上 / 稳定的多 Agent 设置 → 生态层

5. 你有没有写过或修改过一个 skill? 没有 → 还没到 / 用过别人的 → 在路上 / 自己写且知道优先级规则 → 生态层