在 windows 上部署 openclaw node

在 windows 上部署 openclaw 的 node ,让 openclaw 可以操作多台机器

前言

在测试 openclaw 能力的时候,发现了 node 这个能力,简单地说就是可以让 openclaw 可以操控其他的机器。

有朋友会问了:那我直接让它 ssh 不就好了?执行非交互的命令就成

当然可以这样做,这不过风险有些大

  1. ssh 的私钥 or 密码存在 gateway 的机器上,提示词注入可能可以套出来
  2. 相当于另一个机器对 llm 而言是完全不设防的状态,提示词注入后可能造成更大的问题

因此,有了 node 这个功能,相当于 gateway 是控制面, node 是命令的具体执行机器,有点分布式的感觉了。具体来说,一个命令 llm -> gateway -> node -> exec 其中 gateway 审核 llm 提交的命令是不是允许列表里的,再分发到对应的 node 节点上执行。node 节点本地也会维护一个命令的允许列表,注明哪些 agent 可以执行哪些命令。这样 gateway + node 的双重门禁,可以保证 llm 的爆炸范围是可控的

当然,想法很美好,现实很骨感。llm 可以操作 gateway 所在机器的配置文件的话,就能够自己审核自己了,形同虚设。不过这是另一个层面的问题了,本文主要写如何部署好 node ,并让 llm 操作远程的机器

正文

说是要部署 node 节点,实际功能上实际还是通过 openclaw 内部封装的命令展开,因此首先得解决将 openclaw 部署到 windows 的问题

openclaw 在 windows 上的安装

这里只是简单记一下,没有遇到啥奇怪的 bug 因此写得比较简略

我选择的是直接部署到 windows 而不是 wsl 上,具体来说需要前置准备好这些工具:

都安装完毕后,用管理员权限打开 powershell 执行 openclaw 官方的脚本即可

管理员权限重要,不然有一步注册服务会报错

1
iwr -useb https://openclaw.ai/install.ps1 | iex

一切正常的话,现在就安装完成了

开启 node 节点的功能

原理说明

node 本质是开启了和 gateway 节点的通信,当 gateway 收到了 llm 操控 node 节点的请求时,会将对应的操作转发给 node 去执行。

从这个设计上就可以发现我们配置 node 功能几个必要的点:

  • 和 gateway 的通信,根据每个人的 gateway 安全监听设置不同,通信方式也不同
    举例来说,我的 gateway 是只监听了本地回环,因此我选择用端口转发来实现 node 访问 gateway 节点。如果你配置的安全策略和我不同,那么应该不需要端口转发这一步

    具体的拓扑图如下

    1
    2
    3
    4
    Windows node
    -> SSH 本地端口转发
    -> Linux gateway (127.0.0.1:18789)
    -> OpenClaw
  • 和 gateway 的通信,权限验证不同
    举例来说,gateway 的验证分为 token 和 password ,我设置的是 token ,因此连接时需要提供 token 的参数。如果是 password 那么可能需要提供 password 作为验证参数

  • 转发的操作安全性怎么保证? llm 来个 rm -rf / 总不能直接就删库跑路了吧 或者来个 cat ~/.ssh/* 就把你的密钥给拿走了
    这一步在前言中有写,gateway 和 node 都可以配置 llm 可以执行操作的白名单,这样就能避免 llm 的权限过大误操作的问题

建立 SSH 隧道 实现端口转发

在 node 节点上执行如下命令,实现端口转发

1
ssh -N -L 18789:127.0.0.1:18789 ${你的用户名}@${你部署openclaw的机器的地址}

这条命令是啥意思?

  • -N Do not execute remote command 连接后不开启交互功能(等于只是建立了一个链接)
  • -L 开启端口转发
  • 18789 本地端口
  • 127.0.0.1 目标地址 (远程服务器内部)
  • 18789 目标端口

等于你如果访问本机的 18789 端口,连接是通过 ssh 隧道到了远程服务后,再转发到远程服务器的 127.0.0.1:18789 中

1
本机:18789  →  SSH隧道  →  远程服务器  →  127.0.0.1:18789

分析一下可以发现,如果把 127.0.0.1 改成 其他域名是不是也可以?Yes, 用 -D 即可,因此 ssh 也是可以作为代理使用的,具体命令使用可以自己搜索

配置环境变量

参见原理说明中的安全性权限验证,这一步需要注入到环境变量,修改你的环境变量,增加一个值 OPENCLAW_GATEWAY_TOKEN

这个 token 从哪里拿呢?其实就是你打开控制面板网页用的那个,可以在运行 gateway 的机器上这么查询

1
openclaw dashboard | grep token

你屏幕上的输出应该类似这个

1
2
Dashboard URL: http://127.0.0.1:18789/#token=一串乱码
http://localhost:18789/#token=一串乱码

把那一串乱码复制好然后在你的要部署 node 的机器上这样执行

1
2
3
setx OPENCLAW_GATEWAY_TOKEN=${你的token}
# 比如你上面拿到的 token 是 aabbccdd 的话,就这么配置
# setx OPENCLAW_GATEWAY_TOKEN=aabbccdd

需要注意的是配置好的环境变量在当前的 session 中是不生效的,因此需要重新开一个 shell

开启node服务

管理员权限 新打开一个 powershell 然后执行

1
openclaw node run --host 127.0.0.1 --port 18789 --display-name "windowsNode"

具体的命令解释如下

  • node node 节点相关的子命令
  • run node 节点开启运行,去 gateway 注册
  • --host 127.0.0.1 gateway 机器所在地址,我这里由于安全设置因此用的是端口转发,按照你实际的需求修改
  • --port 18789 gateway 机器的端口,和 --host 一样,按照你实际的需求修改
  • --display-name "windowsNode" 这个机器在 gateway 那里叫啥名字,你自己定义一个名字即可

这里如果运行没出错的话,那么应该的表现是如下这样:

1
2
3
4
5
PS C:\Users\yika> openclaw node run --host 127.0.0.1 --port 18789 --display-name "windowsNode"

🦞 OpenClaw 2026.3.8 (3caab92) — No $999 stand required.

node host PATH: /bin;C:\Python314\Scripts\;C:\Python314\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Users\yika\AppData\Local\Microsoft\WindowsApps;C:\Users\yika\AppData\Roaming\npm

打印了一个 path 地址就停住了,这是正常的,说明已经连上了,此时需要在 gateway 的机器上配置

在 gateway 的机器上配置

检查节点注册状态

先检查一下是否已经成功注册上了:

1
openclaw nodes status

期望的输出如下

1
2
3
4
5
6
7
8
9
10
11
12
🦞 OpenClaw 2026.3.7 (unknown) — I can run local, remote, or purely on vibes—results may vary with DNS.



Known: 1 · Paired: 1 · Connected: 1
┌──────────────┬──────────────────────────────────────────────────────────────────┬──────────┬────────────────────────────────────────┬─────────────────────────────┬────────────┐
│ Node │ ID │ IP │ Detail │ Status │ Caps │
├──────────────┼──────────────────────────────────────────────────────────────────┼──────────┼────────────────────────────────────────┼─────────────────────────────┼────────────┤
│ windowsNode │ 一串id │ │ core v2026.3.8 · path: / │ paired · connected (4m ago) │ browser, │
│ │ │ │ bin;C:\Python314\Scripts\;C:…:\Users\y │ │ system
│ │ │ │ ika\AppData\Roaming\npm │ │ │
└──────────────┴──────────────────────────────────────────────────────────────────┴──────────┴────────────────────────────────────────┴─────────────────────────────┴────────────┘

只要看 status 里面的状态是 paired · connected 就说明已经连上了,如果没有可以看看日志是啥情况

配置允许在 node 上的操作

理论上,llm 发起的请求,会发起一个审批。但实际上目前的飞书并不支持对应的功能,看官方文档 discord 支持可视化的审批按钮,我们还是在本地设置一下吧

在我们的控制台的设置上,搜索 approvals

  • 打开 Forward Exec Approvals 的开关
  • Approval Forwarding Mode 设置为 session

然后在命令行中输入这行命令

1
openclaw approvals allowlist add --node windowsNode "C:\Windows\System32\calc.exe"

这行命令的意思是,在 windowsNode 这个节点上,允许 llm 执行 "C:\Windows\System32\calc.exe" 这行命令

可以用下面这行命令来验证配置是否正确

1
openclaw approvals get --node windowsNode

看一下输出,里面应该有刚刚配置好的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
🦞 OpenClaw 2026.3.7 (unknown)Shell yeahI'm here to pinch the toil and leave you the glory.





Approvals
┌───────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
FieldValue
├───────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
Targetnode: aabbccdd
PathC:\Users\yika/.openclaw/exec-approvals.json
Existsyes
Hash │ │
Version1
SocketC:\Users\yika/.openclaw/exec-approvals.sock
Defaultsnone
Agents2
Allowlist1
└───────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Allowlist
┌───────────────────────────────────────────────────────────────────────┬────────┬───────────────────────────────────────────────────────────────────────────────────┬───────────┐
TargetAgentPatternLast Used
├───────────────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
node: aabbccdd*C:\Windows\System32\calc.exe23h ago
└───────────────────────────────────────────────────────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────┴───────────┘

最后验证

配置好后直接和 openclaw 对话 让它看连接了什么 node ,并且让它在这个 node 上执行 calc.exe ,如果一切正常的话,你会在你的 windows 机器上看到计算器弹了出来

至此 配置结束,要给其他的命令的可执行权限可以自行添加。你的 openclaw 可以并行在多个机器上执行不同的任务了

尾巴

最近 openclaw 很火,火出圈了。实事求是的讲,相比于 codex roocode 这种编程助手的插件而言,功能上 openclaw 似乎没什么本质区别。为什么这么吸引人?我认为重要的点在于:

  1. 社交软件的接入
    相比于各种 chat 客户端而言,无缝接入了社交软件,体验更加丝滑
  2. llm 有了可执行的环境
    相比于 tool calling ,现在可以直接本地跑命令。这个功能其实类似于 codex claudecode roocode 一类的助手,可以及时的看到结果,并不断随之修改,直到达成目标。只不过之前只是对程序员有认知,现在属于是出圈了,普通人也可以感受到这种长出了手的智能助手的冲击力
    这样做的优点自然是上限极高,可以无缝继承当今世界上大部分的命令行工具(tui一类交互式的除外),缺点自然是安全性相关的问题
  3. 内置的多 agent
    后台任务有 subagent 去执行,主 agent 只管分析结果和与用户交互,保证了响应的速度

将上述的几点组合起来,在对技术不了解的人的眼中,这个就好像是你真的有了一个 24h 在线的助手,它可以在后台帮你实现各种功能(实现了多少另说)。我认为相比于以前的各种套个提示词模板就可以称为 agent 的项目而言,这个表现才更值得被称作 agent 。我认为在大众的眼中,这个是可能仅次于 chatgpt 的时刻,仿佛之前只能说的模型现在也长出手了。谁不想要一个 24h 不休息的核动力牛马呢?

另外让我印象深刻的是,由于怎么部署、连接 node 节点的资料稀少,因此我让 openclaw 直接翻自己的代码实现来分析解决我遇到的问题,这真的让我感受到了赛博生命般的存在,非常夸张

当然,现在这代码量纯纯的屎山,pr 充斥着各路 ai 的 review vibe coding 的成果,激烈程度堪比中东。openclaw 不会是最后成功的产品,但确实让大众能够直观地感受到 ai 的魅力

参考

官方文档


在 windows 上部署 openclaw node
https://www.yikakia.com/deploy-openclaw-node-on-windows/
作者
Yika
发布于
2026年3月9日
许可协议