From 1ea204ad67eef0b9aa3a7608e909e2e3e43696ca Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 4 May 2026 03:31:57 +0000 Subject: [PATCH] chore(i18n): refresh zh-CN translations --- docs/zh-CN/web/control-ui.md | 264 +++++++++++++++++------------------ 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/docs/zh-CN/web/control-ui.md b/docs/zh-CN/web/control-ui.md index 4eadd6365..3902137ee 100644 --- a/docs/zh-CN/web/control-ui.md +++ b/docs/zh-CN/web/control-ui.md @@ -1,25 +1,25 @@ --- read_when: - - 你想通过浏览器操作 Gateway 网关 - - 你想要无需 SSH 隧道即可访问 Tailnet + - 你想从浏览器操作 Gateway 网关 + - 你想要无需 SSH 隧道的 Tailnet 访问 sidebarTitle: Control UI -summary: 基于浏览器的 Gateway 网关控制界面(聊天、节点、配置) +summary: 用于 Gateway 网关的基于浏览器的控制界面(聊天、节点、配置) title: 控制界面 x-i18n: - generated_at: "2026-05-04T00:47:42Z" + generated_at: "2026-05-04T03:30:37Z" model: gpt-5.5 provider: openai - source_hash: c890d83da2c296b600e4b5a00a538f37e6bd54da31fbe62113ecd6177b15626e + source_hash: 99a40ab77276fbc3180aefb103c2dd46804829c7b1b6966a8456ed35b85ed644 source_path: web/control-ui.md workflow: 16 --- -控制 UI 是由 Gateway 网关提供服务的小型 **Vite + Lit** 单页应用: +Control UI 是一个小型 **Vite + Lit** 单页应用,由 Gateway 网关提供服务: - 默认:`http://:18789/` - 可选前缀:设置 `gateway.controlUi.basePath`(例如 `/openclaw`) -它会在同一端口上**直接与 Gateway 网关 WebSocket** 通信。 +它在同一端口上**直接与 Gateway 网关 WebSocket 通信**。 ## 快速打开(本地) @@ -29,18 +29,18 @@ x-i18n: 如果页面加载失败,请先启动 Gateway 网关:`openclaw gateway`。 -身份验证会在 WebSocket 握手期间通过以下方式提供: +认证会在 WebSocket 握手期间通过以下方式提供: - `connect.params.auth.token` - `connect.params.auth.password` -- `gateway.auth.allowTailscale: true` 时的 Tailscale Serve 身份标头 -- `gateway.auth.mode: "trusted-proxy"` 时的可信代理身份标头 +- 当 `gateway.auth.allowTailscale: true` 时使用 Tailscale Serve 身份标头 +- 当 `gateway.auth.mode: "trusted-proxy"` 时使用受信任代理身份标头 -仪表盘设置面板会为当前浏览器标签页会话和选定的 Gateway 网关 URL 保留一个令牌;密码不会被持久保存。新手引导通常会在首次连接时为共享密钥身份验证生成 Gateway 网关令牌,但当 `gateway.auth.mode` 为 `"password"` 时,也可以使用密码身份验证。 +仪表板设置面板会为当前浏览器标签页会话和所选 Gateway 网关 URL 保留一个令牌;密码不会持久化。新手引导通常会在首次连接时为共享密钥认证生成一个 Gateway 网关令牌,但当 `gateway.auth.mode` 为 `"password"` 时,密码认证也可用。 ## 设备配对(首次连接) -当你从新的浏览器或设备连接到控制 UI 时,Gateway 网关通常需要**一次性配对批准**。这是一项防止未授权访问的安全措施。 +当你从新的浏览器或设备连接到 Control UI 时,Gateway 网关通常需要**一次性配对批准**。这是一项安全措施,用于防止未授权访问。 **你会看到:**“disconnected (1008): pairing required” @@ -57,96 +57,96 @@ x-i18n: -如果浏览器使用已更改的身份验证详情(角色/范围/公钥)重试配对,之前的待处理请求会被取代,并创建新的 `requestId`。批准前请重新运行 `openclaw devices list`。 +如果浏览器使用已更改的认证详情(角色/范围/公钥)重新尝试配对,之前的待处理请求会被取代,并创建新的 `requestId`。批准前请重新运行 `openclaw devices list`。 -如果浏览器已配对,而你将其从读取访问改为写入/管理员访问,这会被视为一次批准升级,而不是静默重连。OpenClaw 会保持旧批准有效,阻止范围更广的重连,并要求你显式批准新的范围集合。 +如果浏览器已经配对,而你将其从读取访问权限更改为写入/管理员访问权限,这会被视为一次批准升级,而不是静默重新连接。OpenClaw 会保持旧批准有效,阻止更广泛权限的重新连接,并要求你显式批准新的范围集合。 -批准后,设备会被记住,不会再次要求批准,除非你使用 `openclaw devices revoke --device --role ` 撤销它。有关令牌轮换和撤销,请参阅 [设备 CLI](/zh-CN/cli/devices)。 +批准后,设备会被记住,除非你用 `openclaw devices revoke --device --role ` 撤销,否则不需要重新批准。有关令牌轮换和撤销,请参阅 [设备 CLI](/zh-CN/cli/devices)。 -- 直接 local loopback 浏览器连接(`127.0.0.1` / `localhost`)会自动批准。 -- 当 `gateway.auth.allowTailscale: true`、Tailscale 身份通过验证,并且浏览器提供其设备身份时,Tailscale Serve 可以为控制 UI 操作员会话跳过配对往返。 -- 直接 Tailnet 绑定、局域网浏览器连接,以及没有设备身份的浏览器配置文件仍然需要显式批准。 -- 每个浏览器配置文件都会生成唯一的设备 ID,因此切换浏览器或清除浏览器数据将需要重新配对。 +- 直接的 local loopback 浏览器连接(`127.0.0.1` / `localhost`)会自动批准。 +- 当 `gateway.auth.allowTailscale: true`、Tailscale 身份验证通过且浏览器提供其设备身份时,Tailscale Serve 可以为 Control UI 操作员会话跳过配对往返。 +- 直接 Tailnet 绑定、LAN 浏览器连接,以及没有设备身份的浏览器配置文件仍需要显式批准。 +- 每个浏览器配置文件都会生成唯一的设备 ID,因此切换浏览器或清除浏览器数据会要求重新配对。 ## 个人身份(浏览器本地) -控制 UI 支持按浏览器设置个人身份(显示名称和头像),并将其附加到发出的消息中,以便在共享会话中标明归属。它存放在浏览器存储中,作用域限定为当前浏览器配置文件,不会同步到其他设备,也不会在服务器端持久保存,除了你实际发送的消息上正常的转录作者元数据。清除站点数据或切换浏览器会将其重置为空。 +Control UI 支持按浏览器设置个人身份(显示名称和头像),并将其附加到传出消息,用于在共享会话中标明归属。它存储在浏览器存储中,限定于当前浏览器配置文件,不会同步到其他设备,也不会在服务端持久化,除了你实际发送的消息上的常规转录作者元数据。清除站点数据或切换浏览器会将其重置为空。 -同样的浏览器本地模式也适用于助手头像覆盖。上传的助手头像只会在本地浏览器中覆盖 Gateway 网关解析出的身份,绝不会通过 `config.patch` 往返传输。共享的 `ui.assistant.avatar` 配置字段仍可供直接写入该字段的非 UI 客户端使用(例如脚本化 Gateway 网关或自定义仪表盘)。 +相同的浏览器本地模式也适用于助手头像覆盖。上传的助手头像只会在本地浏览器中覆盖 Gateway 网关解析出的身份,并且绝不会通过 `config.patch` 往返传输。共享的 `ui.assistant.avatar` 配置字段仍可供直接写入该字段的非 UI 客户端使用(例如脚本化 Gateway 网关或自定义仪表板)。 ## 运行时配置端点 -控制 UI 会从 `/__openclaw/control-ui-config.json` 获取运行时设置。该端点与 HTTP 表面的其余部分一样受同一 Gateway 网关身份验证保护:未经身份验证的浏览器无法获取它;成功获取需要已有有效的 Gateway 网关令牌/密码、Tailscale Serve 身份,或可信代理身份。 +Control UI 会从 `/__openclaw/control-ui-config.json` 获取其运行时设置。该端点由与 HTTP 其余表面相同的 Gateway 网关认证保护:未认证的浏览器无法获取它,成功获取需要已有有效的 Gateway 网关令牌/密码、Tailscale Serve 身份,或受信任代理身份。 ## 语言支持 -控制 UI 可以在首次加载时根据你的浏览器区域设置进行本地化。若要稍后覆盖它,请打开 **概览 -> Gateway 网关访问 -> 语言**。区域设置选择器位于 Gateway 网关访问卡片中,而不是外观下。 +Control UI 可以在首次加载时根据你的浏览器语言环境进行本地化。之后若要覆盖它,请打开 **概览 -> Gateway 网关访问 -> 语言**。语言环境选择器位于 Gateway 网关访问卡片中,而不是外观下。 -- 支持的区域设置:`en`、`zh-CN`、`zh-TW`、`pt-BR`、`de`、`es`、`ja-JP`、`ko`、`fr`、`ar`、`it`、`tr`、`uk`、`id`、`pl`、`th`、`vi`、`nl`、`fa` +- 支持的语言环境:`en`、`zh-CN`、`zh-TW`、`pt-BR`、`de`、`es`、`ja-JP`、`ko`、`fr`、`ar`、`it`、`tr`、`uk`、`id`、`pl`、`th`、`vi`、`nl`、`fa` - 非英语翻译会在浏览器中懒加载。 -- 选定的区域设置会保存在浏览器存储中,并在以后访问时复用。 +- 选定的语言环境会保存在浏览器存储中,并在未来访问时复用。 - 缺失的翻译键会回退到英语。 -文档翻译会为同一组非英语区域设置生成,但文档站点内置的 Mintlify 语言选择器仅限于 Mintlify 接受的区域设置代码。泰语(`th`)和波斯语(`fa`)文档仍会在发布仓库中生成;在 Mintlify 支持这些代码之前,它们可能不会出现在该选择器中。 +文档翻译也会为同一组非英语语言环境生成,但文档站点内置的 Mintlify 语言选择器仅限于 Mintlify 接受的语言环境代码。泰语(`th`)和波斯语(`fa`)文档仍会在发布仓库中生成;在 Mintlify 支持这些代码之前,它们可能不会出现在该选择器中。 ## 外观主题 -外观面板保留内置的 Claw、Knot 和 Dash 主题,外加一个浏览器本地的 tweakcn 导入槽。若要导入主题,请打开 [tweakcn 主题](https://tweakcn.com/themes),选择或创建一个主题,点击 **分享**,然后将复制的主题链接粘贴到外观中。导入器也接受 `https://tweakcn.com/r/themes/` 注册表 URL、类似 `https://tweakcn.com/editor/theme?theme=amethyst-haze` 的编辑器 URL、相对 `/themes/` 路径、原始主题 ID,以及 `amethyst-haze` 等默认主题名称。 +外观面板保留内置的 Claw、Knot 和 Dash 主题,另有一个浏览器本地 tweakcn 导入槽。要导入主题,请打开 [tweakcn editor](https://tweakcn.com/editor/theme),选择或创建一个主题,点击**分享**,然后将复制的主题链接粘贴到外观中。导入器也接受 `https://tweakcn.com/r/themes/` 注册表 URL、类似 `https://tweakcn.com/editor/theme?theme=amethyst-haze` 的编辑器 URL、相对 `/themes/` 路径、原始主题 ID,以及 `amethyst-haze` 等默认主题名称。 -导入的主题只会存储在当前浏览器配置文件中。它们不会写入 Gateway 网关配置,也不会跨设备同步。替换导入的主题会更新这一个本地槽;如果已选择导入的主题,清除它会将活动主题切回 Claw。 +导入的主题仅存储在当前浏览器配置文件中。它们不会写入 Gateway 网关配置,也不会跨设备同步。替换导入的主题会更新这一个本地槽;如果当前选中的是导入主题,清除它会把活动主题切回 Claw。 -## 它目前可以做什么 +## 它现在能做什么 - + - 通过 Gateway 网关 WS 与模型聊天(`chat.history`、`chat.send`、`chat.abort`、`chat.inject`)。 - - 通过浏览器实时会话进行语音通话。OpenAI 使用直接 WebRTC,Google Live 通过 WebSocket 使用受限的一次性浏览器令牌,而仅后端实时语音插件使用 Gateway 网关中继传输。中继会将提供商凭证保留在 Gateway 网关上,同时浏览器通过 `talk.realtime.relay*` RPC 流式传输麦克风 PCM,并通过 `chat.send` 将 `openclaw_agent_consult` 工具调用发回给已配置的更大型 OpenClaw 模型。 - - 在聊天中流式传输工具调用 + 实时工具输出卡片(智能体事件)。 + - 通过浏览器实时会话进行语音通话。OpenAI 使用直接 WebRTC,Google Live 通过 WebSocket 使用受限的一次性浏览器令牌,而仅后端实时语音插件使用 Gateway 网关中继传输。中继会将提供商凭据保留在 Gateway 网关上,同时浏览器通过 `talk.realtime.relay*` RPC 流式传输麦克风 PCM,并通过 `chat.send` 将 `openclaw_agent_consult` 工具调用发送回配置的更大 OpenClaw 模型。 + - 在聊天中流式传输工具调用和实时工具输出卡片(智能体事件)。 - - 渠道:内置渠道以及内置/外部插件渠道的 Status、二维码登录和按渠道配置(`channels.status`、`web.login.*`、`config.patch`)。 + - 渠道:内置渠道以及内置/外部插件渠道状态、二维码登录和按渠道配置(`channels.status`、`web.login.*`、`config.patch`)。 - 实例:在线列表 + 刷新(`system-presence`)。 - 会话:列表 + 按会话的模型/思考/快速/详细/跟踪/推理覆盖(`sessions.list`、`sessions.patch`)。 - - 梦境:Dreaming 状态、启用/禁用切换,以及 Dream Diary 阅读器(`doctor.memory.status`、`doctor.memory.dreamDiary`、`config.patch`)。 + - 梦境:Dreaming 状态、启用/禁用切换,以及梦境日记阅读器(`doctor.memory.status`、`doctor.memory.dreamDiary`、`config.patch`)。 - - Cron 任务:列出/添加/编辑/运行/启用/禁用 + 运行历史(`cron.*`)。 - - Skills:Status、启用/禁用、安装、API key 更新(`skills.*`)。 + - Cron 作业:列表/添加/编辑/运行/启用/禁用 + 运行历史(`cron.*`)。 + - Skills:状态、启用/禁用、安装、API key 更新(`skills.*`)。 - 节点:列表 + 能力(`node.list`)。 - - Exec 批准:编辑 Gateway 网关或节点 allowlist + `exec host=gateway/node` 的询问策略(`exec.approvals.*`)。 + - Exec 批准:编辑 Gateway 网关或节点允许列表 + `exec host=gateway/node` 的询问策略(`exec.approvals.*`)。 - 查看/编辑 `~/.openclaw/openclaw.json`(`config.get`、`config.set`)。 - - 通过验证应用 + 重启(`config.apply`),并唤醒上一个活动会话。 - - 写入包含 base-hash 保护,以防覆盖并发编辑。 - - 写入(`config.set`/`config.apply`/`config.patch`)会预检提交的配置载荷中引用的活动 SecretRef 解析;未解析的活动提交引用会在写入前被拒绝。 - - Schema + 表单渲染(`config.schema` / `config.schema.lookup`,包括字段 `title` / `description`、匹配的 UI 提示、直接子项摘要、嵌套对象/通配符/数组/组合节点上的文档元数据,以及可用时的插件 + 渠道 schema);仅当快照可以安全进行原始往返时,原始 JSON 编辑器才可用。 - - 如果快照无法安全往返原始文本,控制 UI 会强制使用表单模式,并为该快照禁用原始模式。 - - 原始 JSON 编辑器的“重置为已保存”会保留原始编写的形状(格式、注释、`$include` 布局),而不是重新渲染扁平化快照,因此当快照可以安全往返时,外部编辑在重置后仍会保留。 - - 结构化 SecretRef 对象值会在表单文本输入中以只读方式渲染,以防意外发生对象到字符串的损坏。 + - 通过验证应用并重启(`config.apply`),并唤醒最后一个活动会话。 + - 写入包含基准哈希保护,防止覆盖并发编辑。 + - 写入(`config.set`/`config.apply`/`config.patch`)会预检提交配置载荷中引用的活动 SecretRef 解析;未解析的活动已提交引用会在写入前被拒绝。 + - Schema + 表单渲染(`config.schema` / `config.schema.lookup`,包括字段 `title` / `description`、匹配的 UI 提示、直接子项摘要、嵌套对象/通配符/数组/组合节点上的文档元数据,以及可用时的插件 + 渠道 schema);仅当快照具有安全的原始往返能力时,Raw JSON 编辑器才可用。 + - 如果快照无法安全地往返原始文本,Control UI 会强制使用表单模式,并为该快照禁用原始模式。 + - Raw JSON 编辑器的“重置为已保存”会保留原始编写形状(格式、注释、`$include` 布局),而不是重新渲染扁平化快照,因此当快照可以安全往返时,外部编辑会在重置后保留下来。 + - 结构化 SecretRef 对象值会在表单文本输入中以只读方式渲染,以防止意外的对象到字符串损坏。 - - 调试:Status/health/models 快照 + 事件日志 + 手动 RPC 调用(`status`、`health`、`models.list`)。 - - 日志:Gateway 网关文件日志的实时 tail,支持过滤/导出(`logs.tail`)。 - - 更新:运行包/git 更新 + 重启(`update.run`)并生成重启报告,然后在重连后轮询 `update.status` 以验证正在运行的 Gateway 网关版本。 + - 调试:状态/健康/模型快照 + 事件日志 + 手动 RPC 调用(`status`、`health`、`models.list`)。 + - 日志:带过滤/导出的 Gateway 网关文件日志实时尾随(`logs.tail`)。 + - 更新:运行一次包/git 更新 + 重启(`update.run`),生成重启报告,然后在重新连接后轮询 `update.status` 以验证正在运行的 Gateway 网关版本。 - - - 对于隔离任务,交付默认发布摘要。如果你想要仅内部运行,可以切换为无。 + + - 对于隔离作业,交付默认会发布摘要。如果你想要仅内部运行,可以切换为无。 - 选择发布时会显示渠道/目标字段。 - - Webhook 模式使用 `delivery.mode = "webhook"`,并将 `delivery.to` 设为有效的 HTTP(S) webhook URL。 - - 对于主会话任务,可以使用 webhook 和无交付模式。 - - 高级编辑控件包括运行后删除、清除智能体覆盖、cron 精确/错峰选项、智能体模型/思考覆盖,以及尽力交付切换。 + - Webhook 模式使用 `delivery.mode = "webhook"`,并将 `delivery.to` 设置为有效的 HTTP(S) webhook URL。 + - 对于主会话作业,可以使用 webhook 和无交付模式。 + - 高级编辑控件包括运行后删除、清除智能体覆盖、cron 精确/错开选项、智能体模型/思考覆盖,以及尽力交付切换。 - 表单验证以内联方式显示字段级错误;无效值会禁用保存按钮,直到修复为止。 - - 设置 `cron.webhookToken` 以发送专用 bearer 令牌;如果省略,webhook 会在没有身份验证标头的情况下发送。 - - 已弃用的回退:存储的旧版任务如果带有 `notify: true`,在迁移前仍可使用 `cron.webhook`。 + - 设置 `cron.webhookToken` 可发送专用 bearer token;如果省略,webhook 会在没有认证标头的情况下发送。 + - 已弃用的回退:存储的旧版作业如果带有 `notify: true`,在迁移前仍可使用 `cron.webhook`。 @@ -155,70 +155,70 @@ x-i18n: - - `chat.send` 是**非阻塞**的:它会立即确认并返回 `{ runId, status: "started" }`,响应通过 `chat` 事件流式传输。 - - 聊天上传接受图片以及非视频文件。图片保留原生图片路径;其他文件会作为托管媒体存储,并在历史记录中显示为附件链接。 + - `chat.send` 是**非阻塞**的:它会立即以 `{ runId, status: "started" }` 确认,响应通过 `chat` 事件流式传输。 + - 聊天上传接受图片以及非视频文件。图片保留原生图片路径;其他文件会存储为托管媒体,并在历史记录中显示为附件链接。 - 使用相同的 `idempotencyKey` 重新发送时,运行中会返回 `{ status: "in_flight" }`,完成后会返回 `{ status: "ok" }`。 - - 为保证 UI 安全,`chat.history` 响应有大小限制。当转录条目过大时,Gateway 网关可能会截断长文本字段,省略较大的元数据块,并用占位符(`[chat.history omitted: message too large]`)替换超大消息。 - - 助手/生成的图片会持久化为托管媒体引用,并通过已认证的 Gateway 网关媒体 URL 返回,因此重新加载不依赖原始 base64 图片载荷继续保留在聊天历史响应中。 - - `chat.history` 还会从可见助手文本中移除仅用于显示的内联指令标签(例如 `[[reply_to_*]]` 和 `[[audio_as_voice]]`)、纯文本工具调用 XML 载荷(包括 `...`、`...`、`...`、`...` 以及被截断的工具调用块),以及泄漏的 ASCII/全角模型控制令牌,并省略整个可见文本仅为精确静默令牌 `NO_REPLY` / `no_reply` 的助手条目。 - - 在活动发送期间以及最终历史刷新时,如果 `chat.history` 短暂返回较旧快照,聊天视图会继续显示本地乐观用户/助手消息;一旦 Gateway 网关历史追上,规范转录就会替换这些本地消息。 - - 实时 `chat` 事件表示投递状态,而 `chat.history` 会从持久会话转录重建。工具最终事件之后,Control UI 会重新加载历史,并仅合并一小段乐观尾部;转录边界记录在 [WebChat](/zh-CN/web/webchat) 中。 - - `chat.inject` 会向会话转录追加一条助手备注,并广播一个 `chat` 事件用于仅 UI 更新(无智能体运行,无渠道投递)。 - - 聊天标题中的模型和思考选择器会通过 `sessions.patch` 立即修补活动会话;它们是持久会话覆盖项,不是仅用于单轮发送的选项。 - - 在 Control UI 中输入 `/new` 会创建并切换到与 New Chat 相同的全新仪表板会话。输入 `/reset` 会保留 Gateway 网关针对当前会话的显式原地重置。 - - 聊天模型选择器会请求 Gateway 网关配置的模型视图。如果存在 `agents.defaults.models`,该允许列表会驱动选择器。否则,选择器会显示显式的 `models.providers.*.models` 条目以及具备可用认证的提供商。完整目录仍可通过调试 `models.list` RPC 使用 `view: "all"` 访问。 - - 当新的 Gateway 网关会话用量报告显示较高上下文压力时,聊天输入区域会显示上下文提示;在推荐压缩级别下,还会显示一个压缩按钮,用于运行正常的会话压缩路径。过期令牌快照会被隐藏,直到 Gateway 网关再次报告新的用量。 + - `chat.history` 响应会限制大小以保障 UI 安全。当转录条目过大时,Gateway 网关可能会截断长文本字段、省略较重的元数据块,并用占位符(`[chat.history omitted: message too large]`)替换超大的消息。 + - 助手/生成的图片会持久化为托管媒体引用,并通过已认证的 Gateway 网关媒体 URL 返回,因此重新加载不依赖原始 base64 图片载荷继续留在聊天历史响应中。 + - `chat.history` 还会从可见助手文本中移除仅用于显示的内联指令标签(例如 `[[reply_to_*]]` 和 `[[audio_as_voice]]`)、纯文本工具调用 XML 载荷(包括 `...`、`...`、`...`、`...` 以及被截断的工具调用块)以及泄露的 ASCII/全角模型控制标记,并省略整段可见文本仅为精确静默标记 `NO_REPLY` / `no_reply` 的助手条目。 + - 在活跃发送期间以及最终历史刷新期间,如果 `chat.history` 短暂返回较旧的快照,聊天视图会保持本地乐观用户/助手消息可见;一旦 Gateway 网关历史追上,规范转录就会替换这些本地消息。 + - 实时 `chat` 事件表示投递状态,而 `chat.history` 会从持久会话转录重建。在工具最终事件之后,Control UI 会重新加载历史,并且只合并一小段乐观尾部;转录边界记录在 [WebChat](/zh-CN/web/webchat) 中。 + - `chat.inject` 会向会话转录追加一条助手备注,并广播一个 `chat` 事件,用于仅 UI 更新(无智能体运行、无渠道投递)。 + - 聊天标题栏中的模型和思考选择器会通过 `sessions.patch` 立即修补活跃会话;它们是持久会话覆盖项,不是仅单轮有效的发送选项。 + - 在 Control UI 中输入 `/new` 会创建并切换到与 New Chat 相同的全新仪表盘会话。输入 `/reset` 会保留 Gateway 网关对当前会话的显式原地重置。 + - 聊天模型选择器会请求 Gateway 网关配置的模型视图。如果存在 `agents.defaults.models`,该允许列表会驱动选择器。否则,选择器会显示显式的 `models.providers.*.models` 条目以及具备可用凭证的提供商。完整目录仍可通过调试用的 `models.list` RPC 使用 `view: "all"` 获取。 + - 当新的 Gateway 网关会话使用情况报告显示上下文压力较高时,聊天输入区域会显示上下文提示,并在推荐的压缩级别显示一个压缩按钮,该按钮会运行常规会话压缩路径。过期的令牌快照会被隐藏,直到 Gateway 网关再次报告新的使用情况。 - - 对话模式使用已注册的实时语音提供商。使用 `talk.provider: "openai"` 和 `talk.providers.openai.apiKey` 配置 OpenAI,或使用 `talk.provider: "google"` 和 `talk.providers.google.apiKey` 配置 Google;Voice Call 实时提供商配置仍可作为回退复用。浏览器绝不会收到标准提供商 API key。OpenAI 会收到用于 WebRTC 的临时 Realtime 客户端密钥。Google Live 会收到一次性、受约束的 Live API 认证令牌,用于浏览器 WebSocket 会话,其中指令和工具声明会由 Gateway 网关锁定到令牌中。仅公开后端实时桥接的提供商会通过 Gateway 网关中继传输运行,因此凭据和供应商套接字保持在服务器端,而浏览器音频通过已认证的 Gateway 网关 RPC 传输。Realtime 会话提示词由 Gateway 网关组装;`talk.realtime.session` 不接受调用方提供的指令覆盖。 + + 通话模式使用已注册的实时语音提供商。使用 `talk.provider: "openai"` 加上 `talk.providers.openai.apiKey` 配置 OpenAI,或使用 `talk.provider: "google"` 加上 `talk.providers.google.apiKey` 配置 Google;语音通话实时提供商配置仍可作为回退复用。浏览器永远不会收到标准提供商 API key。OpenAI 会收到用于 WebRTC 的临时 Realtime 客户端密钥。Google Live 会收到用于浏览器 WebSocket 会话的一次性受限 Live API 凭证令牌,其中指令和工具声明会由 Gateway 网关锁定到令牌中。只暴露后端实时桥接的提供商会通过 Gateway 网关中继传输运行,因此凭证和供应商套接字保持在服务端,而浏览器音频通过已认证的 Gateway 网关 RPC 传输。Realtime 会话提示词由 Gateway 网关组装;`talk.realtime.session` 不接受调用方提供的指令覆盖。 - 在聊天输入框中,Talk 控件是麦克风听写按钮旁边的波形按钮。Talk 启动时,输入框状态行会显示 `Connecting Talk...`,随后在音频连接时显示 `Talk live`,或在实时工具调用通过 `chat.send` 咨询配置的更大模型时显示 `Asking OpenClaw...`。 + 在聊天输入框中,Talk 控件是麦克风听写按钮旁边的波形按钮。Talk 启动时,输入框状态行会显示 `Connecting Talk...`,音频连接后显示 `Talk live`,或在实时工具调用通过 `chat.send` 咨询已配置的较大模型时显示 `Asking OpenClaw...`。 - 维护者实时冒烟测试:`OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` 会验证 OpenAI 浏览器 WebRTC SDP 交换、Google Live 受约束令牌浏览器 WebSocket 设置,以及带伪造麦克风媒体的 Gateway 网关中继浏览器适配器。该命令只打印提供商状态,不记录密钥。 + 维护者实时冒烟测试:`OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` 会验证 OpenAI 浏览器 WebRTC SDP 交换、Google Live 受限令牌浏览器 WebSocket 设置,以及使用假麦克风媒体的 Gateway 网关中继浏览器适配器。该命令只打印提供商状态,不记录密钥。 - 点击 **Stop**(调用 `chat.abort`)。 - - 运行处于活动状态时,普通后续消息会进入队列。点击排队消息上的 **Steer** 可将该后续消息注入正在运行的轮次。 - - 输入 `/stop`(或单独的中止短语,如 `stop`、`stop action`、`stop run`、`stop openclaw`、`please stop`)可带外中止。 - - `chat.abort` 支持 `{ sessionKey }`(无 `runId`)以中止该会话的所有活动运行。 + - 运行处于活跃状态时,普通后续消息会排队。点击已排队消息上的 **Steer** 可将该后续消息注入正在运行的轮次。 + - 输入 `/stop`(或独立的中止短语,如 `stop`、`stop action`、`stop run`、`stop openclaw`、`please stop`)以带外中止。 + - `chat.abort` 支持 `{ sessionKey }`(无 `runId`),用于中止该会话的所有活跃运行。 - - 运行被中止时,部分助手文本仍可显示在 UI 中。 + - 当一次运行被中止时,部分助手文本仍可显示在 UI 中。 - 当存在已缓冲输出时,Gateway 网关会将被中止的部分助手文本持久化到转录历史中。 - - 持久化条目包含中止元数据,因此转录消费者可以区分中止部分内容和正常完成输出。 + - 持久化条目会包含中止元数据,因此转录消费者可以区分中止部分内容和正常完成输出。 -## PWA 安装和 Web 推送 +## PWA 安装和 Web Push -Control UI 随附一个 `manifest.webmanifest` 和一个服务工作线程,因此现代浏览器可以将其安装为独立 PWA。Web Push 允许 Gateway 网关通过通知唤醒已安装的 PWA,即使标签页或浏览器窗口未打开。 +Control UI 附带 `manifest.webmanifest` 和 service worker,因此现代浏览器可以将其安装为独立 PWA。Web Push 允许 Gateway 网关通过通知唤醒已安装的 PWA,即使标签页或浏览器窗口未打开。 | 表面 | 作用 | | ----------------------------------------------------- | ------------------------------------------------------------------ | -| `ui/public/manifest.webmanifest` | PWA 清单。可访问后,浏览器会提供 “Install app”。 | -| `ui/public/sw.js` | 处理 `push` 事件和通知点击的服务工作线程。 | +| `ui/public/manifest.webmanifest` | PWA 清单。浏览器在可访问后会提供“安装应用”。 | +| `ui/public/sw.js` | 处理 `push` 事件和通知点击的 service worker。 | | `push/vapid-keys.json`(位于 OpenClaw 状态目录下) | 自动生成的 VAPID 密钥对,用于签名 Web Push 载荷。 | | `push/web-push-subscriptions.json` | 持久化的浏览器订阅端点。 | -当你想固定密钥(用于多主机部署、密钥轮换或测试)时,可通过 Gateway 网关进程上的环境变量覆盖 VAPID 密钥对: +当你想固定密钥时(用于多主机部署、密钥轮换或测试),可通过 Gateway 网关进程上的环境变量覆盖 VAPID 密钥对: - `OPENCLAW_VAPID_PUBLIC_KEY` - `OPENCLAW_VAPID_PRIVATE_KEY` -- `OPENCLAW_VAPID_SUBJECT`(默认值为 `mailto:openclaw@localhost`) +- `OPENCLAW_VAPID_SUBJECT`(默认为 `mailto:openclaw@localhost`) -Control UI 使用这些受范围限制的 Gateway 网关方法来注册和测试浏览器订阅: +Control UI 使用这些按作用域门控的 Gateway 网关方法来注册和测试浏览器订阅: -- `push.web.vapidPublicKey` — 获取活动 VAPID 公钥。 +- `push.web.vapidPublicKey` — 获取活跃的 VAPID 公钥。 - `push.web.subscribe` — 注册一个 `endpoint` 以及 `keys.p256dh`/`keys.auth`。 - `push.web.unsubscribe` — 移除已注册的端点。 - `push.web.test` — 向调用方的订阅发送测试通知。 -Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/configuration) 了解基于中继的推送)以及现有的 `push.test` 方法,后者面向原生移动端配对。 +Web Push 独立于 iOS APNS 中继路径(中继支持的推送见[配置](/zh-CN/gateway/configuration))以及现有的 `push.test` 方法,后两者面向原生移动端配对。 ## 托管嵌入 @@ -230,10 +230,10 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config 禁用托管嵌入内的脚本执行。 - 允许交互式嵌入,同时保持源隔离;这是默认设置,通常足以满足自包含的浏览器游戏/小组件。 + 允许交互式嵌入,同时保持源隔离;这是默认值,通常足以支持自包含的浏览器游戏/小组件。 - 在 `allow-scripts` 之上添加 `allow-same-origin`,用于有意需要更强权限的同站点文档。 + 在 `allow-scripts` 之上为有意需要更强权限的同站点文档添加 `allow-same-origin`。 @@ -250,14 +250,14 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config ``` -仅当嵌入文档确实需要同源行为时,才使用 `trusted`。对于大多数智能体生成的游戏和交互式画布,`scripts` 是更安全的选择。 +仅在嵌入文档确实需要同源行为时使用 `trusted`。对大多数智能体生成的游戏和交互式画布来说,`scripts` 是更安全的选择。 默认情况下,绝对外部 `http(s)` 嵌入 URL 仍会被阻止。如果你有意希望 `[embed url="https://..."]` 加载第三方页面,请设置 `gateway.controlUi.allowExternalEmbedUrls: true`。 ## 聊天消息宽度 -分组聊天消息使用易读的默认最大宽度。宽屏部署可以通过设置 `gateway.controlUi.chatMessageMaxWidth` 覆盖它,而无需修补内置 CSS: +分组聊天消息使用可读的默认最大宽度。宽屏部署可以通过设置 `gateway.controlUi.chatMessageMaxWidth` 覆盖它,而无需修补内置 CSS: ```json5 { @@ -269,13 +269,13 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config } ``` -该值在到达浏览器前会被验证。支持的值包括普通长度和百分比,例如 `960px` 或 `82%`,以及受约束的 `min(...)`、`max(...)`、`clamp(...)`、`calc(...)` 和 `fit-content(...)` 宽度表达式。 +该值会在到达浏览器之前进行验证。支持的值包括普通长度和百分比,例如 `960px` 或 `82%`,以及受约束的 `min(...)`、`max(...)`、`clamp(...)`、`calc(...)` 和 `fit-content(...)` 宽度表达式。 ## Tailnet 访问(推荐) - - 将 Gateway 网关保持在 loopback 上,并让 Tailscale Serve 使用 HTTPS 代理它: + + 将 Gateway 网关保持在 loopback 上,并让 Tailscale Serve 通过 HTTPS 代理它: ```bash openclaw gateway --tailscale serve @@ -285,16 +285,16 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config - `https:///`(或你配置的 `gateway.controlUi.basePath`) - 默认情况下,当 `gateway.auth.allowTailscale` 为 `true` 时,Control UI/WebSocket Serve 请求可以通过 Tailscale 身份标头(`tailscale-user-login`)认证。OpenClaw 会通过 `tailscale whois` 解析 `x-forwarded-for` 地址并将其与该标头匹配来验证身份,并且只在请求命中 loopback 且带有 Tailscale 的 `x-forwarded-*` 标头时接受这些标头。对于具有浏览器设备身份的 Control UI 操作员会话,这条已验证的 Serve 路径也会跳过设备配对往返;无设备浏览器和节点角色连接仍会遵循正常设备检查。如果你希望即使对 Serve 流量也要求显式共享密钥凭据,请设置 `gateway.auth.allowTailscale: false`。然后使用 `gateway.auth.mode: "token"` 或 `"password"`。 + 默认情况下,当 `gateway.auth.allowTailscale` 为 `true` 时,Control UI/WebSocket Serve 请求可以通过 Tailscale 身份标头(`tailscale-user-login`)进行认证。OpenClaw 会通过 `tailscale whois` 解析 `x-forwarded-for` 地址并将其与标头匹配来验证身份,并且只在请求命中 loopback 且带有 Tailscale 的 `x-forwarded-*` 标头时接受这些身份。对于带有浏览器设备身份的 Control UI 操作员会话,此已验证的 Serve 路径还会跳过设备配对往返;无设备浏览器和节点角色连接仍会遵循常规设备检查。如果你希望即使是 Serve 流量也必须使用显式共享密钥凭证,请设置 `gateway.auth.allowTailscale: false`。然后使用 `gateway.auth.mode: "token"` 或 `"password"`。 - 对于该异步 Serve 身份路径,来自相同客户端 IP 和认证范围的失败认证尝试会在写入速率限制前被串行化。因此,同一浏览器的并发错误重试可能会在第二个请求上显示 `retry later`,而不是两个普通不匹配并行竞争。 + 对于该异步 Serve 身份路径,同一客户端 IP 和认证作用域的失败认证尝试会在写入速率限制前串行化。因此,同一浏览器发起的并发错误重试可能会在第二个请求上显示 `retry later`,而不是两个普通不匹配并行竞争。 - 无令牌 Serve 认证假定 Gateway 网关主机可信。如果不受信任的本地代码可能在该主机上运行,请要求使用令牌/密码认证。 + 无令牌 Serve 认证假设网关主机是可信的。如果不受信任的本地代码可能在该主机上运行,请要求使用令牌/密码认证。 - + ```bash openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)" ``` @@ -310,13 +310,13 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config ## 不安全 HTTP -如果你通过明文 HTTP(`http://` 或 `http://`)打开仪表板,浏览器会在**非安全上下文**中运行并阻止 WebCrypto。默认情况下,OpenClaw 会**阻止**没有设备身份的 Control UI 连接。 +如果你通过明文 HTTP(`http://` 或 `http://`)打开仪表盘,浏览器会运行在**非安全上下文**中并阻止 WebCrypto。默认情况下,OpenClaw 会**阻止**没有设备身份的 Control UI 连接。 -已记录的例外: +已记录的例外情况: -- 仅 localhost 的不安全 HTTP 兼容性,使用 `gateway.controlUi.allowInsecureAuth=true` -- 通过 `gateway.auth.mode: "trusted-proxy"` 成功完成操作员 Control UI 认证 -- 破窗选项 `gateway.controlUi.dangerouslyDisableDeviceAuth=true` +- 使用 `gateway.controlUi.allowInsecureAuth=true` 的仅 localhost 不安全 HTTP 兼容性 +- 通过 `gateway.auth.mode: "trusted-proxy"` 成功完成的操作员 Control UI 认证 +- 应急用的 `gateway.controlUi.dangerouslyDisableDeviceAuth=true` **推荐修复:**使用 HTTPS(Tailscale Serve)或在本地打开 UI: @@ -337,7 +337,7 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config `allowInsecureAuth` 只是一个本地兼容性开关: - - 它允许 localhost Control UI 会话在非安全 HTTP 上下文中不带设备身份继续运行。 + - 它允许 localhost Control UI 会话在非安全 HTTP 上下文中无需设备身份即可继续。 - 它不会绕过配对检查。 - 它不会放宽远程(非 localhost)设备身份要求。 @@ -354,58 +354,58 @@ Web Push 独立于 iOS APNS 中继路径(参见 [配置](/zh-CN/gateway/config ``` - `dangerouslyDisableDeviceAuth` 会禁用 Control UI 设备身份检查,属于严重的安全降级。紧急使用后请尽快还原。 + `dangerouslyDisableDeviceAuth` 会禁用 Control UI 设备身份检查,是严重的安全降级。紧急使用后请尽快恢复。 - - 成功的可信代理认证可以允许没有设备身份的**操作员** Control UI 会话进入。 - - 这**不**适用于节点角色的 Control UI 会话。 - - 同主机 loopback 反向代理仍然不满足可信代理认证;请参阅[可信代理认证](/zh-CN/gateway/trusted-proxy-auth)。 + - 成功的 trusted-proxy 认证可以允许没有设备身份的 **operator** Control UI 会话进入。 + - 这**不**适用于 node-role Control UI 会话。 + - 同主机 local loopback 反向代理仍然不满足 trusted-proxy 认证;请参阅 [Trusted proxy auth](/zh-CN/gateway/trusted-proxy-auth)。 -有关 HTTPS 设置指南,请参阅 [Tailscale](/zh-CN/gateway/tailscale)。 +HTTPS 设置指南请参阅 [Tailscale](/zh-CN/gateway/tailscale)。 ## 内容安全策略 -Control UI 附带严格的 `img-src` 策略:只允许**同源**资源、`data:` URL 和本地生成的 `blob:` URL。远程 `http(s)` 和协议相对图片 URL 会被浏览器拒绝,并且不会发起网络获取。 +Control UI 附带严格的 `img-src` 策略:只允许**同源**资源、`data:` URL,以及本地生成的 `blob:` URL。远程 `http(s)` 和协议相对图片 URL 会被浏览器拒绝,并且不会发起网络请求。 这在实践中意味着: -- 通过相对路径提供的头像和图片(例如 `/avatars/`)仍会渲染,包括 UI 获取后转换为本地 `blob:` URL 的已认证头像路由。 -- 内联 `data:image/...` URL 仍会渲染(对协议内载荷很有用)。 +- 通过相对路径提供的头像和图片(例如 `/avatars/`)仍会渲染,包括 UI 获取并转换为本地 `blob:` URL 的已认证头像路由。 +- 内联 `data:image/...` URL 仍会渲染(适用于协议内载荷)。 - Control UI 创建的本地 `blob:` URL 仍会渲染。 -- 渠道元数据发出的远程头像 URL 会在 Control UI 的头像辅助逻辑中被剥离,并替换为内置徽标/徽章,因此被攻陷或恶意的渠道无法强制操作员浏览器获取任意远程图片。 +- 渠道元数据发出的远程头像 URL 会在 Control UI 的头像助手中被剥离,并替换为内置 logo/徽章,因此被攻陷或恶意的渠道无法强制操作员浏览器发起任意远程图片请求。 -你不需要更改任何内容即可获得此行为 —— 它始终启用且不可配置。 +你无需更改任何内容即可获得此行为,它始终启用且不可配置。 ## 头像路由认证 -配置 Gateway 网关认证后,Control UI 头像端点要求使用与 API 其余部分相同的 Gateway 网关令牌: +配置 Gateway 网关认证后,Control UI 头像端点需要使用与 API 其余部分相同的 Gateway 网关令牌: - `GET /avatar/` 仅向已认证调用方返回头像图片。`GET /avatar/?meta=1` 在相同规则下返回头像元数据。 -- 对任一路由的未认证请求都会被拒绝(与同级 assistant-media 路由一致)。这可以防止头像路由在其他方面受保护的主机上泄露 agent 身份。 -- Control UI 自身在获取头像时会将 Gateway 网关令牌作为 bearer 标头转发,并使用已认证的 blob URL,因此图片仍会在仪表盘中渲染。 +- 对任一路由的未认证请求都会被拒绝(与同级 assistant-media 路由一致)。这可以防止头像路由在其他方面受保护的主机上泄露智能体身份。 +- Control UI 本身在获取头像时会将 Gateway 网关令牌作为 bearer 标头转发,并使用已认证的 blob URL,因此图片仍会在仪表板中渲染。 -如果你禁用 Gateway 网关认证(不建议在共享主机上这样做),头像路由也会变为无需认证,与 Gateway 网关的其余部分保持一致。 +如果你禁用 Gateway 网关认证(不建议在共享主机上这样做),头像路由也会变为未认证状态,与 Gateway 网关的其余部分保持一致。 ## 构建 UI -Gateway 网关从 `dist/control-ui` 提供静态文件。使用以下命令构建它们: +Gateway 网关从 `dist/control-ui` 提供静态文件。使用以下命令构建: ```bash pnpm ui:build ``` -可选的绝对基路径(当你需要固定资源 URL 时): +可选的绝对基础路径(当你需要固定资源 URL 时): ```bash OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build ``` -用于本地开发(单独的开发服务器): +本地开发(单独的开发服务器): ```bash pnpm ui:dev @@ -415,7 +415,7 @@ pnpm ui:dev ## 调试/测试:开发服务器 + 远程 Gateway 网关 -Control UI 是静态文件;WebSocket 目标可配置,并且可以不同于 HTTP 来源。当你希望 Vite 开发服务器在本地运行,而 Gateway 网关在其他位置运行时,这很方便。 +Control UI 是静态文件;WebSocket 目标可配置,并且可以不同于 HTTP 源。当你希望在本地运行 Vite 开发服务器,而 Gateway 网关在其他地方运行时,这很方便。 @@ -428,7 +428,7 @@ Control UI 是静态文件;WebSocket 目标可配置,并且可以不同于 H http://localhost:5173/?gatewayUrl=ws%3A%2F%2F%3A18789 ``` - 可选的一次性认证(如果需要): + 可选的一次性认证(如需要): ```text http://localhost:5173/?gatewayUrl=wss%3A%2F%2F%3A18789#token= @@ -439,17 +439,17 @@ Control UI 是静态文件;WebSocket 目标可配置,并且可以不同于 H - - `gatewayUrl` 会在加载后存储到 localStorage,并从 URL 中移除。 + - `gatewayUrl` 在加载后会存储到 localStorage,并从 URL 中移除。 - 如果你通过 `gatewayUrl` 传入完整的 `ws://` 或 `wss://` 端点,请对 `gatewayUrl` 值进行 URL 编码,以便浏览器正确解析查询字符串。 - - 只要可行,`token` 应通过 URL 片段(`#token=...`)传递。片段不会发送到服务器,这可以避免请求日志和 Referer 泄露。旧版 `?token=` 查询参数仍会为了兼容性导入一次,但仅作为回退,并会在启动后立即剥离。 - - `password` 只保存在内存中。 - - 设置 `gatewayUrl` 后,UI 不会回退到配置或环境凭证。请显式提供 `token`(或 `password`)。缺少显式凭证是错误。 - - 当 Gateway 网关位于 TLS 后方时(Tailscale Serve、HTTPS 代理等),请使用 `wss://`。 - - `gatewayUrl` 只会在顶层窗口中被接受(不能嵌入),以防止点击劫持。 - - 非 loopback Control UI 部署必须显式设置 `gateway.controlUi.allowedOrigins`(完整来源)。这包括远程开发设置。 - - Gateway 网关启动时可能会根据有效的运行时绑定和端口填充本地来源,例如 `http://localhost:` 和 `http://127.0.0.1:`,但远程浏览器来源仍需要显式条目。 - - 除了严格受控的本地测试外,不要使用 `gateway.controlUi.allowedOrigins: ["*"]`。它表示允许任意浏览器来源,而不是“匹配我正在使用的任何主机”。 - - `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` 会启用 Host 标头来源回退模式,但这是危险的安全模式。 + - 只要可能,`token` 都应通过 URL 片段(`#token=...`)传递。片段不会发送到服务器,这可以避免请求日志和 Referer 泄露。旧版 `?token=` 查询参数仍会为兼容性导入一次,但仅作为后备,并会在引导后立即剥离。 + - `password` 仅保存在内存中。 + - 设置 `gatewayUrl` 后,UI 不会回退到配置或环境凭证。请显式提供 `token`(或 `password`)。缺少显式凭证会报错。 + - 当 Gateway 网关位于 TLS 后面时(Tailscale Serve、HTTPS 代理等),请使用 `wss://`。 + - `gatewayUrl` 只在顶层窗口中接受(不接受嵌入场景),以防止点击劫持。 + - 非 local loopback 的 Control UI 部署必须显式设置 `gateway.controlUi.allowedOrigins`(完整源)。这包括远程开发设置。 + - Gateway 网关启动时可能会基于有效的运行时绑定和端口播种本地源,例如 `http://localhost:` 和 `http://127.0.0.1:`,但远程浏览器源仍需要显式条目。 + - 除非用于严格受控的本地测试,否则不要使用 `gateway.controlUi.allowedOrigins: ["*"]`。它表示允许任何浏览器源,而不是“匹配我正在使用的任何主机”。 + - `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` 会启用 Host-header 源后备模式,但这是危险的安全模式。 @@ -470,7 +470,7 @@ Control UI 是静态文件;WebSocket 目标可配置,并且可以不同于 H ## 相关内容 -- [Dashboard](/zh-CN/web/dashboard) — Gateway 网关仪表盘 -- [Health Checks](/zh-CN/gateway/health) — Gateway 网关健康监控 +- [仪表板](/zh-CN/web/dashboard) — Gateway 网关仪表板 +- [健康检查](/zh-CN/gateway/health) — Gateway 网关健康监控 - [TUI](/zh-CN/web/tui) — 终端用户界面 - [WebChat](/zh-CN/web/webchat) — 基于浏览器的聊天界面