OpenClaw 无头节点主机(Node Host)完全指南:`openclaw node` 命令实战与源码解析

📅 发布时间:2026/10/13 18:05:18
OpenClaw 无头节点主机(Node Host)完全指南:`openclaw node` 命令实战与源码解析
人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载本指南系统讲解 OpenClaw 的headless node host无头节点主机它是什么、为什么需要它以及如何用openclaw node命令在 Linux/Windows 等非 macOS 机器上把它跑起来将这台机器的命令执行能力system.run/system.which通过 Gateway WebSocket 暴露给 Agent。读完本文你将掌握openclaw node run前台运行、openclaw node install后台服务化、Gateway 认证解析、设备配对、浏览器代理以及 Exec Approvals 审批链路的完整实操方法与底层原理。一、什么是 Node Host为什么需要它Node Host节点主机是一个轻量的无头headless无 UI执行端进程。它不像完整的 macOS 伴侣应用那样需要图形界面只需连接 Gateway 的 WebSocket 端口默认18789即可把本机的system.run/system.which命令面暴露给 Gateway 上的 Agent。它解决的核心问题是让 Agent 能在你网络中的其他机器上执行命令而不必在那台机器上安装完整的 macOS 伴侣应用。典型使用场景包括在远程 Linux/Windows 机器上运行命令构建服务器、实验室机器、NAS 等在 Gateway 侧保持 exec 沙箱化但把已批准的执行任务委托给其他主机为自动化任务或 CI 节点提供一个轻量、无头的执行目标。注意执行过程仍然受exec approvals执行审批和 node host 上每个 Agent 独立的 allowlist白名单保护命令访问权限保持受限且显式。从源码看node host 在 node-host/runner.ts 中通过GatewayClient建立 WebSocket 连接声明的能力caps与命令面commands非常精简命令面system.run.prepare、system.run、system.which来自 infra/node-commands.ts 的NODE_SYSTEM_RUN_COMMANDS若浏览器代理启用额外注册browser.proxyNODE_BROWSER_PROXY_COMMAND审批管理命令system.execApprovals.get/system.execApprovals.setNODE_EXEC_APPROVALS_COMMANDS。它连接到 Gateway 时使用role: node、mode: NODE这与 macOS 伴侣应用作为 node 时的行为一致但更轻量。二、整体架构模型在 Gateway命令在 Node理解 Node Host 的分工非常重要可参考 nodes 文档Gateway 主机接收消息、运行模型、路由工具调用Node Host在节点机器上执行system.run/system.which审批Approvals在 node host 本地通过~/.openclaw/exec-approvals.json强制执行。也就是说Agent 的“大脑”始终在 GatewayNode Host 只是“手”。执行请求经 Gateway 的 WebSocket 以node.invoke.request事件下发到 node hostnode host 执行完毕后通过node.invoke.result回传结果同时通过node.event上报exec.finished/exec.denied等生命周期事件见 node-host/invoke.ts 的sendInvokeResult与sendNodeEvent。2.1 远程 Gateway 的 SSH 隧道场景本地模式下 Gateway 默认绑定回环地址gateway.bindloopback远程 node host 无法直连。此时可创建 SSH 隧道把 node host 指向隧道本地端# 终端 A保持运行把本地 18790 转发到网关的 127.0.0.1:18789 ssh -N -L 18790:127.0.0.1:18789 usergateway-host # 终端 B导出网关令牌并通过隧道连接 export OPENCLAW_GATEWAY_TOKENgateway-token openclaw node run --host 127.0.0.1 --port 18790 --display-name Build Node三、前台运行openclaw node run在节点机器上启动一个前台 node host不创建系统服务openclaw node run --host gateway-host --port 187893.1 选项一览选项说明默认值--host hostGateway WebSocket 主机127.0.0.1--port portGateway WebSocket 端口18789--tls对 Gateway 连接启用 TLSfalse--tls-fingerprint sha256期望的 TLS 证书指纹sha256无--node-id id覆盖 node id会清除配对令牌无--display-name name覆盖节点显示名称机器名选项注册与默认值解析可在 cli/node-cli/register.ts 中看到run子命令会先调用loadNodeHostConfig()读取已有配置命令行选项优先于配置配置再优先于内置默认值--tls或--tls-fingerprint任一存在都会启用 TLS。3.2 启动时发生了什么源码视角在 node-host/runner.ts 的runNodeHost中通过ensureNodeHostConfig()读取/创建~/.openclaw/node.json不存在时生成crypto.randomUUID()作为 node id见 node-host/config.ts将 CLI 传入的gatewayHost/gatewayPort/TLS 信息写入config.gateway解析浏览器代理是否启用见下文第四节解析 Gateway 认证凭据见第四节构造wss://TLS或ws://连接 URL创建GatewayClient并start()。node host 进程会常驻前台断线时由GatewayClient自动重试并分别通过onConnectError/onClose向 stderr 打印连接失败或关闭原因。四、Gateway 认证解析规则openclaw node run与openclaw node install都没有--token/--password标志认证完全来自配置与环境变量解析顺序如下优先检查OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD环境变量其次回退到本地配置gateway.auth.token/gateway.auth.password本地模式下当gateway.auth.*未设置时gateway.remote.token/gateway.remote.password也可作为回退在gateway.moderemote远程模式下gateway.remote.token/gateway.remote.password按远程优先级规则同样可用旧版CLAWDBOT_GATEWAY_*环境变量在 node host 认证解析中被明确忽略。从源码看node-host/runner.ts 的resolveNodeHostGatewayCredentials会把 env 优先级设为env-first并构造一个不继承gateway.remote.*凭据的本地配置buildNodeHostLocalAuthConfig避免远端凭据抑制本地GatewayClient的 device-token 回退导致令牌不匹配。完整认证流程见 gateway/connection-auth.ts。五、后台服务openclaw node install与生命周期管理需要长期后台运行时把 node host 安装为用户级服务openclaw node install --host gateway-host --port 187895.1 安装选项选项说明默认值--host hostGateway WebSocket 主机127.0.0.1--port portGateway WebSocket 端口18789--tls对 Gateway 连接启用 TLSfalse--tls-fingerprint sha256期望的 TLS 证书指纹sha256无--node-id id覆盖 node id会清除配对令牌无--display-name name覆盖节点显示名称机器名--runtime runtime服务运行时node或bunnode--force已安装时重新安装/覆盖无--runtime仅接受node或bun非法值会被拒绝见 cli/node-cli/daemon.ts 与 commands/node-daemon-runtime.ts。安装前若检测到服务已存在且未传--force命令会直接返回already-installed并提示使用openclaw node install --force重装。5.2 服务管理命令openclaw node status openclaw node stop openclaw node restart openclaw node uninstall需要前台运行不创建服务时使用openclaw node run以上服务命令均支持--json输出机器可读结果openclaw node status会显示服务加载状态、启动命令、服务文件路径、工作目录与运行时状态未加载时还会给出对应的启动提示。5.3 跨平台服务名Node 服务按平台自动选择注册方式标识见 daemon/constants.tsmacOSlaunchd LaunchAgent标签ai.openclaw.nodeplist 位于~/Library/LaunchAgents/ai.openclaw.node.plistLinuxsystemd 用户服务服务名openclaw-nodeWindows计划任务任务名OpenClaw Node。安装计划program arguments、工作目录、环境变量与描述由buildNodeInstallPlan生成见 commands/node-daemon-install-helpers.ts并保证 node 工具链npm/pnpm 等兄弟二进制在服务 PATH 上可用。六、配对Pairing流程node host 的首次连接会在 Gateway 上创建一个挂起的设备配对请求role: node。在 Gateway 主机上批准openclaw devices list openclaw devices approve requestId配对成功后node host 会把 node id、令牌、显示名称和 Gateway 连接信息保存在~/.openclaw/node.json写入时使用0600权限见 node-host/config.ts。配对与审批是两个独立闸门详见 nodes 排障文档设备配对device pairing决定该节点能否连接 Gateway执行审批exec approvals决定该节点能否执行某条具体命令。配对缺失时先批准设备配对正常但system.run失败时应修复 exec approvals / allowlist。配对完成后还可以在 Gateway 侧重命名openclaw nodes rename --node id|name|ip --name Build Node或在启动时用--display-name直接指定后者会持久化到 node 本地的~/.openclaw/node.json。七、浏览器代理零配置启用只要节点上没有禁用browser.enablednode host 会自动广播一个browser proxy浏览器代理让 Agent 无需额外配置即可在该节点上进行浏览器自动化。启用时GatewayClient的 caps 中会附带browser并注册browser.proxy命令见 node-host/runner.ts。需要时可在节点上显式关闭{ nodeHost: { browserProxy: { enabled: false, }, }, }从配置 schema 看config/zod-schema.ts 的NodeHostSchemanodeHost.browserProxy除enabled外还支持allowProfiles允许的浏览器配置列表。同时注意浏览器代理是否真正广播还取决于resolveBrowserConfig解析出的browser.enabled结果——即cfg.nodeHost?.browserProxy?.enabled ! false resolvedBrowser.enabled两者同时为真才启用。八、Exec Approvals谁能在节点上执行命令system.run由 node host 本地的exec approvals把关审批文件~/.openclaw/exec-approvals.json审批机制详解Exec approvals从 Gateway 侧编辑openclaw approvals --node id|name|ip详见 approvals CLI。8.1 从 Gateway 侧维护节点白名单openclaw approvals get --node id|name|ip openclaw approvals allowlist add --node id|name|ip /usr/bin/uname openclaw approvals allowlist add --node id|name|ip /usr/bin/sw_vers openclaw approvals allowlist remove ~/Projects/**/bin/rg--node使用与openclaw nodes相同的解析器id、名称、IP 或 id 前缀--agent默认值为*表示对所有 Agent 生效审批文件按主机独立存储于~/.openclaw/exec-approvals.json该能力依赖节点广播system.execApprovals.get/setmacOS 应用或无头 node host 均支持。8.2 审批文件结构示例{ version: 1, socket: { path: ~/.openclaw/exec-approvals.sock, token: base64url-token }, defaults: { security: deny, ask: on-miss, askFallback: deny, autoAllowSkills: false }, agents: { main: { security: allowlist, ask: on-miss, askFallback: deny, autoAllowSkills: true, allowlist: [ { id: B0C8C0B3-2C2D-4F8A-9A3C-5A4B3C2D1E0F, pattern: ~/Projects/**/bin/rg, lastUsedAt: 1737150000000, lastUsedCommand: rg -n TODO, lastResolvedPath: /Users/user/Projects/.../bin/rg } ] } } }关键策略旋钮securitydeny阻断全部/allowlist仅放行白名单/full放行一切askoff从不询问/on-miss白名单未命中才询问/always每次询问askFallback无 UI 可达时的兜底决策默认deny阻断。8.3 把 exec 指向节点在 Gateway 配置中设置默认执行主机为 node详见 nodes 文档openclaw config set tools.exec.host node openclaw config set tools.exec.security allowlist openclaw config set tools.exec.node id-or-name或按会话临时指定/exec hostnode securityallowlist nodeid-or-name设置后任何hostnode的 exec 调用都会在 node host 上执行受节点白名单/审批约束。九、system.run的执行链路源码级node host 对一次system.run的处理在 node-host/invoke-system-run.ts 中分为三个阶段值得了解以排查问题解析阶段parse解析命令 argv、shell 载荷、审批计划systemRunPlan、环境覆盖env overrides等非法请求空命令、被阻断的 PATH 覆盖、不可移植的环境变量键直接返回INVALID_REQUEST策略评估阶段policy结合 Agent 配置与全局配置解析security/ask执行 allowlist 分析node-host/invoke-system-run-allowlist.ts由 node-host/exec-policy.ts 的evaluateSystemRunPolicy裁决是否放行。securitydeny、需审批但未批准、allowlist 未命中都会拒绝拒绝原因对应securitydeny/approval-required/allowlist-miss执行阶段execute执行前还会做“审批上下文绑定”校验——例如审批时的 cwd 快照在真正执行前发生漂移drift会被拦截SYSTEM_RUN_DENIED: approval cwd changed before execution防止“批准 A 执行 B”。9.1 常见拒绝与错误码错误码 / 消息含义SYSTEM_RUN_DENIED: approval requiredexec 请求需要显式审批SYSTEM_RUN_DENIED: allowlist miss命令被 allowlist 模式拦截Windows 节点上cmd.exe /c ...包装形式在 allowlist 模式下也视为 missSYSTEM_RUN_DENIED: securitydeny审批策略为deny全部阻断NODE_BACKGROUND_UNAVAILABLE仅 iOS/Android 节点前台限制类命令与 node host 无关9.2 节点命令面速查Node Host 支持的完整命令面infra/node-commands.tssystem.run.prepare预先生成审批计划systemRunPlan供 Gateway 侧审批流程绑定权威命令上下文system.run执行命令返回 stdout / stderr / exit code / timedOut 等字段system.which查询指定二进制在节点 PATH 上的解析路径支持 Windows PATHEXT 扩展名匹配system.execApprovals.get/system.execApprovals.set读取/更新节点本地审批文件set要求携带baseHash做并发一致性校验browser.proxy启用浏览器代理时可用。另外两点值得注意Node Host 会忽略PATH覆盖并剥离危险的启动/shell 键DYLD_*、LD_*、NODE_OPTIONS、PYTHON*、PERL*、RUBYOPT、SHELLOPTS、PS4需要额外 PATH 时应配置 node host 服务环境而非通过--env传入在 macOS 上无头 node host 默认在本地执行system.run设置OPENCLAW_NODE_EXEC_HOSTapp可改经伴侣应用 exec host 执行再加OPENCLAW_NODE_EXEC_FALLBACK0则强制要求应用主机可达不可达时直接失败关闭fail closed。十、快速排障与收尾node 相关工具失败时按“命令阶梯”逐层排查详见 nodes 排障文档openclaw status openclaw gateway status openclaw logs --follow openclaw doctor openclaw nodes status openclaw nodes describe --node idOrNameOrIp openclaw approvals get --node idOrNameOrIp健康信号节点已连接且role: node已配对nodes describe中包含你要调用的能力exec approvals 显示预期模式与白名单。若仍卡住依次重新批准设备配对、前台打开节点应用、重新授予系统权限、重建/调整 exec approval 策略即可。最后总结关键路径Node Host 用~/.openclaw/node.json保存身份用~/.openclaw/exec-approvals.json保存审批策略通过 Gateway WebSocket 以role: node注册并提供system.run/system.which可选browser.proxy命令面。把这两份文件的角色分清、把“配对”与“审批”两个闸门记牢你就能稳定地把任意 Linux/Windows 机器变成 OpenClaw Agent 的远程执行节点。赞分享人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载相关推荐openclaw node 无头节点主机CLI 参考与源码级解析openclaw node 无头节点主机CLI 参考与源码级解析 导读 openclaw node 是 OpenClaw 的无头节点主机headless nAI 应用AI Agent交互助手后端即时通讯网关OpenClaw-cn 无头节点主机clawdbot node完整实战指南远程执行、自动配对与审批安全OpenClaw cn 无头节点主机clawdbot node完整实战指南远程执行、自动配对与审批安全 本文面向希望把命令执行能力从网关机器扩展到局域网内人工智能AI Agent即时通讯后端本地部署语音OpenClaw 节点Nodes管理与调用完全指南clawdbot nodes 命令实战OpenClaw 节点Nodes管理与调用完全指南clawdbot nodes 命令实战 clawdbot nodes 是 OpenClaw中文社区版人工智能AI Agent即时通讯后端本地部署语音上一篇使用 Docker Machine 在 Digital Ocean 上部署 Prisma 集群完整实战指南下一篇OpenLayers 3.11.0 版本全解析栅格重投影、Mapbox Vector Tiles 与升级迁移指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考