简要总结
Gateway Architecture
这页说明书在讲一个叫“网关”的大管家。你可以把它想成一个大城堡的中心控制室,它负责和所有聊天软件(比如微信、QQ)交朋友。城堡里还有其他的小帮手,比如你用的电脑软件、手机App,它们都要通过一条秘密通道(WebSocket)和这个大管家说话。这页就是告诉你,这个大管家是怎么工作的,城堡里的大家是怎么互相帮忙的。
五岁小孩版解释
这个“网关”是一个一直运行的大管家,它住在一台电脑上。它最重要的工作,就是和所有聊天软件(比如 WhatsApp、Telegram)保持联系。一台电脑上只能有一个这样的大管家。
城堡里的其他成员,比如你在电脑上用的软件、在手机上用的App,或者一个没有屏幕的“小脑袋”设备,它们想和大管家说话,都要通过一条叫 WebSocket 的秘密通道。这个通道的地址通常是 127.0.0.1:18789。
不过,手机App这些“小帮手”在连接时,需要告诉大管家:“我的角色是 node(节点)”。这样大管家就知道,它们有一些特别的本领,比如画画、拍照。
这个大管家自己也开了一个小网站,地址是 /__openclaw__/canvas/ 和 /__openclaw__/a2ui/,你可以用浏览器去看看。
大家是怎么工作的?
- 大管家(网关):它负责和所有聊天软件保持好朋友关系。它会检查大家发来的消息格式对不对,还会主动告诉大家一些事情,比如“有新的聊天啦!”或者“我身体很健康!”。
- 操作员(客户端):比如你用的电脑软件或者网页。每个操作员都有一条自己的秘密通道连到大管家。它们可以问大管家“你还好吗?”,或者请大管家“帮我发一条消息”。
- 小帮手(节点):比如你的手机App。它们也用秘密通道连接,但要说清楚自己是
role: node。它们会告诉大管家“我是哪台设备”,这样大管家才能认识它。小帮手们会一些特别技能,比如canvas.*(在画布上画画)、camera.*(拍照)。
连接大管家的步骤:
- 第一步,打招呼:任何想和大管家说话的人,第一句话必须是
connect(连接请求)。这句话必须用 JSON 格式写,就像写一张标准格式的纸条。 - 第二步,检查身份:如果大管家设置了密码(环境变量
OPENCLAW_GATEWAY_TOKEN或--token参数),你必须在connect纸条里写上正确的密码,不然大管家会立刻关门。 - 第三步,开始聊天:打完招呼后,你就可以正常请求了。格式是
{type:"req", id, method, params}。大管家会回复你{type:"res", id, ok, ...}。大管家也会主动告诉你一些事,格式是{type:"event", event, payload, ...}。
需要小心的事情:
- 新朋友要批准:如果一个设备(比如新手机)第一次连接,需要在大管家这里“配对”批准。批准后,大管家会给它一个“设备令牌”,下次就不用再批准了。
- 本地朋友有优待:如果连接来自电脑自己(比如
127.0.0.1),大管家可能会自动批准,这样用起来更方便。 - 重要的事说一遍:像“发消息”这种重要操作,你必须带一个“唯一钥匙”(idempotency key)。这样,如果你不小心发了两次相同的请求,大管家也知道只做一次,不会重复发送。
- 消息不重播:如果秘密通道断开了,重新连上后,大管家不会把之前错过的“事件”再说一遍。所以,客户端要自己问清楚现在是什么情况。
怎么从别的地方连接大管家? 如果你不在大管家所在的电脑旁边,想远程连接它,有两种好方法:
- 用 Tailscale 或 VPN:就像在两个地方之间建一条安全的私家路。
- 用 SSH 隧道:在你自己电脑上输入命令
ssh -N -L 18789:127.0.0.1:18789 user@host。这就像挖一条通向大管家电脑的秘密地道。
怎么启动和查看大管家?
- 启动它:在电脑上运行命令
openclaw gateway。 - 看看它是否健康:通过 WebSocket 通道问它
health。 - 让它一直工作:可以用
launchd(Mac) 或systemd(Linux) 这样的工具看着它,如果它不小心睡着了,工具会把它叫醒。