From ec38d657abc03a3d652f521fa19b6fcd511e772b Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 26 Apr 2026 04:30:33 +0000 Subject: [PATCH] chore(i18n): refresh zh-CN translations --- docs/zh-CN/cli/node.md | 62 ++++---- docs/zh-CN/nodes/index.md | 237 +++++++++++++++-------------- docs/zh-CN/platforms/mac/remote.md | 74 ++++----- 3 files changed, 193 insertions(+), 180 deletions(-) diff --git a/docs/zh-CN/cli/node.md b/docs/zh-CN/cli/node.md index 5f427abc4..6d6a1c4b4 100644 --- a/docs/zh-CN/cli/node.md +++ b/docs/zh-CN/cli/node.md @@ -3,37 +3,37 @@ read_when: - 运行无头节点主机 - 为 `system.run` 配对非 macOS 节点 summary: '`openclaw node` 的 CLI 参考(无头节点主机)' -title: Node +title: 节点 x-i18n: - generated_at: "2026-04-25T05:53:40Z" + generated_at: "2026-04-26T04:29:33Z" model: gpt-5.4 provider: openai - source_hash: d8c4b4697da3c0a4594dedd0033a114728ec599a7d33089a33e290e3cfafa5cd + source_hash: ebeeb6a271c7f265943197d816adc3ad46c61b1671885638f4c9be8c321aec9f source_path: cli/node.md workflow: 15 --- # `openclaw node` -运行一个**无头节点主机**,将其连接到 Gateway 网关 WebSocket,并在这台机器上暴露 `system.run` / `system.which`。 +运行一个**无头节点主机**,连接到 Gateway 网关 WebSocket,并在这台机器上暴露 `system.run` / `system.which`。 -## 为什么要使用节点主机? +## 为什么使用节点主机? -当你希望智能体能够**在网络中的其他机器上运行命令**,而又不想在那些机器上安装完整的 macOS 配套应用时,可以使用节点主机。 +当你希望智能体能够**在你网络中的其他机器上运行命令**,而又不想在那里安装完整的 macOS 配套应用时,可以使用节点主机。 常见用例: -- 在远程 Linux/Windows 主机上运行命令(构建服务器、实验室机器、NAS)。 -- 让 exec 在网关上保持**沙箱隔离**,但将获批的运行委派给其他主机。 -- 为自动化或 CI 节点提供轻量级、无头的执行目标。 +- 在远程 Linux/Windows 机器上运行命令(构建服务器、实验室机器、NAS)。 +- 将 exec 保持为 Gateway 网关上的**沙箱隔离**执行,但把已批准的运行委派给其他主机。 +- 为自动化或 CI 节点提供一个轻量级、无头的执行目标。 -执行仍然受到**exec 审批**和节点主机上每个智能体允许列表的保护,因此你可以让命令访问范围保持明确且可控。 +执行仍然受**exec 审批**和节点主机上每个智能体的允许列表保护,因此你可以让命令访问保持在明确且受限的范围内。 ## 浏览器代理(零配置) -如果节点上未禁用 `browser.enabled`,节点主机会自动发布浏览器代理。这使得智能体无需额外配置,就能在该节点上使用浏览器自动化。 +如果节点上的 `browser.enabled` 未被禁用,节点主机会自动通告一个浏览器代理。这样智能体无需额外配置,就可以在该节点上使用浏览器自动化。 -默认情况下,该代理会暴露节点的常规浏览器配置文件能力范围。如果你设置了 `nodeHost.browserProxy.allowProfiles`,该代理就会变为限制模式:不在允许列表中的配置文件目标会被拒绝,并且通过代理访问持久化配置文件的创建/删除路由也会被阻止。 +默认情况下,该代理会暴露节点正常的浏览器配置文件表面。如果你设置了 `nodeHost.browserProxy.allowProfiles`,代理将变为限制模式:不在允许列表中的配置文件目标会被拒绝,并且通过代理会阻止持久化配置文件的创建/删除路由。 如有需要,可在节点上禁用它: @@ -57,25 +57,25 @@ openclaw node run --host --port 18789 - `--host `:Gateway 网关 WebSocket 主机(默认:`127.0.0.1`) - `--port `:Gateway 网关 WebSocket 端口(默认:`18789`) -- `--tls`:为网关连接使用 TLS +- `--tls`:对 Gateway 网关连接使用 TLS - `--tls-fingerprint `:预期的 TLS 证书指纹(sha256) - `--node-id `:覆盖节点 id(会清除配对令牌) - `--display-name `:覆盖节点显示名称 ## 节点主机的 Gateway 网关认证 -`openclaw node run` 和 `openclaw node install` 会从配置/环境变量解析网关认证信息(节点命令上没有 `--token`/`--password` 标志): +`openclaw node run` 和 `openclaw node install` 会从配置/环境变量中解析 Gateway 网关认证(节点命令不支持 `--token`/`--password` 标志): - 首先检查 `OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`。 - 然后回退到本地配置:`gateway.auth.token` / `gateway.auth.password`。 -- 在本地模式下,节点主机不会有意继承 `gateway.remote.token` / `gateway.remote.password`。 -- 如果通过 SecretRef 显式配置了 `gateway.auth.token` / `gateway.auth.password` 但未能解析,节点认证解析会以失败关闭(不会用远程回退来掩盖问题)。 -- 在 `gateway.mode=remote` 下,根据远程优先级规则,远程客户端字段(`gateway.remote.token` / `gateway.remote.password`)也可以参与解析。 -- 节点主机认证解析只识别 `OPENCLAW_GATEWAY_*` 环境变量。 +- 在本地模式下,节点主机有意不继承 `gateway.remote.token` / `gateway.remote.password`。 +- 如果通过 SecretRef 显式配置了 `gateway.auth.token` / `gateway.auth.password` 但无法解析,则节点认证解析会以关闭方式失败(不会用远程回退来掩盖问题)。 +- 在 `gateway.mode=remote` 中,远程客户端字段(`gateway.remote.token` / `gateway.remote.password`)也会按照远程优先级规则纳入候选。 +- 节点主机认证解析仅接受 `OPENCLAW_GATEWAY_*` 环境变量。 -对于连接到受信任私有网络中非 loopback `ws://` Gateway 网关的节点,请设置 `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`。否则,节点启动会以失败关闭,并提示你改用 `wss://`、SSH 隧道或 Tailscale。 -这是一个进程环境变量显式启用项,不是 `openclaw.json` 配置键。 -当它出现在安装命令环境中时,`openclaw node install` 会将其持久化到受监管的节点服务中。 +对于连接到受信任私有网络中非 loopback `ws://` Gateway 网关的节点,请设置 `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`。如果未设置,节点启动将以关闭方式失败,并要求你使用 `wss://`、SSH 隧道或 Tailscale。 +这是进程环境变量级别的显式启用项,不是 `openclaw.json` 配置键。 +如果 `openclaw node install` 的安装命令环境中存在该变量,它会被持久化到受监管的节点服务中。 ## 服务(后台) @@ -89,17 +89,18 @@ openclaw node install --host --port 18789 - `--host `:Gateway 网关 WebSocket 主机(默认:`127.0.0.1`) - `--port `:Gateway 网关 WebSocket 端口(默认:`18789`) -- `--tls`:为网关连接使用 TLS +- `--tls`:对 Gateway 网关连接使用 TLS - `--tls-fingerprint `:预期的 TLS 证书指纹(sha256) - `--node-id `:覆盖节点 id(会清除配对令牌) - `--display-name `:覆盖节点显示名称 - `--runtime `:服务运行时(`node` 或 `bun`) - `--force`:如果已安装,则重新安装/覆盖 -管理该服务: +管理服务: ```bash openclaw node status +openclaw node start openclaw node stop openclaw node restart openclaw node uninstall @@ -107,19 +108,19 @@ openclaw node uninstall 前台节点主机(非服务)请使用 `openclaw node run`。 -服务命令支持 `--json`,可输出机器可读格式。 +服务命令支持 `--json`,用于机器可读输出。 ## 配对 首次连接会在 Gateway 网关上创建一个待处理的设备配对请求(`role: node`)。 -可通过以下方式批准: +可通过以下命令批准: ```bash openclaw devices list openclaw devices approve ``` -在严格受控的节点网络中,Gateway 网关操作员可以显式启用:对于来自受信任 CIDR 的首次节点配对自动批准: +在严格受控的节点网络中,Gateway 网关运营者可以显式启用:对来自受信任 CIDR 的首次节点配对自动批准: ```json5 { @@ -133,12 +134,12 @@ openclaw devices approve } ``` -该功能默认禁用。它仅适用于没有请求作用域的全新 `role: node` 配对。操作员/浏览器客户端、Control UI、WebChat,以及角色、作用域、元数据或公钥升级,仍然需要手动批准。 +此功能默认禁用。它只适用于没有请求作用域的全新 `role: node` 配对。运营者/浏览器客户端、Control UI、WebChat,以及角色、作用域、元数据或公钥升级,仍然需要手动批准。 -如果节点使用变更后的认证详情(角色/作用域/公钥)重试配对,之前待处理的请求会被替代,并创建新的 `requestId`。 +如果节点在认证细节发生变化后重试配对(角色/作用域/公钥),之前待处理的请求会被替代,并创建新的 `requestId`。 请在批准前再次运行 `openclaw devices list`。 -节点主机会将其节点 id、令牌、显示名称和 Gateway 网关连接信息存储在 `~/.openclaw/node.json` 中。 +节点主机会将其节点 id、令牌、显示名称以及 Gateway 网关连接信息存储在 `~/.openclaw/node.json` 中。 ## Exec 审批 @@ -148,8 +149,7 @@ openclaw devices approve - [Exec 审批](/zh-CN/tools/exec-approvals) - `openclaw approvals --node `(从 Gateway 网关编辑) -对于已批准的异步节点 exec,OpenClaw 会在提示前准备一个规范的 `systemRunPlan`。 -之后获批的 `system.run` 转发会复用这个已存储的计划,因此在审批请求创建后对命令/cwd/会话字段的编辑会被拒绝,而不是改变节点实际执行的内容。 +对于已批准的异步节点 exec,OpenClaw 会在提示前准备一个规范化的 `systemRunPlan`。后续已批准的 `system.run` 转发会复用该已存储计划,因此如果在创建审批请求之后再编辑 command/cwd/session 字段,将会被拒绝,而不是改变节点实际执行的内容。 ## 相关内容 diff --git a/docs/zh-CN/nodes/index.md b/docs/zh-CN/nodes/index.md index d76f95718..0be9361de 100644 --- a/docs/zh-CN/nodes/index.md +++ b/docs/zh-CN/nodes/index.md @@ -1,36 +1,40 @@ --- read_when: - - 将 iOS/Android 节点配对到 gateway pc蛋蛋 to=final code omitted - - 使用节点 canvas/camera 为智能体提供上下文 - - 添加新的节点命令或 CLI 辅助命令时 -summary: 节点:配对、能力、权限,以及用于 canvas/camera/screen/device/notifications/system 的 CLI 辅助命令 + - 将 iOS/Android 节点与 Gateway 网关配对 + - 将节点的 canvas/相机用于智能体上下文 + - 添加新的节点命令或 CLI 辅助工具 +summary: 节点:配对、能力、权限,以及用于 canvas/相机/屏幕/设备/通知/系统的 CLI 辅助工具 title: 节点 x-i18n: - generated_at: "2026-04-23T20:53:52Z" + generated_at: "2026-04-26T04:29:36Z" model: gpt-5.4 provider: openai - source_hash: 1a210a5b90d78870dd6d17c0f0a81181a8897dc41149618c4359d7c03ef342fd + source_hash: 611678b91b0e54910fded6f7d25bf4b5ef03e0a4e1da6d72f5ccf30d18054d3d source_path: nodes/index.md workflow: 15 --- -**节点**是一个配套设备(macOS/iOS/Android/无头),它以 `role: "node"` 连接到 Gateway **WebSocket**(与操作员使用同一端口),并通过 `node.invoke` 暴露一个命令界面(例如 `canvas.*`、`camera.*`、`device.*`、`notifications.*`、`system.*`)。协议细节请参见:[Gateway protocol](/zh-CN/gateway/protocol)。 +**节点**是连接到 Gateway 网关 **WebSocket**(与 operator 使用相同端口)的配套设备(macOS/iOS/Android/无头),在 `connect` 时使用 `role: "node"`,并通过 `node.invoke` 暴露命令接口(例如 `canvas.*`、`camera.*`、`device.*`、`notifications.*`、`system.*`)。协议详情: [Gateway protocol](/zh-CN/gateway/protocol)。 -旧版传输层:[Bridge protocol](/zh-CN/gateway/bridge-protocol)(TCP JSONL; -仅供当前节点的历史参考)。 +旧版传输协议: [Bridge protocol](/zh-CN/gateway/bridge-protocol)(TCP JSONL; +仅作当前节点的历史参考)。 -macOS 也可以运行在**节点模式**下:菜单栏应用会连接到 Gateway 的 WS 服务器,并将其本地 canvas/camera 命令作为节点暴露出来(因此 `openclaw nodes …` 可对这台 Mac 生效)。 +macOS 也可以运行在 **节点模式** 下:菜单栏应用会连接到 Gateway 网关的 +WS 服务器,并将其本地的 canvas/相机命令作为一个节点暴露出来(因此 +`openclaw nodes …` 可以针对这台 Mac 使用)。在远程 Gateway 网关模式下,浏览器 +自动化由 CLI 节点主机(`openclaw node run` 或已安装的 +节点服务)处理,而不是由原生应用节点处理。 -说明: +注意: -- 节点是**外设**,不是 gateway。它们不会运行 gateway 服务。 -- Telegram/WhatsApp 等消息会落到 **gateway** 上,而不是节点上。 -- 故障排除操作手册:[/nodes/troubleshooting](/zh-CN/nodes/troubleshooting) +- 节点是**外设**,不是 Gateway 网关。它们不运行 gateway 服务。 +- Telegram/WhatsApp 等消息会到达 **gateway**,不会到达节点。 +- 故障排除运行手册:[/nodes/troubleshooting](/zh-CN/nodes/troubleshooting) ## 配对 + 状态 -**WS 节点使用设备配对。** 节点会在 `connect` 期间提供设备身份;Gateway -会为 `role: node` 创建设备配对请求。请通过设备 CLI(或 UI)批准。 +**WS 节点使用设备配对。** 节点在 `connect` 期间会提供设备身份;Gateway 网关 +会为 `role: node` 创建设备配对请求。可通过设备 CLI(或 UI)批准。 快速 CLI: @@ -42,18 +46,18 @@ openclaw nodes status openclaw nodes describe --node ``` -如果某个节点以变更后的认证详情(role/scopes/public key)重试,则之前 +如果节点在重试时认证详情发生变化(role/scopes/public key),先前 待处理的请求会被替代,并创建新的 `requestId`。批准前请重新运行 `openclaw devices list`。 -说明: +注意: -- 当节点的设备配对角色包含 `node` 时,`nodes status` 会将其标记为**已配对**。 -- 设备配对记录是持久的已批准角色契约。token - 轮换始终发生在该契约之内;它不能将已配对节点升级为 - 一个配对批准从未授予过的不同角色。 -- `node.pair.*`(CLI:`openclaw nodes pending/approve/reject/rename`)是一个单独的 gateway 持有的 - 节点配对存储;它**不会**对 WS `connect` 握手进行门控。 +- 当节点的设备配对 role 包含 `node` 时,`nodes status` 会将该节点标记为 **paired**。 +- 设备配对记录是持久化的已批准 role 契约。令牌轮换 + 会保留在该契约内;它不能将一个已配对节点升级为 + 配对批准从未授予过的其他 role。 +- `node.pair.*`(CLI:`openclaw nodes pending/approve/reject/rename`)是一个独立的、由 gateway 拥有的 + 节点配对存储;它**不会**控制 WS `connect` 握手。 - 批准范围遵循待处理请求声明的命令: - 无命令请求:`operator.pairing` - 非 exec 节点命令:`operator.pairing` + `operator.write` @@ -61,22 +65,24 @@ openclaw nodes describe --node ## 远程节点主机(system.run) -当你的 Gateway 运行在一台机器上,而你希望命令在另一台机器上执行时,请使用**节点主机**。模型仍然与 **gateway** 对话;当选择 `host=node` 时,gateway 会将 `exec` 调用转发给**节点主机**。 +当你的 Gateway 网关运行在一台机器上,而你希望命令在另一台机器上 +执行时,请使用**节点主机**。模型仍然与 **gateway** 通信;当选择 +`host=node` 时,gateway 会将 `exec` 调用转发到**节点主机**。 -### 哪些内容运行在哪里 +### 各部分运行位置 -- **Gateway 主机**:接收消息、运行模型、路由工具调用。 -- **节点主机**:在节点机器上执行 `system.run`/`system.which`。 -- **审批**:在节点主机上通过 `~/.openclaw/exec-approvals.json` 强制执行。 +- **Gateway host**:接收消息、运行模型、路由工具调用。 +- **Node host**:在节点机器上执行 `system.run`/`system.which`。 +- **Approvals**:由节点主机上的 `~/.openclaw/exec-approvals.json` 强制执行。 -审批说明: +批准说明: -- 基于审批的节点运行会绑定精确的请求上下文。 -- 对于直接 shell/运行时文件执行,OpenClaw 还会尽力绑定一个具体的本地 - 文件操作数,并在该文件执行前发生变化时拒绝运行。 -- 如果 OpenClaw 无法为解释器/运行时命令识别出恰好一个具体本地文件, - 则基于审批的执行会被拒绝,而不是假装拥有完整运行时覆盖。对于更广泛的解释器语义,请使用沙箱、 - 独立主机,或显式的受信任 allowlist/full 工作流。 +- 基于批准的节点运行会绑定精确的请求上下文。 +- 对于直接的 shell/运行时文件执行,OpenClaw 还会尽力绑定一个具体的本地 + 文件操作数;如果该文件在执行前发生变化,则拒绝运行。 +- 如果 OpenClaw 无法为解释器/运行时命令准确识别出唯一的具体本地文件, + 则会拒绝基于批准的执行,而不是假装提供完整的运行时覆盖。对于更广泛的解释器语义,请使用沙箱隔离、 + 独立主机,或显式的受信任允许列表/完整工作流。 ### 启动节点主机(前台) @@ -86,37 +92,38 @@ openclaw nodes describe --node openclaw node run --host --port 18789 --display-name "Build Node" ``` -### 通过 SSH 隧道连接远程 gateway(loopback 绑定) +### 通过 SSH 隧道连接远程 Gateway 网关(loopback 绑定) -如果 Gateway 绑定到 loopback(`gateway.bind=loopback`,本地模式下默认), -远程节点主机无法直接连接。请创建一个 SSH 隧道,并让 -节点主机指向隧道的本地端。 +如果 Gateway 网关绑定到 loopback(`gateway.bind=loopback`,本地模式下默认), +远程节点主机将无法直接连接。请创建一个 SSH 隧道,并将 +节点主机指向隧道的本地端点。 示例(节点主机 -> gateway 主机): ```bash -# Terminal A (keep running): forward local 18790 -> gateway 127.0.0.1:18789 +# 终端 A(保持运行):将本地 18790 转发到 gateway 127.0.0.1:18789 ssh -N -L 18790:127.0.0.1:18789 user@gateway-host -# Terminal B: export the gateway token and connect through the tunnel +# 终端 B:导出 gateway 令牌并通过隧道连接 export OPENCLAW_GATEWAY_TOKEN="" openclaw node run --host 127.0.0.1 --port 18790 --display-name "Build Node" ``` -说明: +注意: -- `openclaw node run` 支持 token 或 password 认证。 -- 优先使用环境变量:`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`。 -- 配置回退为 `gateway.auth.token` / `gateway.auth.password`。 +- `openclaw node run` 支持令牌或密码认证。 +- 推荐使用环境变量:`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`。 +- 配置回退项是 `gateway.auth.token` / `gateway.auth.password`。 - 在本地模式下,节点主机会有意忽略 `gateway.remote.token` / `gateway.remote.password`。 -- 在远程模式下,`gateway.remote.token` / `gateway.remote.password` 会根据远程优先级规则成为候选项。 -- 如果已配置活动的本地 `gateway.auth.*` SecretRef 但无法解析,节点主机认证会以关闭失败方式终止。 -- 节点主机认证解析只认可 `OPENCLAW_GATEWAY_*` 环境变量。 +- 在远程模式下,`gateway.remote.token` / `gateway.remote.password` 会根据远程优先级规则生效。 +- 如果已配置活动的本地 `gateway.auth.*` SecretRefs 但无法解析,节点主机认证会以失败关闭。 +- 节点主机认证解析仅认可 `OPENCLAW_GATEWAY_*` 环境变量。 ### 启动节点主机(服务) ```bash openclaw node install --host --port 18789 --display-name "Build Node" +openclaw node start openclaw node restart ``` @@ -130,24 +137,24 @@ openclaw devices approve openclaw nodes status ``` -如果节点以变更后的认证详情重试,请重新运行 `openclaw devices list` +如果节点在重试时认证详情发生变化,请重新运行 `openclaw devices list` 并批准当前的 `requestId`。 命名选项: -- 在 `openclaw node run` / `openclaw node install` 上使用 `--display-name`(持久保存在节点上的 `~/.openclaw/node.json` 中)。 +- 在 `openclaw node run` / `openclaw node install` 上使用 `--display-name`(会持久化到节点上的 `~/.openclaw/node.json`)。 - `openclaw nodes rename --node --name "Build Node"`(gateway 覆盖)。 -### 为命令设置允许列表 +### 将命令加入允许列表 -Exec 审批是**按节点主机**划分的。可从 gateway 添加允许列表条目: +Exec 批准是**按节点主机区分**的。可从 gateway 添加允许列表条目: ```bash openclaw approvals allowlist add --node "/usr/bin/uname" openclaw approvals allowlist add --node "/usr/bin/sw_vers" ``` -审批信息位于节点主机的 `~/.openclaw/exec-approvals.json` 中。 +批准存储在节点主机上的 `~/.openclaw/exec-approvals.json`。 ### 将 exec 指向节点 @@ -165,9 +172,10 @@ openclaw config set tools.exec.node "" /exec host=node security=allowlist node= ``` -设置完成后,任何带有 `host=node` 的 `exec` 调用都会在节点主机上运行(受节点 allowlist/审批约束)。 +设置完成后,任何带有 `host=node` 的 `exec` 调用都会在节点主机上运行(受 +节点允许列表/批准约束)。 -`host=auto` 不会自行隐式选择节点,但从 `auto` 发出的显式逐次调用 `host=node` 请求是允许的。如果你希望节点 exec 成为该会话的默认值,请显式设置 `tools.exec.host=node` 或 `/exec host=node ...`。 +`host=auto` 不会自行隐式选择节点,但允许来自 `auto` 的显式逐次调用 `host=node` 请求。如果你希望节点 exec 成为该会话的默认值,请显式设置 `tools.exec.host=node` 或 `/exec host=node ...`。 相关内容: @@ -183,13 +191,13 @@ openclaw config set tools.exec.node "" openclaw nodes invoke --node --command canvas.eval --params '{"javaScript":"location.href"}' ``` -针对常见的“为智能体提供 MEDIA 附件”工作流,也有更高级的辅助命令。 +对于常见的“给智能体一个 MEDIA 附件”工作流,提供了更高层的辅助工具。 ## 截图(canvas 快照) 如果节点正在显示 Canvas(WebView),`canvas.snapshot` 会返回 `{ format, base64 }`。 -CLI 辅助命令(写入临时文件并打印 `MEDIA:`): +CLI 辅助工具(写入临时文件并打印 `MEDIA:`): ```bash openclaw nodes canvas snapshot --node --format png @@ -205,9 +213,9 @@ openclaw nodes canvas navigate https://example.com --node openclaw nodes canvas eval --node --js "document.title" ``` -说明: +注意: -- `canvas present` 接受 URL 或本地文件路径(`--target`),并支持可选的 `--x/--y/--width/--height` 进行定位。 +- `canvas present` 接受 URL 或本地文件路径(`--target`),还可选用 `--x/--y/--width/--height` 进行定位。 - `canvas eval` 接受内联 JS(`--js`)或位置参数。 ### A2UI(Canvas) @@ -218,17 +226,17 @@ openclaw nodes canvas a2ui push --node --jsonl ./payload.jsonl openclaw nodes canvas a2ui reset --node ``` -说明: +注意: - 仅支持 A2UI v0.8 JSONL(v0.9/createSurface 会被拒绝)。 -## 照片 + 视频(节点摄像头) +## 照片 + 视频(节点相机) 照片(`jpg`): ```bash openclaw nodes camera list --node -openclaw nodes camera snap --node # default: both facings (2 MEDIA lines) +openclaw nodes camera snap --node # 默认:两个朝向都拍摄(2 行 MEDIA) openclaw nodes camera snap --node --facing front ``` @@ -239,11 +247,11 @@ openclaw nodes camera clip --node --duration 10s openclaw nodes camera clip --node --duration 3000 --no-audio ``` -说明: +注意: -- 节点必须位于**前台**才能使用 `canvas.*` 和 `camera.*`(后台调用会返回 `NODE_BACKGROUND_UNAVAILABLE`)。 -- 为避免过大的 base64 载荷,片段时长会被限制(当前 `<= 60s`)。 -- Android 会在可能时请求 `CAMERA`/`RECORD_AUDIO` 权限;若权限被拒绝,则会以 `*_PERMISSION_REQUIRED` 失败。 +- 节点必须处于**前台**,`canvas.*` 和 `camera.*` 才可用(后台调用会返回 `NODE_BACKGROUND_UNAVAILABLE`)。 +- 为避免过大的 base64 负载,视频片段时长会被限制(当前为 `<= 60s`)。 +- Android 会在可能时提示请求 `CAMERA`/`RECORD_AUDIO` 权限;被拒绝的权限会以 `*_PERMISSION_REQUIRED` 失败。 ## 屏幕录制(节点) @@ -254,28 +262,28 @@ openclaw nodes screen record --node --duration 10s --fps 10 openclaw nodes screen record --node --duration 10s --fps 10 --no-audio ``` -说明: +注意: -- `screen.record` 的可用性取决于节点平台。 +- `screen.record` 是否可用取决于节点平台。 - 屏幕录制会被限制为 `<= 60s`。 -- `--no-audio` 会在受支持平台上禁用麦克风采集。 -- 当存在多个屏幕时,可使用 `--screen ` 选择显示器。 +- `--no-audio` 会在受支持的平台上禁用麦克风采集。 +- 当有多个屏幕可用时,使用 `--screen ` 选择显示器。 ## 位置(节点) -当设置中启用了定位功能时,节点会暴露 `location.get`。 +当设置中启用了 Location 时,节点会暴露 `location.get`。 -CLI 辅助命令: +CLI 辅助工具: ```bash openclaw nodes location get --node openclaw nodes location get --node --accuracy precise --max-age 15000 --location-timeout 10000 ``` -说明: +注意: -- 定位默认**关闭**。 -- “始终”需要系统权限;后台获取为尽力而为。 +- Location **默认关闭**。 +- “Always” 需要系统权限;后台获取为尽力而为。 - 响应包含纬度/经度、精度(米)和时间戳。 ## SMS(Android 节点) @@ -288,14 +296,14 @@ openclaw nodes location get --node --accuracy precise --max-age 1 openclaw nodes invoke --node --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}' ``` -说明: +注意: -- 必须先在 Android 设备上接受权限提示,该能力才会被广播。 -- 不支持蜂窝通信的仅 Wi‑Fi 设备不会广播 `sms.send`。 +- 在能力被宣告之前,必须先在 Android 设备上接受权限提示。 +- 不支持蜂窝通信的纯 Wi‑Fi 设备不会宣告 `sms.send`。 ## Android 设备 + 个人数据命令 -当启用了相应能力时,Android 节点可广播额外的命令族。 +启用相应能力后,Android 节点可以宣告额外的命令族。 可用命令族: @@ -308,7 +316,7 @@ openclaw nodes invoke --node --command sms.send --params '{"to":" - `sms.search` - `motion.activity`、`motion.pedometer` -示例调用: +调用示例: ```bash openclaw nodes invoke --node --command device.status --params '{}' @@ -316,14 +324,14 @@ openclaw nodes invoke --node --command notifications.list --param openclaw nodes invoke --node --command photos.latest --params '{"limit":1}' ``` -说明: +注意: -- 运动命令会根据可用传感器进行能力门控。 +- Motion 命令会根据可用传感器进行能力门控。 ## 系统命令(节点主机 / mac 节点) -macOS 节点会暴露 `system.run`、`system.notify` 和 `system.execApprovals.get/set`。 -无头节点主机会暴露 `system.run`、`system.which` 和 `system.execApprovals.get/set`。 +macOS 节点暴露 `system.run`、`system.notify` 和 `system.execApprovals.get/set`。 +无头节点主机暴露 `system.run`、`system.which` 和 `system.execApprovals.get/set`。 示例: @@ -332,24 +340,25 @@ openclaw nodes notify --node --title "Ping" --body "Gateway ready openclaw nodes invoke --node --command system.which --params '{"name":"git"}' ``` -说明: +注意: -- `system.run` 会在载荷中返回 stdout/stderr/退出码。 -- shell 执行现在通过带有 `host=node` 的 `exec` 工具进行;`nodes` 仍然是显式节点命令的直接 RPC 界面。 +- `system.run` 会在负载中返回 stdout/stderr/退出码。 +- Shell 执行现在通过使用 `host=node` 的 `exec` 工具进行;`nodes` 仍然是显式节点命令的直接 RPC 接口。 - `nodes invoke` 不暴露 `system.run` 或 `system.run.prepare`;它们仅保留在 exec 路径上。 -- exec 路径会在审批前准备一个规范的 `systemRunPlan`。一旦 - 审批被授予,gateway 转发的是该已存储计划,而不是后续调用方编辑过的任何 command/cwd/session 字段。 +- exec 路径会在批准前准备一个规范化的 `systemRunPlan`。一旦 + 批准授予,gateway 会转发该已存储的计划,而不是任何后续由 + 调用方修改的 command/cwd/session 字段。 - `system.notify` 会遵循 macOS 应用中的通知权限状态。 -- 无法识别的节点 `platform` / `deviceFamily` 元数据会使用保守的默认允许列表,其中排除了 `system.run` 和 `system.which`。如果你确实需要为未知平台启用这些命令,请通过 `gateway.nodes.allowCommands` 显式添加。 +- 无法识别的节点 `platform` / `deviceFamily` 元数据会使用保守的默认允许列表,其中不包含 `system.run` 和 `system.which`。如果你确实需要在未知平台上使用这些命令,请通过 `gateway.nodes.allowCommands` 显式添加。 - `system.run` 支持 `--cwd`、`--env KEY=VAL`、`--command-timeout` 和 `--needs-screen-recording`。 -- 对于 shell 包装器(`bash|sh|zsh ... -c/-lc`),按请求范围传入的 `--env` 值会被缩减为显式允许列表(`TERM`、`LANG`、`LC_*`、`COLORTERM`、`NO_COLOR`、`FORCE_COLOR`)。 -- 对于 allowlist 模式中的 allow-always 决策,已知的调度包装器(`env`、`nice`、`nohup`、`stdbuf`、`timeout`)会持久化内部可执行文件路径,而不是包装器路径。如果无法安全解包,则不会自动持久化任何 allowlist 条目。 -- 在 allowlist 模式下的 Windows 节点主机上,通过 `cmd.exe /c` 运行的 shell 包装器命令需要审批(仅有 allowlist 条目并不会自动允许这种包装器形式)。 +- 对于 shell 包装器(`bash|sh|zsh ... -c/-lc`),请求作用域的 `--env` 值会被收缩为显式允许列表(`TERM`、`LANG`、`LC_*`、`COLORTERM`、`NO_COLOR`、`FORCE_COLOR`)。 +- 在允许列表模式下,对于“始终允许”的决策,已知的分发包装器(`env`、`nice`、`nohup`、`stdbuf`、`timeout`)会持久化内部可执行文件路径,而不是包装器路径。如果无法安全解包,则不会自动持久化任何允许列表条目。 +- 在 Windows 节点主机上的允许列表模式中,通过 `cmd.exe /c` 进行的 shell 包装器运行需要批准(仅有允许列表条目并不会自动允许这种包装器形式)。 - `system.notify` 支持 `--priority ` 和 `--delivery `。 -- 节点主机会忽略 `PATH` 覆盖,并去除危险的启动/ shell 键(`DYLD_*`、`LD_*`、`NODE_OPTIONS`、`PYTHON*`、`PERL*`、`RUBYOPT`、`SHELLOPTS`、`PS4`)。如果你需要额外的 PATH 条目,请配置节点主机服务环境(或将工具安装在标准位置),而不是通过 `--env` 传递 `PATH`。 -- 在 macOS 节点模式下,`system.run` 受 macOS 应用中的 exec 审批控制(Settings → Exec approvals)。 - Ask/allowlist/full 的行为与无头节点主机相同;被拒绝的提示会返回 `SYSTEM_RUN_DENIED`。 -- 在无头节点主机上,`system.run` 受 exec 审批控制(`~/.openclaw/exec-approvals.json`)。 +- 节点主机会忽略 `PATH` 覆盖,并剥离危险的启动/ shell 键(`DYLD_*`、`LD_*`、`NODE_OPTIONS`、`PYTHON*`、`PERL*`、`RUBYOPT`、`SHELLOPTS`、`PS4`)。如果你需要额外的 PATH 条目,请配置节点主机服务环境(或将工具安装到标准位置),而不是通过 `--env` 传递 `PATH`。 +- 在 macOS 节点模式下,`system.run` 受 macOS 应用中的 exec 批准控制(设置 → Exec approvals)。 + ask/allowlist/full 的行为与无头节点主机相同;被拒绝的提示会返回 `SYSTEM_RUN_DENIED`。 +- 在无头节点主机上,`system.run` 受 exec 批准控制(`~/.openclaw/exec-approvals.json`)。 ## Exec 节点绑定 @@ -378,32 +387,32 @@ openclaw config unset agents.list[0].tools.exec.node ## 权限映射 -节点可以在 `node.list` / `node.describe` 中包含一个 `permissions` 映射,以权限名称为键(例如 `screenRecording`、`accessibility`),并使用布尔值作为值(`true` = 已授予)。 +节点可以在 `node.list` / `node.describe` 中包含 `permissions` 映射,以权限名称为键(例如 `screenRecording`、`accessibility`),以布尔值为值(`true` = 已授予)。 ## 无头节点主机(跨平台) -OpenClaw 可以运行一个**无头节点主机**(无 UI),它连接到 Gateway -WebSocket 并暴露 `system.run` / `system.which`。这在 Linux/Windows -上,或当你希望在服务器旁边运行一个最小节点时非常有用。 +OpenClaw 可以运行一个**无头节点主机**(无 UI),连接到 Gateway 网关 +WebSocket 并暴露 `system.run` / `system.which`。这在 Linux/Windows 上 +或在服务器旁运行一个最小节点时非常有用。 -启动它: +启动方式: ```bash openclaw node run --host --port 18789 ``` -说明: +注意: -- 仍然需要配对(Gateway 会显示设备配对提示)。 -- 节点主机会将其节点 id、token、显示名称和 gateway 连接信息存储在 `~/.openclaw/node.json` 中。 -- Exec 审批会通过 `~/.openclaw/exec-approvals.json` 在本地强制执行 - (请参见 [Exec approvals](/zh-CN/tools/exec-approvals))。 -- 在 macOS 上,无头节点主机默认会在本地执行 `system.run`。设置 - `OPENCLAW_NODE_EXEC_HOST=app` 可将 `system.run` 路由到配套应用 exec 主机;再添加 - `OPENCLAW_NODE_EXEC_FALLBACK=0` 可要求必须使用应用主机,并在其不可用时以关闭失败方式终止。 -- 当 Gateway WS 使用 TLS 时,请添加 `--tls` / `--tls-fingerprint`。 +- 仍然需要配对(Gateway 网关会显示设备配对提示)。 +- 节点主机会将其节点 id、令牌、显示名称以及 gateway 连接信息存储在 `~/.openclaw/node.json` 中。 +- Exec 批准会通过本地 `~/.openclaw/exec-approvals.json` + 强制执行(参见 [Exec approvals](/zh-CN/tools/exec-approvals))。 +- 在 macOS 上,无头节点主机会默认在本地执行 `system.run`。设置 + `OPENCLAW_NODE_EXEC_HOST=app` 可将 `system.run` 路由到配套应用 exec 主机;再加上 + `OPENCLAW_NODE_EXEC_FALLBACK=0` 可强制要求应用主机,并在其不可用时以失败关闭。 +- 当 Gateway 网关 WS 使用 TLS 时,添加 `--tls` / `--tls-fingerprint`。 ## Mac 节点模式 -- macOS 菜单栏应用会作为节点连接到 Gateway WS 服务器(因此 `openclaw nodes …` 可作用于这台 Mac)。 -- 在远程模式下,应用会为 Gateway 端口打开 SSH 隧道,并连接到 `localhost`。 +- macOS 菜单栏应用会作为一个节点连接到 Gateway 网关 WS 服务器(因此 `openclaw nodes …` 可以针对这台 Mac 使用)。 +- 在远程模式下,应用会为 Gateway 网关端口打开 SSH 隧道并连接到 `localhost`。 diff --git a/docs/zh-CN/platforms/mac/remote.md b/docs/zh-CN/platforms/mac/remote.md index f8976c074..6c33e4770 100644 --- a/docs/zh-CN/platforms/mac/remote.md +++ b/docs/zh-CN/platforms/mac/remote.md @@ -4,95 +4,99 @@ read_when: summary: 通过 SSH 控制远程 OpenClaw Gateway 网关的 macOS 应用流程 title: 远程控制 x-i18n: - generated_at: "2026-04-26T04:11:39Z" + generated_at: "2026-04-26T04:29:31Z" model: gpt-5.4 provider: openai - source_hash: 460b32dfac9f86934b1498a2c8afb202cb609187efbcaeecc303c1d82ebd8052 + source_hash: 4de4980fe378fc9b685cf7732d21a80c640088191308b8ef1d3df9f468cb5be2 source_path: platforms/mac/remote.md workflow: 15 --- # 远程 OpenClaw(macOS ⇄ 远程主机) -此流程允许 macOS 应用充当运行在另一台主机(桌面机/服务器)上的 OpenClaw Gateway 网关的完整远程控制器。这是应用的**通过 SSH 远程连接**(远程运行)功能。所有功能——健康检查、Voice Wake 转发和 Web Chat——都会复用 _设置 → 通用_ 中相同的远程 SSH 配置。 +此流程让 macOS 应用作为运行在另一台主机(桌面机/服务器)上的 OpenClaw Gateway 网关的完整远程控制端。这是应用中的**通过 SSH 远程连接**(远程运行)功能。所有功能——运行状况检查、Voice Wake 转发以及 Web Chat——都会复用 _设置 → 通用_ 中相同的远程 SSH 配置。 ## 模式 -- **本地(这台 Mac)**:所有内容都在笔记本电脑上运行。不涉及 SSH。 -- **通过 SSH 远程连接(默认)**:OpenClaw 命令在远程主机上执行。mac 应用会使用 `-o BatchMode`、你选择的身份/密钥以及本地端口转发来建立 SSH 连接。 -- **远程直连(ws/wss)**:不使用 SSH 隧道。mac 应用直接连接到 Gateway 网关 URL(例如,通过 Tailscale Serve 或公共 HTTPS 反向代理)。 +- **本地(这台 Mac)**:所有内容都在这台笔记本上运行。不涉及 SSH。 +- **通过 SSH 远程连接(默认)**:OpenClaw 命令会在远程主机上执行。Mac 应用会使用 `-o BatchMode`、你选择的身份/密钥以及本地端口转发来建立 SSH 连接。 +- **远程直连(ws/wss)**:不使用 SSH 隧道。Mac 应用直接连接到 Gateway 网关 URL(例如,通过 Tailscale Serve 或公共 HTTPS 反向代理)。 ## 远程传输方式 远程模式支持两种传输方式: -- **SSH 隧道**(默认):使用 `ssh -N -L ...` 将 Gateway 网关端口转发到 localhost。由于隧道是 loopback,Gateway 网关会将节点的 IP 视为 `127.0.0.1`。 +- **SSH 隧道**(默认):使用 `ssh -N -L ...` 将 Gateway 网关端口转发到 localhost。由于该隧道使用 loopback,Gateway 网关看到的节点 IP 会是 `127.0.0.1`。 - **直连(ws/wss)**:直接连接到 Gateway 网关 URL。Gateway 网关会看到真实的客户端 IP。 -在 SSH 隧道模式下,发现的 LAN/tailnet 主机名会保存为 +在 SSH 隧道模式下,发现的局域网 / tailnet 主机名会保存为 `gateway.remote.sshTarget`。应用会将 `gateway.remote.url` 保持为本地 -隧道端点,例如 `ws://127.0.0.1:18789`,因此 CLI、Web Chat 和浏览器自动化都会使用相同的安全 loopback 传输方式。 +隧道端点,例如 `ws://127.0.0.1:18789`,这样 CLI、Web Chat 和 +本地节点宿主服务都会使用相同且安全的 loopback 传输。 -## 远程主机的前提条件 +远程模式下的浏览器自动化由 CLI 节点宿主管理,而不是由原生 macOS 应用节点管理。应用会在可能时启动已安装的节点宿主服务;如果你需要从那台 Mac 控制浏览器,请使用 `openclaw node install ...` 和 `openclaw node start` 安装/启动它(或在前台运行 +`openclaw node run ...`),然后将目标指向那个具备浏览器能力的节点。 -1. 安装 Node + pnpm,并构建/安装 OpenClaw CLI(`pnpm install && pnpm build && pnpm link --global`)。 -2. 确保 `openclaw` 对非交互式 shell 可用并位于 PATH 中(如有需要,可为其创建到 `/usr/local/bin` 或 `/opt/homebrew/bin` 的符号链接)。 -3. 开启使用密钥认证的 SSH。我们建议使用 **Tailscale** IP,以便在非局域网环境下保持稳定可达。 +## 远程主机上的前置条件 + +1. 安装 Node 和 pnpm,并构建/安装 OpenClaw CLI(`pnpm install && pnpm build && pnpm link --global`)。 +2. 确保 `openclaw` 对非交互式 shell 可用并位于 PATH 中(如有需要,可创建到 `/usr/local/bin` 或 `/opt/homebrew/bin` 的符号链接)。 +3. 开启 SSH 并使用密钥认证。我们建议使用 **Tailscale** IP,以便在非局域网环境下也能稳定连接。 ## macOS 应用设置 1. 打开 _设置 → 通用_。 -2. 在 **OpenClaw 运行方式** 下,选择 **通过 SSH 远程连接**,并设置: +2. 在 **OpenClaw 运行位置** 下,选择 **通过 SSH 远程连接**,并设置: - **传输方式**:**SSH 隧道** 或 **直连(ws/wss)**。 - **SSH 目标**:`user@host`(可选 `:port`)。 - - 如果 Gateway 网关位于同一局域网并广播 Bonjour,可从发现列表中选择它,以自动填充此字段。 - - **Gateway 网关 URL**(仅直连):`wss://gateway.example.ts.net`(本地/LAN 可使用 `ws://...`)。 + - 如果 Gateway 网关位于同一局域网并通过 Bonjour 广播,可以从发现列表中选择它来自动填充此字段。 + - **Gateway 网关 URL**(仅直连):`wss://gateway.example.ts.net`(本地/局域网可使用 `ws://...`)。 - **身份文件**(高级):你的密钥路径。 - - **项目根目录**(高级):用于执行命令的远程 checkout 路径。 - - **CLI 路径**(高级):可选,指向可运行的 `openclaw` 入口点/二进制文件的路径(如果已广播,会自动填充)。 -3. 点击 **测试远程连接**。成功表示远程 `openclaw status --json` 能正确运行。失败通常表示 PATH/CLI 问题;退出码 127 表示远程找不到 CLI。 -4. 健康检查和 Web Chat 现在都会自动通过此 SSH 隧道运行。 + - **项目根目录**(高级):用于执行命令的远程检出路径。 + - **CLI 路径**(高级):可选,指向可运行的 `openclaw` 入口点/二进制文件路径(如已广播会自动填充)。 +3. 点击 **测试远程连接**。成功表示远程 `openclaw status --json` 能正常运行。失败通常意味着 PATH/CLI 问题;退出码 127 表示在远程端找不到 CLI。 +4. 运行状况检查和 Web Chat 现在都会自动通过这个 SSH 隧道运行。 ## Web Chat - **SSH 隧道**:Web Chat 通过转发后的 WebSocket 控制端口(默认 18789)连接到 Gateway 网关。 -- **直连(ws/wss)**:Web Chat 直接连接到已配置的 Gateway 网关 URL。 +- **直连(ws/wss)**:Web Chat 直接连接到配置的 Gateway 网关 URL。 - 现在不再有单独的 WebChat HTTP 服务器。 ## 权限 -- 远程主机需要与本地相同的 TCC 批准(自动化、辅助功能、屏幕录制、麦克风、语音识别、通知)。在那台机器上运行一次新手引导以授予这些权限。 -- 节点会通过 `node.list` / `node.describe` 广播其权限状态,以便智能体知道哪些功能可用。 +- 远程主机需要与本地相同的 TCC 授权(自动化、辅助功能、屏幕录制、麦克风、语音识别、通知)。请在那台机器上运行新手引导,一次性授予这些权限。 +- 节点会通过 `node.list` / `node.describe` 广播其权限状态,以便智能体了解哪些能力可用。 ## 安全说明 -- 优先在远程主机上绑定 loopback 地址,并通过 SSH 或 Tailscale 连接。 -- SSH 隧道使用严格的主机密钥检查;请先信任主机密钥,使其存在于 `~/.ssh/known_hosts` 中。 -- 如果你将 Gateway 网关绑定到非 loopback 接口,必须启用有效的 Gateway 网关认证:token、密码,或配置了 `gateway.auth.mode: "trusted-proxy"` 的身份感知型反向代理。 -- 参见 [安全性](/zh-CN/gateway/security) 和 [Tailscale](/zh-CN/gateway/tailscale)。 +- 优先在远程主机上绑定到 loopback 地址,并通过 SSH 或 Tailscale 连接。 +- SSH 隧道使用严格的主机密钥检查;请先信任该主机密钥,使其存在于 `~/.ssh/known_hosts` 中。 +- 如果你将 Gateway 网关绑定到非 loopback 接口,请务必启用有效的 Gateway 网关认证:token、密码,或启用了 `gateway.auth.mode: "trusted-proxy"` 的身份感知反向代理。 +- 参见 [安全](/zh-CN/gateway/security) 和 [Tailscale](/zh-CN/gateway/tailscale)。 ## WhatsApp 登录流程(远程) -- 在**远程主机上**运行 `openclaw channels login --verbose`。使用你手机上的 WhatsApp 扫描二维码。 -- 如果认证过期,请在该主机上重新运行登录。健康检查会显示链接问题。 +- 在**远程主机上**运行 `openclaw channels login --verbose`。然后使用你手机上的 WhatsApp 扫描二维码。 +- 如果认证过期,请在该主机上重新运行登录。运行状况检查会提示链接问题。 ## 故障排除 -- **退出码 127 / not found**:`openclaw` 不在非登录 shell 的 PATH 中。将其添加到 `/etc/paths`、你的 shell rc,或创建到 `/usr/local/bin`/`/opt/homebrew/bin` 的符号链接。 -- **健康探测失败**:检查 SSH 可达性、PATH,以及 Baileys 是否已登录(`openclaw status --json`)。 -- **Web Chat 卡住**:确认 Gateway 网关正在远程主机上运行,且转发端口与 Gateway 网关 WS 端口匹配;UI 需要健康的 WS 连接。 -- **节点 IP 显示为 127.0.0.1**:这是 SSH 隧道下的预期行为。如果你希望 Gateway 网关看到真实客户端 IP,请将**传输方式**切换为**直连(ws/wss)**。 +- **exit 127 / not found**:`openclaw` 不在非登录 shell 的 PATH 中。请将其添加到 `/etc/paths`、你的 shell rc 中,或创建到 `/usr/local/bin`/`/opt/homebrew/bin` 的符号链接。 +- **运行状况探测失败**:检查 SSH 连通性、PATH,以及 Baileys 是否已登录(`openclaw status --json`)。 +- **Web Chat 卡住**:确认 Gateway 网关正在远程主机上运行,并且转发端口与 Gateway 网关 WS 端口一致;UI 需要健康的 WS 连接。 +- **节点 IP 显示为 127.0.0.1**:这是 SSH 隧道下的预期行为。如果你希望 Gateway 网关看到真实客户端 IP,请将**传输方式**切换为 **直连(ws/wss)**。 - **Voice Wake**:在远程模式下,触发短语会自动转发;不需要单独的转发器。 ## 通知声音 -你可以通过脚本使用 `openclaw` 和 `node.invoke` 为每条通知选择声音,例如: +你可以通过脚本中的 `openclaw` 和 `node.invoke` 为每条通知单独选择声音,例如: ```bash openclaw nodes notify --node --title "Ping" --body "Remote gateway ready" --sound Glass ``` -应用中已不再提供全局“默认声音”切换;调用方可为每次请求选择一种声音(或不选择声音)。 +应用中已不再提供全局“默认声音”开关;调用方需要为每个请求单独选择声音(或不选择)。 ## 相关内容