从openclaw原理看AI助手的本质
2026 年 03 月 03 日
今天看到新闻,openclaw 的 stars 数量居然超过了 linux 和 react。去 github 看了一下,的确如此。不得不敬畏全民对于这只龙虾的热情。
前几天我翻译了一篇文章 everyone talks about Clawdbot, but here's how it works,大概了解了 openclaw 的工作原理,不过这篇文章翻译的人很多,因此没刻意保存。这几天试着找了个开发板部署了 zeroclaw,并且实际用了一下,又加深了一点理解,这里记录一下学到的东西。
LLM 的工作原理
还是要从 LLM 说起。
我一直认为 LLM 并不是真正的智能。虽然它回答问题时看起来无所不知,但本质上只是根据已有的权重集补全输入的文字而已。
但是,站在使用者的角度上,LLM 是不是真正的智能无关紧要。使用者只是通过 http 向 API 端点发一个请求,然后处理响应而已。
所以以前我们看到的各种 AI 助手,比如豆包或千问,其实只是重复执行下面的流程:
flowchart LR
client[客户端]
client <--> |http| server[服务器]
你提出一个问题,服务器运算后给你答案。也就是说,一切都是由你自己,也就是用户主动触发,然后服务器被动响应。
很简单,对吧。
但这只是简单的文字补全而已,服务器并不能让我的设备做更多的事情,比如操作我的设备去点一杯奶茶。
LLM 如何操作设备做具体的工作
想要做到点一杯奶茶这种事,服务器和客户端必须支持一种通讯协议(实际是扩展了 http 请求),通过这种协议,可以做到:
- 客户端能够声明自己支持哪些具体的能力,比如:
我可以点奶茶。 - 服务端能够通过响应告知客户端,接下来你应该去做某件事,比如:
去(某个店铺)点一杯(什么样的)奶茶送到(特定地址)。 - 客户端能够解析服务端的响应,执行具体的指令,然后将结果再次返回给服务端。
还是拿点一杯奶茶举例(注意这里大幅简化了细节)。
sequenceDiagram
participant client as 客户端
participant server as 服务端
client->>server: 我想要点一杯奶茶(同时,我支持点奶茶的能力)
server->>client: (从请求中解析出客户需要点一杯奶茶,请执行点奶茶能力,参数是:……)
activate client
client --> client: 执行点奶茶能力
deactivate client
client->>server: (点奶茶动作完成,结果是……)
server->>client: (告知客户端完成响应)
通常来说,上面提到的这个通讯协议(扩展),叫做 Tool Call。实现这些具体的能力的方式(也就是具体的执行部分),叫做 MCP。
注:还有一种操作客户端的方式叫 Skill,与 Tool Call 功能类似。我目前的理解是,Skill 是对目标能力的文本描述;而 Tool Call 是对目标功能 API 的精确描述。前者易于书写和传播,后者更精确和强大。但 Skill 我还没怎么用过,所以理解可能存在偏差。
现在,这就大致解释了像千问这样的 AI 助手,是如何点奶茶的了。
OpenClaw 及类似产品的工作原理
OpenClaw 及类似产品是在 LLM API 基础上的扩展。最核心的扩展其实很简单:Loop 循环。
flowchart LR
user[使用者] <--> |通道|client[OpenClaw]
client --> |等待外部事件| client
client <--> |http| server[服务端]
也就是说,OpenClaw 实际是在执行一个无尽的循环,它一直在处于等待中,当发生外部事件时才向服务端发请求,例如:
- 使用者发了一条消息。
- 服务端响应完成,但队列中还有未完成的任务。
- cron 计划任务触发。
举个具体的例子,比如说我希望它 10 分钟后提醒我去学校接孩子放学回家,那么时序是这样的:
sequenceDiagram
actor user as 我
participant client as OpenClaw
participant server as 服务端
user->>client: 10分钟后提醒我去学校接孩子放学回家
client->>server: 用户要求“10分钟后提醒我去学校接孩子放学回家”(我支持cron计划任务)
server->>client: (请执行cron添加计划任务,时间是10分钟后,内容是“用户在xx时间要求10分钟后提醒他去学校接孩子回家”)
activate client
client --> client: 添加cron计划任务
deactivate client
client->>user: 计划任务添加完成
Note over user,server: 10分钟后
client->>client: cron事件触发
client->>server: (发生了cron事件,内容是“用户在xx时间要求10分钟后提醒他去学校接孩子回家”)
server->>client: (……具体内容)
client->>user: (……具体内容)
如果你希望 OpenClaw 去做更复杂的事件,那么大体上,就是重复执行 Plan → Execute → Review 这样一个循环直到完成而已。由于 Plan/cron 的存在,这类 AI 助手就有了主动完成任务的能力,给它一个初始目标之后,就不再需要一直等待使用者指挥。
如何真正有效的使用 OpenClaw 或类似应用
原理只是帮你理解 OpenClaw 的能力边界,要想真正有效的使用类似应用,需要想清楚或注意以下几点:
需要用它做什么
这是一切的前提。这类 AI 助手可以帮助你将某些任务自动化,但究竟是哪些任务……我自己是没想清楚的,而且我的方案也未必适合于其他人。
举例来说,之前还看到有人用它在论坛自动发帖。所以这部分纯粹是想象力的问题。
给它足够的资源
这玩意跟人一样,你不可能又想马儿跑,又想马儿不吃草。你至少需要给它:
- 一个能独立运行的环境,比如 VPS/开发板/主机 等等。
- 一个足够智能的大模型 API,太弱的无法准确执行 Tool Call。
- 各种对应的 Skill/MCP。有可能需要自己写(比如前面提到的论坛发帖的应用)。
- 必须的各类 API Key 或者账号密码。比如,你想让它查看并分析邮件的话,至少要把邮箱访问方式交给它对吧。
适当放权,但要注意安全
很多时候,安全和易用性是矛盾的。默认情况下,这些助手会拥有所在机器的基础权限。但是有些危险操作是需要使用者确认的,比如删除或修改某些系统文件。
如果这些危险操作很频繁的话,确认也是件麻烦事。所以只能是具体情况具体分析。
总结
虽然我一直不认为 LLM 以及基于 LLM 之上的 OpenClaw 同类的 AI 助手拥有真正的智能,但话说回来,真正的智能到底是什么呢?
饿了吃饭,渴了喝水,病了吃药。从根本来讲,人类的智能,似乎也不过是在各种生理欲望的驱动下,重复的去做那些能够维持自己的存在,然后满足自我需求的事情而已。
似乎可以这么认为,通过简单的 Loop,以及外部赋予它的目标,AI 助手似乎已经跟人类的智能有了一定的相似性。
我觉得,人类似乎再次发明了类似蒸汽机那样的工业革命级别的工具,但后续的结果,是难以预见的。