Docs: normalize zh-CN terminology + tone
What: switch to 你/你的 tone; standardize Skills/Gateway网关/local loopback/私信 wording Why: align zh-CN docs with issue 6995 feedback + idiomatic tech style Tests: pnpm docs:buildmain
parent
2b1f68c928
commit
5676a6b38d
|
|
@ -33,7 +33,7 @@ openclaw models status --check
|
|||
|
||||
## 可选脚本(运维/手机工作流)
|
||||
|
||||
这些脚本位于 `scripts/` 目录下,属于**可选项**。它们假定你可以通过 SSH 访问 Gateway 主机,并针对 systemd + Termux 进行了调优。
|
||||
这些脚本位于 `scripts/` 目录下,属于**可选项**。它们假定你可以通过 SSH 访问 Gateway网关主机,并针对 systemd + Termux 进行了调优。
|
||||
|
||||
- `scripts/claude-auth-status.sh` 现在使用 `openclaw models status --json` 作为数据源(如果 CLI 不可用则回退到直接读取文件),因此请确保定时器中 `openclaw` 在 `PATH` 中。
|
||||
- `scripts/auth-monitor.sh`:cron/systemd 定时器目标;发送告警(ntfy 或手机)。
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ read_when:
|
|||
- 调度后台任务或唤醒
|
||||
- 配置需要与心跳一起或并行运行的自动化
|
||||
- 在心跳和定时任务之间做选择
|
||||
summary: Gateway 调度器的定时任务与唤醒
|
||||
summary: Gateway网关调度器的定时任务与唤醒
|
||||
title: 定时任务
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:37:32Z"
|
||||
|
|
@ -14,17 +14,17 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# 定时任务(Gateway 调度器)
|
||||
# 定时任务(Gateway网关调度器)
|
||||
|
||||
> **定时任务还是心跳?** 请参阅[定时任务与心跳对比](/automation/cron-vs-heartbeat)了解何时使用哪种方式。
|
||||
|
||||
定时任务是 Gateway 内置的调度器。它持久化任务、在合适的时间唤醒智能体,并可选择将输出发送回聊天。
|
||||
定时任务是 Gateway网关内置的调度器。它持久化任务、在合适的时间唤醒智能体,并可选择将输出发送回聊天。
|
||||
|
||||
如果你想要 _"每天早上运行"_ 或 _"20 分钟后提醒智能体"_,定时任务就是对应的机制。
|
||||
|
||||
## 简要概述
|
||||
|
||||
- 定时任务运行在 **Gateway 内部**(而非模型内部)。
|
||||
- 定时任务运行在 **Gateway网关内部**(而非模型内部)。
|
||||
- 任务持久化存储在 `~/.openclaw/cron/` 下,因此重启不会丢失计划。
|
||||
- 两种执行方式:
|
||||
- **主会话**:入队一个系统事件,然后在下一次心跳时运行。
|
||||
|
|
@ -63,13 +63,13 @@ openclaw cron add \
|
|||
--to "channel:C1234567890"
|
||||
```
|
||||
|
||||
## 工具调用等价形式(Gateway 定时任务工具)
|
||||
## 工具调用等价形式(Gateway网关定时任务工具)
|
||||
|
||||
有关规范的 JSON 结构和示例,请参阅[工具调用的 JSON 模式](/automation/cron-jobs#json-schema-for-tool-calls)。
|
||||
|
||||
## 定时任务的存储位置
|
||||
|
||||
定时任务默认持久化存储在 Gateway 主机的 `~/.openclaw/cron/jobs.json` 中。Gateway 将文件加载到内存中,并在更改时写回,因此仅在 Gateway 停止时手动编辑才是安全的。请优先使用 `openclaw cron add/edit` 或定时任务工具调用 API 进行更改。
|
||||
定时任务默认持久化存储在 Gateway网关主机的 `~/.openclaw/cron/jobs.json` 中。Gateway网关将文件加载到内存中,并在更改时写回,因此仅在 Gateway网关停止时手动编辑才是安全的。请优先使用 `openclaw cron add/edit` 或定时任务工具调用 API 进行更改。
|
||||
|
||||
## 新手友好概述
|
||||
|
||||
|
|
@ -99,9 +99,9 @@ openclaw cron add \
|
|||
- 一个**调度计划**(何时运行),
|
||||
- 一个**负载**(做什么),
|
||||
- 可选的**投递**(输出发送到哪里)。
|
||||
- 可选的**智能体绑定**(`agentId`):在指定智能体下运行任务;如果缺失或未知,Gateway 会回退到默认智能体。
|
||||
- 可选的**智能体绑定**(`agentId`):在指定智能体下运行任务;如果缺失或未知,Gateway网关会回退到默认智能体。
|
||||
|
||||
任务通过稳定的 `jobId` 标识(用于 CLI/Gateway API)。
|
||||
任务通过稳定的 `jobId` 标识(用于 CLI/Gateway网关 API)。
|
||||
在智能体工具调用中,`jobId` 是规范字段;旧版 `id` 仍可兼容使用。
|
||||
任务可以通过 `deleteAfterRun: true` 在一次性任务成功运行后自动删除。
|
||||
|
||||
|
|
@ -109,11 +109,11 @@ openclaw cron add \
|
|||
|
||||
定时任务支持三种调度类型:
|
||||
|
||||
- `at`:一次性时间戳(自纪元起的毫秒数)。Gateway 接受 ISO 8601 格式并转换为 UTC。
|
||||
- `at`:一次性时间戳(自纪元起的毫秒数)。Gateway网关接受 ISO 8601 格式并转换为 UTC。
|
||||
- `every`:固定间隔(毫秒)。
|
||||
- `cron`:5 字段 cron 表达式,可选 IANA 时区。
|
||||
|
||||
Cron 表达式使用 `croner`。如果省略时区,将使用 Gateway 主机的本地时区。
|
||||
Cron 表达式使用 `croner`。如果省略时区,将使用 Gateway网关主机的本地时区。
|
||||
|
||||
### 主会话与隔离式执行
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ Telegram 通过 `message_thread_id` 支持论坛主题。对于定时任务投
|
|||
|
||||
## 工具调用的 JSON 模式
|
||||
|
||||
直接调用 Gateway `cron.*` 工具(智能体工具调用或 RPC)时使用这些结构。CLI 标志接受人类可读的时间格式如 `20m`,但工具调用对 `atMs` 和 `everyMs` 使用纪元毫秒数(`at` 时间接受 ISO 时间戳)。
|
||||
直接调用 Gateway网关 `cron.*` 工具(智能体工具调用或 RPC)时使用这些结构。CLI 标志接受人类可读的时间格式如 `20m`,但工具调用对 `atMs` 和 `everyMs` 使用纪元毫秒数(`at` 时间接受 ISO 时间戳)。
|
||||
|
||||
### cron.add 参数
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ Telegram 通过 `message_thread_id` 支持论坛主题。对于定时任务投
|
|||
|
||||
## 存储与历史
|
||||
|
||||
- 任务存储:`~/.openclaw/cron/jobs.json`(Gateway 管理的 JSON)。
|
||||
- 任务存储:`~/.openclaw/cron/jobs.json`(Gateway网关管理的 JSON)。
|
||||
- 运行历史:`~/.openclaw/cron/runs/<jobId>.jsonl`(JSONL,自动清理)。
|
||||
- 覆盖存储路径:配置中的 `cron.store`。
|
||||
|
||||
|
|
@ -414,7 +414,7 @@ openclaw cron runs --id <jobId> --limit 50
|
|||
openclaw system event --mode now --text "Next heartbeat: check battery."
|
||||
```
|
||||
|
||||
## Gateway API 接口
|
||||
## Gateway网关 API 接口
|
||||
|
||||
- `cron.list`、`cron.status`、`cron.add`、`cron.update`、`cron.remove`
|
||||
- `cron.run`(强制或到期)、`cron.runs`
|
||||
|
|
@ -425,7 +425,7 @@ openclaw system event --mode now --text "Next heartbeat: check battery."
|
|||
### "没有任何任务运行"
|
||||
|
||||
- 检查定时任务是否已启用:`cron.enabled` 和 `OPENCLAW_SKIP_CRON`。
|
||||
- 检查 Gateway 是否持续运行(定时任务运行在 Gateway 进程内部)。
|
||||
- 检查 Gateway网关是否持续运行(定时任务运行在 Gateway网关进程内部)。
|
||||
- 对于 `cron` 调度:确认时区(`--tz`)与主机时区的关系。
|
||||
|
||||
### Telegram 投递到了错误的位置
|
||||
|
|
|
|||
|
|
@ -114,9 +114,9 @@ openclaw webhooks gmail setup \
|
|||
|
||||
平台说明:在 macOS 上,向导通过 Homebrew 安装 `gcloud`、`gogcli` 和 `tailscale`;在 Linux 上请先手动安装它们。
|
||||
|
||||
Gateway 自动启动(推荐):
|
||||
Gateway网关自动启动(推荐):
|
||||
|
||||
- 当 `hooks.enabled=true` 且设置了 `hooks.gmail.account` 时,Gateway 会在启动时运行 `gog gmail watch serve` 并自动续期 watch。
|
||||
- 当 `hooks.enabled=true` 且设置了 `hooks.gmail.account` 时,Gateway网关会在启动时运行 `gog gmail watch serve` 并自动续期 watch。
|
||||
- 设置 `OPENCLAW_SKIP_GMAIL_WATCHER=1` 可退出自动启动(如果你自行运行守护进程则很有用)。
|
||||
- 不要同时运行手动守护进程,否则会遇到 `listen tcp 127.0.0.1:8788: bind: address already in use`。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 添加或修改投票支持
|
||||
- 调试从 CLI 或 Gateway 发送的投票
|
||||
summary: 通过 Gateway + CLI 发送投票
|
||||
- 调试从 CLI 或 Gateway网关发送的投票
|
||||
summary: 通过 Gateway网关 + CLI 发送投票
|
||||
title: 投票
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:38:57Z"
|
||||
|
|
@ -47,7 +47,7 @@ openclaw message poll --channel msteams --target conversation:19:abc@thread.tacv
|
|||
- `--poll-multi`:允许选择多个选项
|
||||
- `--poll-duration-hours`:仅限 Discord(省略时默认为 24)
|
||||
|
||||
## Gateway RPC
|
||||
## Gateway网关 RPC
|
||||
|
||||
方法:`poll`
|
||||
|
||||
|
|
@ -72,4 +72,4 @@ openclaw message poll --channel msteams --target conversation:19:abc@thread.tacv
|
|||
使用 `message` 工具的 `poll` 操作(`to`、`pollQuestion`、`pollOption`,可选 `pollMulti`、`pollDurationHours`、`channel`)。
|
||||
|
||||
注意:Discord 没有"精确选择 N 个"模式;`pollMulti` 映射为多选。
|
||||
Teams 投票以 Adaptive Cards 形式渲染,需要 Gateway 保持在线以在 `~/.openclaw/msteams-polls.json` 中记录投票结果。
|
||||
Teams 投票以 Adaptive Cards 形式渲染,需要 Gateway网关保持在线以在 `~/.openclaw/msteams-polls.json` 中记录投票结果。
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# Webhooks
|
||||
|
||||
Gateway 可以暴露一个小型 HTTP webhook 端点用于外部触发。
|
||||
Gateway网关可以暴露一个小型 HTTP webhook 端点用于外部触发。
|
||||
|
||||
## 启用
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ curl -X POST http://127.0.0.1:18789/hooks/gmail \
|
|||
|
||||
## 安全
|
||||
|
||||
- 将 hook 端点限制在回环地址、tailnet 或受信任的反向代理之后。
|
||||
- 使用专用的 hook 令牌;不要复用 Gateway 认证令牌。
|
||||
- 将 hook 端点限制在 local loopback、tailnet 或受信任的反向代理之后。
|
||||
- 使用专用的 hook 令牌;不要复用 Gateway网关认证令牌。
|
||||
- 避免在 webhook 日志中包含敏感的原始请求体。
|
||||
- Hook 请求体默认被视为不受信任的,并使用安全边界进行包装。如果你必须为特定 hook 禁用此功能,请在该 hook 的映射中设置 `allowUnsafeExternalContent: true`(危险)。
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ OpenClaw 可以通过 pi‑ai 的 **Bedrock Converse** 流式提供商使用 **A
|
|||
|
||||
## 设置(手动)
|
||||
|
||||
1. 确保 AWS 凭证在 **Gateway 主机**上可用:
|
||||
1. 确保 AWS 凭证在 **Gateway网关主机**上可用:
|
||||
|
||||
```bash
|
||||
export AWS_ACCESS_KEY_ID="AKIA..."
|
||||
|
|
@ -164,7 +164,7 @@ openclaw models list
|
|||
|
||||
- Bedrock 需要在你的 AWS 账户/区域中启用**模型访问**。
|
||||
- 自动发现需要 `bedrock:ListFoundationModels` 权限。
|
||||
- 如果你使用配置文件,请在 Gateway 主机上设置 `AWS_PROFILE`。
|
||||
- 如果你使用配置文件,请在 Gateway网关主机上设置 `AWS_PROFILE`。
|
||||
- OpenClaw 按以下顺序检测凭证来源:`AWS_BEARER_TOKEN_BEDROCK`,然后 `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`,然后 `AWS_PROFILE`,最后是默认的 AWS SDK 链。
|
||||
- 推理支持取决于模型;请查看 Bedrock 模型卡了解当前功能。
|
||||
- 如果你偏好托管密钥流程,也可以在 Bedrock 前面放置一个兼容 OpenAI 的代理,将其配置为 OpenAI 提供商。
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ OpenClaw 使用 Brave Search 作为 `web_search` 的默认提供商。
|
|||
|
||||
1. 在 https://brave.com/search/api/ 创建 Brave Search API 账户。
|
||||
2. 在控制面板中,选择 **Data for Search** 套餐并生成 API 密钥。
|
||||
3. 将密钥存储在配置中(推荐)或在 Gateway 环境中设置 `BRAVE_API_KEY`。
|
||||
3. 将密钥存储在配置中(推荐)或在 Gateway网关环境中设置 `BRAVE_API_KEY`。
|
||||
|
||||
## 配置示例
|
||||
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ x-i18n:
|
|||
- 不同的个性
|
||||
- 不同的工具访问权限(例如只读与读写)
|
||||
- 不同的模型(例如 opus 与 sonnet)
|
||||
- 不同的已安装技能
|
||||
- 不同的已安装 Skills
|
||||
|
||||
### 示例:隔离会话
|
||||
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ x-i18n:
|
|||
},
|
||||
}
|
||||
```
|
||||
4. 将 BlueBubbles webhooks 指向你的 Gateway(示例:`https://your-gateway-host:3000/bluebubbles-webhook?password=<password>`)。
|
||||
5. 启动 Gateway;它将注册 webhook 处理器并开始配对。
|
||||
4. 将 BlueBubbles webhooks 指向你的 Gateway网关(示例:`https://your-gateway-host:3000/bluebubbles-webhook?password=<password>`)。
|
||||
5. 启动 Gateway网关;它将注册 webhook 处理器并开始配对。
|
||||
|
||||
## 上手引导
|
||||
## 新手引导
|
||||
|
||||
BlueBubbles 可在交互式设置向导中使用:
|
||||
|
||||
|
|
@ -255,12 +255,12 @@ OpenClaw 可能会呈现*短*消息 ID(例如 `1`、`2`)以节省 token。
|
|||
|
||||
- Webhook 请求通过将 `guid`/`password` 查询参数或请求头与 `channels.bluebubbles.password` 比较来进行认证。来自 `localhost` 的请求也会被接受。
|
||||
- 请保密 API 密码和 webhook 端点(将其视为凭证)。
|
||||
- localhost 信任意味着同主机的反向代理可能会无意间绕过密码。如果你为 Gateway 设置了代理,请在代理层要求认证并配置 `gateway.trustedProxies`。参见 [Gateway 安全](/gateway/security#reverse-proxy-configuration)。
|
||||
- localhost 信任意味着同主机的反向代理可能会无意间绕过密码。如果你为 Gateway网关设置了代理,请在代理层要求认证并配置 `gateway.trustedProxies`。参见 [Gateway网关安全](/gateway/security#reverse-proxy-configuration)。
|
||||
- 如果将 BlueBubbles 服务器暴露到局域网外部,请启用 HTTPS + 防火墙规则。
|
||||
|
||||
## 故障排除
|
||||
|
||||
- 如果输入/已读事件停止工作,请检查 BlueBubbles webhook 日志并验证 Gateway 路径是否与 `channels.bluebubbles.webhookPath` 匹配。
|
||||
- 如果输入/已读事件停止工作,请检查 BlueBubbles webhook 日志并验证 Gateway网关路径是否与 `channels.bluebubbles.webhookPath` 匹配。
|
||||
- 配对码在一小时后过期;使用 `openclaw pairing list bluebubbles` 和 `openclaw pairing approve bluebubbles <code>`。
|
||||
- 回应功能需要 BlueBubbles private API(`POST /api/v1/message/react`);请确保服务器版本已暴露该接口。
|
||||
- 编辑/撤回需要 macOS 13+ 和兼容的 BlueBubbles 服务器版本。在 macOS 26(Tahoe)上,由于 private API 变更,编辑功能目前不可用。
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ x-i18n:
|
|||
- 或配置:`channels.discord.token: "..."`。
|
||||
- 如果两者都设置了,配置优先(环境变量回退仅用于默认账户)。
|
||||
4. 邀请机器人到你的服务器并赋予消息权限(如果只想用私信可以创建一个私人服务器)。
|
||||
5. 启动 Gateway。
|
||||
5. 启动 Gateway网关。
|
||||
6. 私信访问默认需要配对;首次联系时批准配对码即可。
|
||||
|
||||
最小配置:
|
||||
|
|
@ -53,7 +53,7 @@ x-i18n:
|
|||
1. 创建 Discord 应用 → Bot,启用所需的 intent(私信 + 服务器消息 + 消息内容),获取机器人 token。
|
||||
2. 邀请机器人到你的服务器,赋予在你需要使用的地方读取/发送消息所需的权限。
|
||||
3. 使用 `channels.discord.token` 配置 OpenClaw(或使用 `DISCORD_BOT_TOKEN` 作为回退)。
|
||||
4. 运行 Gateway;当 token 可用(配置优先,环境变量回退)且 `channels.discord.enabled` 不为 `false` 时,它会自动启动 Discord 渠道。
|
||||
4. 运行 Gateway网关;当 token 可用(配置优先,环境变量回退)且 `channels.discord.enabled` 不为 `false` 时,它会自动启动 Discord 渠道。
|
||||
- 如果你偏好使用环境变量,设置 `DISCORD_BOT_TOKEN`(配置块是可选的)。
|
||||
5. 私聊:投递时使用 `user:<id>`(或 `<@id>` 提及);所有回合都进入共享的 `main` 会话。裸数字 ID 具有歧义性,会被拒绝。
|
||||
6. 服务器频道:投递时使用 `channel:<channelId>`。默认需要提及,可按服务器或按频道设置。
|
||||
|
|
@ -202,20 +202,20 @@ Discord 到处使用数字 ID;OpenClaw 配置推荐使用 ID。
|
|||
- 多智能体覆盖:在 `agents.list[].groupChat.mentionPatterns` 上设置每个智能体的模式。
|
||||
- 如果存在 `channels`,任何未列出的频道默认被拒绝。
|
||||
- 使用 `"*"` 频道条目来应用所有频道的默认值;明确的频道条目会覆盖通配符。
|
||||
- 帖子继承父频道配置(允许列表、`requireMention`、技能、提示等),除非你明确添加帖子频道 ID。
|
||||
- 帖子继承父频道配置(允许列表、`requireMention`、Skills、提示等),除非你明确添加帖子频道 ID。
|
||||
- 机器人发送的消息默认被忽略;设置 `channels.discord.allowBots=true` 可允许它们(自己的消息仍然被过滤)。
|
||||
- 警告:如果你允许回复其他机器人(`channels.discord.allowBots=true`),请使用 `requireMention`、`channels.discord.guilds.*.channels.<id>.users` 允许列表和/或在 `AGENTS.md` 和 `SOUL.md` 中设置明确的防护规则来防止机器人之间的回复循环。
|
||||
|
||||
### 6) 验证是否正常工作
|
||||
|
||||
1. 启动 Gateway。
|
||||
1. 启动 Gateway网关。
|
||||
2. 在你的服务器频道中,发送:`@Krill hello`(或你的机器人名称)。
|
||||
3. 如果没有响应:查看下方**故障排除**。
|
||||
|
||||
### 故障排除
|
||||
|
||||
- 首先:运行 `openclaw doctor` 和 `openclaw channels status --probe`(可操作的警告 + 快速审计)。
|
||||
- **"Used disallowed intents"**:在开发者门户中启用 **Message Content Intent**(以及可能的 **Server Members Intent**),然后重启 Gateway。
|
||||
- **"Used disallowed intents"**:在开发者门户中启用 **Message Content Intent**(以及可能的 **Server Members Intent**),然后重启 Gateway网关。
|
||||
- **机器人连接但在服务器频道中从不回复**:
|
||||
- 缺少 **Message Content Intent**,或
|
||||
- 机器人缺少频道权限(View/Send/Read History),或
|
||||
|
|
@ -330,7 +330,7 @@ Discord 到处使用数字 ID;OpenClaw 配置推荐使用 ID。
|
|||
- `guilds.<id>.channels.<channel>.tools`:可选的按频道工具策略覆盖(`allow`/`deny`/`alsoAllow`)。
|
||||
- `guilds.<id>.channels.<channel>.toolsBySender`:可选的频道内按发送者工具策略覆盖(支持 `"*"` 通配符)。
|
||||
- `guilds.<id>.channels.<channel>.users`:可选的按频道用户允许列表。
|
||||
- `guilds.<id>.channels.<channel>.skills`:技能过滤器(省略 = 所有技能,空 = 无)。
|
||||
- `guilds.<id>.channels.<channel>.skills`:Skills 过滤器(省略 = 所有 Skills,空 = 无)。
|
||||
- `guilds.<id>.channels.<channel>.systemPrompt`:频道的额外系统提示(与频道主题合并)。
|
||||
- `guilds.<id>.channels.<channel>.enabled`:设置 `false` 可禁用频道。
|
||||
- `guilds.<id>.channels`:频道规则(键为频道 slug 或 ID)。
|
||||
|
|
@ -460,4 +460,4 @@ Discord 消息 ID 在注入的上下文中呈现(`[discord message id: …]`
|
|||
|
||||
- 将机器人 token 视为密码;在受管主机上推荐使用 `DISCORD_BOT_TOKEN` 环境变量或锁定配置文件权限。
|
||||
- 仅授予机器人所需的权限(通常是读取/发送消息)。
|
||||
- 如果机器人卡住或被速率限制,在确认没有其他进程占用 Discord 会话后重启 Gateway(`openclaw gateway --force`)。
|
||||
- 如果机器人卡住或被速率限制,在确认没有其他进程占用 Discord 会话后重启 Gateway网关(`openclaw gateway --force`)。
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ x-i18n:
|
|||
- 进入 **Keys** 标签页。
|
||||
- 点击 **Add Key** > **Create new key**。
|
||||
- 选择 **JSON** 并点击 **Create**。
|
||||
4. 将下载的 JSON 文件存储在你的 Gateway 主机上(例如 `~/.openclaw/googlechat-service-account.json`)。
|
||||
4. 将下载的 JSON 文件存储在你的 Gateway网关主机上(例如 `~/.openclaw/googlechat-service-account.json`)。
|
||||
5. 在 [Google Cloud Console Chat 配置](https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat) 中创建 Google Chat 应用:
|
||||
- 填写 **Application info**:
|
||||
- **App name**:(例如 `OpenClaw`)
|
||||
|
|
@ -40,8 +40,8 @@ x-i18n:
|
|||
- 启用 **Interactive features**。
|
||||
- 在 **Functionality** 下,勾选 **Join spaces and group conversations**。
|
||||
- 在 **Connection settings** 下,选择 **HTTP endpoint URL**。
|
||||
- 在 **Triggers** 下,选择 **Use a common HTTP endpoint URL for all triggers** 并将其设置为你的 Gateway 公共 URL 后跟 `/googlechat`。
|
||||
- _提示:运行 `openclaw status` 可查找你的 Gateway 公共 URL。_
|
||||
- 在 **Triggers** 下,选择 **Use a common HTTP endpoint URL for all triggers** 并将其设置为你的 Gateway网关公共 URL 后跟 `/googlechat`。
|
||||
- _提示:运行 `openclaw status` 可查找你的 Gateway网关公共 URL。_
|
||||
- 在 **Visibility** 下,勾选 **Make this Chat app available to specific people and groups in <Your Domain>**。
|
||||
- 在文本框中输入你的邮箱地址(例如 `user@example.com`)。
|
||||
- 点击底部的 **Save**。
|
||||
|
|
@ -54,11 +54,11 @@ x-i18n:
|
|||
- 环境变量:`GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json`
|
||||
- 或配置:`channels.googlechat.serviceAccountFile: "/path/to/service-account.json"`。
|
||||
8. 设置 webhook audience 类型 + 值(与你的 Chat 应用配置匹配)。
|
||||
9. 启动 Gateway。Google Chat 将向你的 webhook 路径发送 POST 请求。
|
||||
9. 启动 Gateway网关。Google Chat 将向你的 webhook 路径发送 POST 请求。
|
||||
|
||||
## 添加到 Google Chat
|
||||
|
||||
Gateway 运行且你的邮箱已添加到可见性列表后:
|
||||
Gateway网关运行且你的邮箱已添加到可见性列表后:
|
||||
|
||||
1. 前往 [Google Chat](https://chat.google.com/)。
|
||||
2. 点击 **Direct Messages** 旁边的 **+**(加号)图标。
|
||||
|
|
@ -76,7 +76,7 @@ Google Chat webhook 需要公共 HTTPS 端点。为安全起见,**仅将 `/goo
|
|||
|
||||
使用 Tailscale Serve 用于私有仪表板,Funnel 用于公共 webhook 路径。这样 `/` 保持私有,仅暴露 `/googlechat`。
|
||||
|
||||
1. **检查你的 Gateway 绑定在哪个地址上:**
|
||||
1. **检查你的 Gateway网关绑定在哪个地址上:**
|
||||
|
||||
```bash
|
||||
ss -tlnp | grep 18789
|
||||
|
|
@ -144,7 +144,7 @@ your-domain.com {
|
|||
|
||||
## 工作原理
|
||||
|
||||
1. Google Chat 向 Gateway 发送 webhook POST 请求。每个请求包含一个 `Authorization: Bearer <token>` 头。
|
||||
1. Google Chat 向 Gateway网关发送 webhook POST 请求。每个请求包含一个 `Authorization: Bearer <token>` 头。
|
||||
2. OpenClaw 根据配置的 `audienceType` + `audience` 验证 token:
|
||||
- `audienceType: "app-url"` → audience 是你的 HTTPS webhook URL。
|
||||
- `audienceType: "project-number"` → audience 是 Cloud 项目编号。
|
||||
|
|
@ -231,7 +231,7 @@ status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Al
|
|||
|
||||
如果显示"disabled",在配置中添加 `plugins.entries.googlechat.enabled: true`。
|
||||
|
||||
3. **Gateway 未重启**:添加配置后,重启 Gateway:
|
||||
3. **Gateway网关未重启**:添加配置后,重启 Gateway网关:
|
||||
```bash
|
||||
openclaw gateway restart
|
||||
```
|
||||
|
|
@ -248,10 +248,10 @@ openclaw channels status
|
|||
- 检查 `openclaw channels status --probe` 查看认证错误或缺失的 audience 配置。
|
||||
- 如果没有消息到达,确认 Chat 应用的 webhook URL + 事件订阅。
|
||||
- 如果提及门控阻止了回复,将 `botUser` 设置为应用的用户资源名称并验证 `requireMention`。
|
||||
- 发送测试消息时使用 `openclaw logs --follow` 查看请求是否到达 Gateway。
|
||||
- 发送测试消息时使用 `openclaw logs --follow` 查看请求是否到达 Gateway网关。
|
||||
|
||||
相关文档:
|
||||
|
||||
- [Gateway 配置](/gateway/configuration)
|
||||
- [Gateway网关配置](/gateway/configuration)
|
||||
- [安全](/gateway/security)
|
||||
- [回应](/tools/reactions)
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ x-i18n:
|
|||
|
||||
# 已交付的功能
|
||||
|
||||
- **单一客户端路径:** 基于 fetch 的实现已移除;grammY 现在是唯一的 Telegram 客户端(发送 + Gateway),默认启用 grammY throttler。
|
||||
- **Gateway:** `monitorTelegramProvider` 构建一个 grammY `Bot`,接入提及/允许列表门控、通过 `getFile`/`download` 下载媒体,并通过 `sendMessage/sendPhoto/sendVideo/sendAudio/sendDocument` 投递回复。支持通过 `webhookCallback` 进行长轮询或 webhook。
|
||||
- **单一客户端路径:** 基于 fetch 的实现已移除;grammY 现在是唯一的 Telegram 客户端(发送 + Gateway网关),默认启用 grammY throttler。
|
||||
- **Gateway网关:** `monitorTelegramProvider` 构建一个 grammY `Bot`,接入提及/允许列表门控、通过 `getFile`/`download` 下载媒体,并通过 `sendMessage/sendPhoto/sendVideo/sendAudio/sendDocument` 投递回复。支持通过 `webhookCallback` 进行长轮询或 webhook。
|
||||
- **代理:** 可选的 `channels.telegram.proxy` 通过 grammY 的 `client.baseFetch` 使用 `undici.ProxyAgent`。
|
||||
- **Webhook 支持:** `webhook-set.ts` 封装了 `setWebhook/deleteWebhook`;`webhook.ts` 托管回调并支持健康检查 + 优雅关闭。当设置了 `channels.telegram.webhookUrl` + `channels.telegram.webhookSecret` 时 Gateway 启用 webhook 模式(否则使用长轮询)。
|
||||
- **Webhook 支持:** `webhook-set.ts` 封装了 `setWebhook/deleteWebhook`;`webhook.ts` 托管回调并支持健康检查 + 优雅关闭。当设置了 `channels.telegram.webhookUrl` + `channels.telegram.webhookSecret` 时 Gateway网关启用 webhook 模式(否则使用长轮询)。
|
||||
- **会话:** 私聊合并到智能体主会话(`agent:<agentId>:<mainKey>`);群组使用 `agent:<agentId>:telegram:group:<chatId>`;回复路由回同一渠道。
|
||||
- **配置选项:** `channels.telegram.botToken`、`channels.telegram.dmPolicy`、`channels.telegram.groups`(允许列表 + 提及默认值)、`channels.telegram.allowFrom`、`channels.telegram.groupAllowFrom`、`channels.telegram.groupPolicy`、`channels.telegram.mediaMaxMb`、`channels.telegram.linkPreview`、`channels.telegram.proxy`、`channels.telegram.webhookSecret`、`channels.telegram.webhookUrl`。
|
||||
- **草稿流式传输:** 可选的 `channels.telegram.streamMode` 在私有话题聊天中使用 `sendMessageDraft`(Bot API 9.3+)。这与渠道分块流式传输是分开的。
|
||||
|
|
@ -35,4 +35,4 @@ x-i18n:
|
|||
|
||||
- 如果遇到 Bot API 429 错误,考虑使用可选的 grammY 插件(throttler)。
|
||||
- 添加更多结构化的媒体测试(贴纸、语音消息)。
|
||||
- 使 webhook 监听端口可配置(目前固定为 8787,除非通过 Gateway 接入)。
|
||||
- 使 webhook 监听端口可配置(目前固定为 8787,除非通过 Gateway网关接入)。
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# iMessage(imsg)
|
||||
|
||||
状态:外部 CLI 集成。Gateway 启动 `imsg rpc`(基于 stdio 的 JSON-RPC)。
|
||||
状态:外部 CLI 集成。Gateway网关启动 `imsg rpc`(基于 stdio 的 JSON-RPC)。
|
||||
|
||||
## 快速设置(新手)
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ x-i18n:
|
|||
2. 安装 `imsg`:
|
||||
- `brew install steipete/tap/imsg`
|
||||
3. 配置 OpenClaw 的 `channels.imessage.cliPath` 和 `channels.imessage.dbPath`。
|
||||
4. 启动 Gateway 并批准所有 macOS 提示(自动化 + 完全磁盘访问权限)。
|
||||
4. 启动 Gateway网关并批准所有 macOS 提示(自动化 + 完全磁盘访问权限)。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ x-i18n:
|
|||
## 设置(快速路径)
|
||||
|
||||
1. 确保此 Mac 上的"信息"已登录。
|
||||
2. 配置 iMessage 并启动 Gateway。
|
||||
2. 配置 iMessage 并启动 Gateway网关。
|
||||
|
||||
### 专用机器人 macOS 用户(用于隔离身份)
|
||||
|
||||
|
|
@ -149,13 +149,13 @@ exec ssh -T gateway-host imsg "$@"
|
|||
|
||||
#### 通过 Tailscale 连接远程 Mac(示例)
|
||||
|
||||
如果 Gateway 运行在 Linux 主机/虚拟机上但 iMessage 必须运行在 Mac 上,Tailscale 是最简单的桥接方案:Gateway 通过 tailnet 与 Mac 通信,通过 SSH 运行 `imsg`,并通过 SCP 传回附件。
|
||||
如果 Gateway网关运行在 Linux 主机/虚拟机上但 iMessage 必须运行在 Mac 上,Tailscale 是最简单的桥接方案:Gateway网关通过 tailnet 与 Mac 通信,通过 SSH 运行 `imsg`,并通过 SCP 传回附件。
|
||||
|
||||
架构:
|
||||
|
||||
```
|
||||
┌──────────────────────────────┐ SSH (imsg rpc) ┌──────────────────────────┐
|
||||
│ Gateway 主机(Linux/VM) │──────────────────────────────────▶│ 装有 Messages + imsg 的 Mac │
|
||||
│ Gateway网关主机(Linux/VM) │──────────────────────────────────▶│ 装有 Messages + imsg 的 Mac │
|
||||
│ - openclaw gateway │ SCP(附件) │ - Messages 已登录 │
|
||||
│ - channels.imessage.cliPath │◀──────────────────────────────────│ - 远程登录已启用 │
|
||||
└──────────────────────────────┘ └──────────────────────────┘
|
||||
|
|
@ -216,7 +216,7 @@ exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
|
|||
|
||||
## 工作原理(行为)
|
||||
|
||||
- `imsg` 流式传输消息事件;Gateway 将其标准化为共享的渠道信封。
|
||||
- `imsg` 流式传输消息事件;Gateway网关将其标准化为共享的渠道信封。
|
||||
- 回复始终路由回同一个 chat id 或用户名。
|
||||
|
||||
## 类群组线程(`is_group=false`)
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ x-i18n:
|
|||
|
||||
# 聊天渠道
|
||||
|
||||
OpenClaw 可以在你已经使用的任何聊天应用上与你对话。每个渠道通过 Gateway 连接。所有渠道都支持文本;媒体和回应功能因渠道而异。
|
||||
OpenClaw 可以在你已经使用的任何聊天应用上与你对话。每个渠道通过 Gateway网关连接。所有渠道都支持文本;媒体和回应功能因渠道而异。
|
||||
|
||||
## 支持的渠道
|
||||
|
||||
- [WhatsApp](/channels/whatsapp) — 最受欢迎;使用 Baileys 并需要二维码配对。
|
||||
- [Telegram](/channels/telegram) — 通过 grammY 使用 Bot API;支持群组。
|
||||
- [Discord](/channels/discord) — Discord Bot API + Gateway;支持服务器、频道和私信。
|
||||
- [Discord](/channels/discord) — Discord Bot API + Gateway网关;支持服务器、频道和私信。
|
||||
- [Slack](/channels/slack) — Bolt SDK;工作区应用。
|
||||
- [Google Chat](/channels/googlechat) — 通过 HTTP webhook 使用 Google Chat API 应用。
|
||||
- [Mattermost](/channels/mattermost) — Bot API + WebSocket;频道、群组、私信(插件,需单独安装)。
|
||||
|
|
@ -37,7 +37,7 @@ OpenClaw 可以在你已经使用的任何聊天应用上与你对话。每个
|
|||
- [Twitch](/channels/twitch) — 通过 IRC 连接的 Twitch 聊天(插件,需单独安装)。
|
||||
- [Zalo](/channels/zalo) — Zalo Bot API;越南流行的通讯工具(插件,需单独安装)。
|
||||
- [Zalo Personal](/channels/zalouser) — 通过二维码登录的 Zalo 个人账户(插件,需单独安装)。
|
||||
- [WebChat](/web/webchat) — 通过 WebSocket 的 Gateway WebChat UI。
|
||||
- [WebChat](/web/webchat) — 通过 WebSocket 的 Gateway网关 WebChat UI。
|
||||
|
||||
## 注意事项
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ x-i18n:
|
|||
|
||||
# LINE(插件)
|
||||
|
||||
LINE 通过 LINE Messaging API 连接到 OpenClaw。插件作为 Gateway 上的 webhook 接收器运行,使用你的频道访问 token + 频道密钥进行认证。
|
||||
LINE 通过 LINE Messaging API 连接到 OpenClaw。插件作为 Gateway网关上的 webhook 接收器运行,使用你的频道访问 token + 频道密钥进行认证。
|
||||
|
||||
状态:通过插件支持。支持私信、群聊、媒体、位置、Flex 消息、模板消息和快速回复。不支持回应和线程。
|
||||
|
||||
|
|
@ -41,13 +41,13 @@ openclaw plugins install ./extensions/line
|
|||
2. 创建(或选择)一个 Provider 并添加一个 **Messaging API** 频道。
|
||||
3. 从频道设置中复制 **Channel access token** 和 **Channel secret**。
|
||||
4. 在 Messaging API 设置中启用 **Use webhook**。
|
||||
5. 将 webhook URL 设置为你的 Gateway 端点(需要 HTTPS):
|
||||
5. 将 webhook URL 设置为你的 Gateway网关端点(需要 HTTPS):
|
||||
|
||||
```
|
||||
https://gateway-host/line/webhook
|
||||
```
|
||||
|
||||
Gateway 响应 LINE 的 webhook 验证(GET)和入站事件(POST)。如果你需要自定义路径,请设置 `channels.line.webhookPath` 或 `channels.line.accounts.<id>.webhookPath` 并相应更新 URL。
|
||||
Gateway网关响应 LINE 的 webhook 验证(GET)和入站事件(POST)。如果你需要自定义路径,请设置 `channels.line.webhookPath` 或 `channels.line.accounts.<id>.webhookPath` 并相应更新 URL。
|
||||
|
||||
## 配置
|
||||
|
||||
|
|
@ -176,5 +176,5 @@ LINE 插件还附带一个 `/card` 命令用于 Flex 消息预设:
|
|||
## 故障排除
|
||||
|
||||
- **Webhook 验证失败:** 确保 webhook URL 为 HTTPS 且 `channelSecret` 与 LINE 控制台匹配。
|
||||
- **没有入站事件:** 确认 webhook 路径与 `channels.line.webhookPath` 匹配且 Gateway 可从 LINE 访问。
|
||||
- **没有入站事件:** 确认 webhook 路径与 `channels.line.webhookPath` 匹配且 Gateway网关可从 LINE 访问。
|
||||
- **媒体下载错误:** 如果媒体超过默认限制,请增大 `channels.line.mediaMaxMb`。
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ openclaw plugins install @openclaw/matrix
|
|||
openclaw plugins install ./extensions/matrix
|
||||
```
|
||||
|
||||
如果你在配置/上手引导期间选择了 Matrix 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
如果你在配置/新手引导期间选择了 Matrix 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
|
||||
详情:[插件](/plugin)
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ openclaw plugins install ./extensions/matrix
|
|||
- 如果两者都设置了,配置优先。
|
||||
- 使用访问 token 时:用户 ID 通过 `/whoami` 自动获取。
|
||||
- 设置时,`channels.matrix.userId` 应为完整的 Matrix ID(例如:`@bot:example.org`)。
|
||||
5. 重启 Gateway(或完成上手引导)。
|
||||
5. 重启 Gateway网关(或完成新手引导)。
|
||||
6. 从任何 Matrix 客户端(Element、Beeper 等;参见 https://matrix.org/ecosystem/clients/)与机器人开始私信或邀请它加入房间。Beeper 需要端到端加密,因此请设置 `channels.matrix.encryption: true` 并验证设备。
|
||||
|
||||
最小配置(访问 token,用户 ID 自动获取):
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ openclaw plugins install @openclaw/mattermost
|
|||
openclaw plugins install ./extensions/mattermost
|
||||
```
|
||||
|
||||
如果你在配置/上手引导期间选择了 Mattermost 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
如果你在配置/新手引导期间选择了 Mattermost 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
|
||||
详情:[插件](/plugin)
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ openclaw plugins install ./extensions/mattermost
|
|||
1. 安装 Mattermost 插件。
|
||||
2. 创建一个 Mattermost 机器人账户并复制 **bot token**。
|
||||
3. 复制 Mattermost **基础 URL**(例如 `https://chat.example.com`)。
|
||||
4. 配置 OpenClaw 并启动 Gateway。
|
||||
4. 配置 OpenClaw 并启动 Gateway网关。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ openclaw plugins install ./extensions/mattermost
|
|||
|
||||
## 环境变量(默认账户)
|
||||
|
||||
如果你偏好使用环境变量,请在 Gateway 主机上设置:
|
||||
如果你偏好使用环境变量,请在 Gateway网关主机上设置:
|
||||
|
||||
- `MATTERMOST_BOT_TOKEN=...`
|
||||
- `MATTERMOST_URL=https://chat.example.com`
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ openclaw plugins install @openclaw/msteams
|
|||
openclaw plugins install ./extensions/msteams
|
||||
```
|
||||
|
||||
如果你在配置/上手引导期间选择了 Teams 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
如果你在配置/新手引导期间选择了 Teams 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
|
||||
详情:[插件](/plugin)
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ openclaw plugins install ./extensions/msteams
|
|||
2. 创建一个 **Azure Bot**(App ID + 客户端密钥 + 租户 ID)。
|
||||
3. 使用这些凭据配置 OpenClaw。
|
||||
4. 通过公共 URL 或隧道暴露 `/api/messages`(默认端口 3978)。
|
||||
5. 安装 Teams 应用包并启动 Gateway。
|
||||
5. 安装 Teams 应用包并启动 Gateway网关。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -148,8 +148,8 @@ openclaw plugins install ./extensions/msteams
|
|||
2. 创建一个 **Azure Bot**(App ID + 密钥 + 租户 ID)。
|
||||
3. 构建一个引用该机器人并包含下方 RSC 权限的 **Teams 应用包**。
|
||||
4. 将 Teams 应用上传/安装到团队(或私人范围用于私信)。
|
||||
5. 在 `~/.openclaw/openclaw.json`(或环境变量)中配置 `msteams` 并启动 Gateway。
|
||||
6. Gateway 默认在 `/api/messages` 上监听 Bot Framework webhook 流量。
|
||||
5. 在 `~/.openclaw/openclaw.json`(或环境变量)中配置 `msteams` 并启动 Gateway网关。
|
||||
6. Gateway网关默认在 `/api/messages` 上监听 Bot Framework webhook 流量。
|
||||
|
||||
## Azure Bot 设置(前提条件)
|
||||
|
||||
|
|
@ -239,7 +239,7 @@ tailscale funnel 3978
|
|||
|
||||
1. 安装 Teams 应用(旁加载或组织目录)
|
||||
2. 在 Teams 中找到机器人并发送私信
|
||||
3. 检查 Gateway 日志中的传入活动
|
||||
3. 检查 Gateway网关日志中的传入活动
|
||||
|
||||
## 设置(最小纯文本)
|
||||
|
||||
|
|
@ -284,7 +284,7 @@ tailscale funnel 3978
|
|||
- 将 Azure Bot 消息端点设置为:
|
||||
- `https://<host>:3978/api/messages`(或你选择的路径/端口)。
|
||||
|
||||
6. **运行 Gateway**
|
||||
6. **运行 Gateway网关**
|
||||
- 当插件已安装且 `msteams` 配置存在凭据时,Teams 渠道会自动启动。
|
||||
|
||||
## 历史上下文
|
||||
|
|
@ -434,7 +434,7 @@ tailscale funnel 3978
|
|||
|
||||
Teams 通过 HTTP webhook 投递消息。如果处理时间过长(例如 LLM 响应缓慢),你可能会看到:
|
||||
|
||||
- Gateway 超时
|
||||
- Gateway网关超时
|
||||
- Teams 重试消息(导致重复)
|
||||
- 回复丢失
|
||||
|
||||
|
|
@ -598,8 +598,8 @@ Teams 最近在相同的底层数据模型上引入了两种频道 UI 样式:
|
|||
OpenClaw 通过 Adaptive Cards 发送 Teams 投票(没有原生 Teams 投票 API)。
|
||||
|
||||
- CLI:`openclaw message poll --channel msteams --target conversation:<id> ...`
|
||||
- 投票由 Gateway 记录在 `~/.openclaw/msteams-polls.json` 中。
|
||||
- Gateway 必须保持在线以记录投票。
|
||||
- 投票由 Gateway网关记录在 `~/.openclaw/msteams-polls.json` 中。
|
||||
- Gateway网关必须保持在线以记录投票。
|
||||
- 投票尚不会自动发布结果摘要(如需要请查看存储文件)。
|
||||
|
||||
## Adaptive Cards(任意)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ openclaw plugins install @openclaw/nextcloud-talk
|
|||
openclaw plugins install ./extensions/nextcloud-talk
|
||||
```
|
||||
|
||||
如果你在配置/上手引导期间选择了 Nextcloud Talk 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
如果你在配置/新手引导期间选择了 Nextcloud Talk 并检测到 git 检出,OpenClaw 会自动提供本地安装路径。
|
||||
|
||||
详情:[插件](/plugin)
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ openclaw plugins install ./extensions/nextcloud-talk
|
|||
4. 配置 OpenClaw:
|
||||
- 配置:`channels.nextcloud-talk.baseUrl` + `channels.nextcloud-talk.botSecret`
|
||||
- 或环境变量:`NEXTCLOUD_TALK_BOT_SECRET`(仅默认账户)
|
||||
5. 重启 Gateway(或完成上手引导)。
|
||||
5. 重启 Gateway网关(或完成新手引导)。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ openclaw plugins install ./extensions/nextcloud-talk
|
|||
## 注意事项
|
||||
|
||||
- 机器人无法主动发起私信。用户必须先给机器人发消息。
|
||||
- Webhook URL 必须能被 Gateway 访问;如果在代理后面,请设置 `webhookPublicUrl`。
|
||||
- Webhook URL 必须能被 Gateway网关访问;如果在代理后面,请设置 `webhookPublicUrl`。
|
||||
- 机器人 API 不支持媒体上传;媒体以 URL 形式发送。
|
||||
- Webhook 负载不区分私信和房间;设置 `apiUser` + `apiPassword` 以启用房间类型查询(否则私信会被视为房间)。
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@ x-i18n:
|
|||
|
||||
**状态:** 可选插件(默认禁用)。
|
||||
|
||||
Nostr 是一个去中心化的社交网络协议。此渠道使 OpenClaw 能够通过 NIP-04 接收和回复加密私信(DM)。
|
||||
Nostr 是一个去中心化的社交网络协议。此渠道使 OpenClaw 能够通过 NIP-04 接收和回复加密私信(私信)。
|
||||
|
||||
## 安装(按需)
|
||||
|
||||
### 上手引导(推荐)
|
||||
### 新手引导(推荐)
|
||||
|
||||
- 上手引导向导(`openclaw onboard`)和 `openclaw channels add` 会列出可选的渠道插件。
|
||||
- 新手引导向导(`openclaw onboard`)和 `openclaw channels add` 会列出可选的渠道插件。
|
||||
- 选择 Nostr 时会提示你按需安装插件。
|
||||
|
||||
安装默认行为:
|
||||
|
|
@ -45,7 +45,7 @@ openclaw plugins install @openclaw/nostr
|
|||
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
|
||||
```
|
||||
|
||||
安装或启用插件后请重启 Gateway。
|
||||
安装或启用插件后请重启 Gateway网关。
|
||||
|
||||
## 快速设置
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ nak key generate
|
|||
export NOSTR_PRIVATE_KEY="nsec1..."
|
||||
```
|
||||
|
||||
4. 重启 Gateway。
|
||||
4. 重启 Gateway网关。
|
||||
|
||||
## 配置参考
|
||||
|
||||
|
|
@ -214,7 +214,7 @@ docker run -p 7777:7777 ghcr.io/hoytech/strfry
|
|||
- 验证私钥是否有效。
|
||||
- 确保中继 URL 可达并使用 `wss://`(本地使用 `ws://`)。
|
||||
- 确认 `enabled` 未设为 `false`。
|
||||
- 检查 Gateway 日志中的中继连接错误。
|
||||
- 检查 Gateway网关日志中的中继连接错误。
|
||||
|
||||
### 无法发送回复
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# Signal(signal-cli)
|
||||
|
||||
状态:外部 CLI 集成。Gateway 通过 HTTP JSON-RPC + SSE 与 `signal-cli` 通信。
|
||||
状态:外部 CLI 集成。Gateway网关通过 HTTP JSON-RPC + SSE 与 `signal-cli` 通信。
|
||||
|
||||
## 快速设置(新手)
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ x-i18n:
|
|||
2. 安装 `signal-cli`(需要 Java)。
|
||||
3. 链接机器人设备并启动守护进程:
|
||||
- `signal-cli link -n "OpenClaw"`
|
||||
4. 配置 OpenClaw 并启动 Gateway。
|
||||
4. 配置 OpenClaw 并启动 Gateway网关。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ x-i18n:
|
|||
|
||||
## 号码模型(重要)
|
||||
|
||||
- Gateway 连接到一个 **Signal 设备**(`signal-cli` 账户)。
|
||||
- Gateway网关连接到一个 **Signal 设备**(`signal-cli` 账户)。
|
||||
- 如果你在**个人 Signal 账户**上运行机器人,它会忽略你自己的消息(循环保护)。
|
||||
- 要实现"我给机器人发消息它回复我",请使用一个**单独的机器人号码**。
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ x-i18n:
|
|||
1. 安装 `signal-cli`(需要 Java)。
|
||||
2. 链接机器人账户:
|
||||
- `signal-cli link -n "OpenClaw"` 然后在 Signal 中扫描二维码。
|
||||
3. 配置 Signal 并启动 Gateway。
|
||||
3. 配置 Signal 并启动 Gateway网关。
|
||||
|
||||
示例:
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ x-i18n:
|
|||
|
||||
## 工作原理(行为)
|
||||
|
||||
- `signal-cli` 作为守护进程运行;Gateway 通过 SSE 读取事件。
|
||||
- `signal-cli` 作为守护进程运行;Gateway网关通过 SSE 读取事件。
|
||||
- 入站消息被标准化为共享的渠道信封。
|
||||
- 回复始终路由回同一个号码或群组。
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ x-i18n:
|
|||
|
||||
1. 创建一个 Slack 应用并启用 **Socket Mode**。
|
||||
2. 创建一个 **App Token**(`xapp-...`)和 **Bot Token**(`xoxb-...`)。
|
||||
3. 为 OpenClaw 设置 token 并启动 Gateway。
|
||||
3. 为 OpenClaw 设置 token 并启动 Gateway网关。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -126,14 +126,14 @@ OpenClaw 可以使用 Slack 用户 token(`xoxp-...`)进行读取操作(历
|
|||
|
||||
## HTTP 模式(Events API)
|
||||
|
||||
当你的 Gateway 可通过 HTTPS 被 Slack 访问时使用 HTTP webhook 模式(适用于服务器部署)。HTTP 模式使用 Events API + Interactivity + Slash Commands,共享请求 URL。
|
||||
当你的 Gateway网关可通过 HTTPS 被 Slack 访问时使用 HTTP webhook 模式(适用于服务器部署)。HTTP 模式使用 Events API + Interactivity + Slash Commands,共享请求 URL。
|
||||
|
||||
### 设置
|
||||
|
||||
1. 创建 Slack 应用并**禁用 Socket Mode**(如果你只使用 HTTP 则可选)。
|
||||
2. **Basic Information** → 复制 **Signing Secret**。
|
||||
3. **OAuth & Permissions** → 安装应用并复制 **Bot User OAuth Token**(`xoxb-...`)。
|
||||
4. **Event Subscriptions** → 启用事件并将 **Request URL** 设置为你的 Gateway webhook 路径(默认 `/slack/events`)。
|
||||
4. **Event Subscriptions** → 启用事件并将 **Request URL** 设置为你的 Gateway网关 webhook 路径(默认 `/slack/events`)。
|
||||
5. **Interactivity & Shortcuts** → 启用并设置相同的 **Request URL**。
|
||||
6. **Slash Commands** → 为你的命令设置相同的 **Request URL**。
|
||||
|
||||
|
|
@ -490,7 +490,7 @@ Token 也可以通过环境变量提供:
|
|||
- `toolsBySender`:可选的频道内按发送者工具策略覆盖(键为发送者 ID/@用户名/邮箱;支持 `"*"` 通配符)。
|
||||
- `allowBots`:允许此频道中机器人发送的消息(默认:false)。
|
||||
- `users`:可选的按频道用户允许列表。
|
||||
- `skills`:技能过滤器(省略 = 所有技能,空 = 无)。
|
||||
- `skills`:Skills 过滤器(省略 = 所有 Skills,空 = 无)。
|
||||
- `systemPrompt`:频道的额外系统提示(与主题/目的合并)。
|
||||
- `enabled`:设置 `false` 可禁用频道。
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ x-i18n:
|
|||
- 环境变量:`TELEGRAM_BOT_TOKEN=...`
|
||||
- 或配置:`channels.telegram.botToken: "..."`。
|
||||
- 如果两者都设置了,配置优先(环境变量回退仅适用于默认账户)。
|
||||
3. 启动 Gateway。
|
||||
3. 启动 Gateway网关。
|
||||
4. 私聊访问默认为配对模式;首次联系时需批准配对码。
|
||||
|
||||
最小配置:
|
||||
|
|
@ -42,7 +42,7 @@ x-i18n:
|
|||
|
||||
## 简介
|
||||
|
||||
- 由 Gateway 管理的 Telegram Bot API 渠道。
|
||||
- 由 Gateway网关管理的 Telegram Bot API 渠道。
|
||||
- 确定性路由:回复始终发回 Telegram;模型不会选择渠道。
|
||||
- 私聊共享智能体的主会话;群组保持隔离(`agent:<agentId>:telegram:group:<chatId>`)。
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ x-i18n:
|
|||
|
||||
多账户支持:使用 `channels.telegram.accounts`,为每个账户设置令牌和可选的 `name`。请参阅 [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) 了解通用模式。
|
||||
|
||||
3. 启动 Gateway。当令牌被解析后(配置优先,环境变量回退),Telegram 即启动。
|
||||
3. 启动 Gateway网关。当令牌被解析后(配置优先,环境变量回退),Telegram 即启动。
|
||||
4. 私聊访问默认为配对模式。机器人首次被联系时需批准配对码。
|
||||
5. 对于群组:添加机器人,决定隐私/管理员行为(见下文),然后设置 `channels.telegram.groups` 来控制提及门控 + 白名单。
|
||||
|
||||
|
|
@ -365,7 +365,7 @@ Telegram 功能可在两个层级配置(上面展示了对象形式;旧版
|
|||
|
||||
更安全的方式(无需第三方机器人):
|
||||
|
||||
1. 启动 Gateway 并私聊你的机器人。
|
||||
1. 启动 Gateway网关并私聊你的机器人。
|
||||
2. 运行 `openclaw logs --follow` 并查找 `from.id`。
|
||||
|
||||
替代方式(官方 Bot API):
|
||||
|
|
@ -682,7 +682,7 @@ Telegram 表情回应作为**独立的 `message_reaction` 事件**到达,而
|
|||
- 如果设置了 `channels.telegram.groups`,群组必须被列出或使用 `"*"`
|
||||
- 在 @BotFather 中检查隐私设置 → "Group Privacy" 应为 **OFF**
|
||||
- 确认机器人确实是成员(而非只是没有读取权限的管理员)
|
||||
- 检查 Gateway 日志:`openclaw logs --follow`(查找 "skipping group message")
|
||||
- 检查 Gateway网关日志:`openclaw logs --follow`(查找 "skipping group message")
|
||||
|
||||
**机器人响应提及但不响应 `/activation always`:**
|
||||
|
||||
|
|
@ -697,12 +697,12 @@ Telegram 表情回应作为**独立的 `message_reaction` 事件**到达,而
|
|||
**长轮询在 Node 22+ 上立即中止(通常涉及代理/自定义 fetch):**
|
||||
|
||||
- Node 22+ 对 `AbortSignal` 实例更严格;外部信号可能会立即中止 `fetch` 调用。
|
||||
- 升级到规范化 abort 信号的 OpenClaw 版本,或在 Node 20 上运行 Gateway 直到可以升级。
|
||||
- 升级到规范化 abort 信号的 OpenClaw 版本,或在 Node 20 上运行 Gateway网关直到可以升级。
|
||||
|
||||
**机器人启动后静默停止响应(或日志中出现 `HttpError: Network request ... failed`):**
|
||||
|
||||
- 某些主机优先将 `api.telegram.org` 解析为 IPv6。如果你的服务器没有可用的 IPv6 出口,grammY 可能会卡在仅 IPv6 的请求上。
|
||||
- 修复方法:启用 IPv6 出口**或者**强制 `api.telegram.org` 使用 IPv4 解析(例如,使用 IPv4 A 记录添加 `/etc/hosts` 条目,或在操作系统 DNS 栈中优先使用 IPv4),然后重启 Gateway。
|
||||
- 修复方法:启用 IPv6 出口**或者**强制 `api.telegram.org` 使用 IPv4 解析(例如,使用 IPv4 A 记录添加 `/etc/hosts` 条目,或在操作系统 DNS 栈中优先使用 IPv4),然后重启 Gateway网关。
|
||||
- 快速检查:`dig +short api.telegram.org A` 和 `dig +short api.telegram.org AAAA` 确认 DNS 返回的内容。
|
||||
|
||||
## 配置参考(Telegram)
|
||||
|
|
@ -720,7 +720,7 @@ Telegram 表情回应作为**独立的 `message_reaction` 事件**到达,而
|
|||
- `channels.telegram.groupAllowFrom`:群组发送者白名单(ID/用户名)。
|
||||
- `channels.telegram.groups`:按群组的默认设置 + 白名单(使用 `"*"` 作为全局默认)。
|
||||
- `channels.telegram.groups.<id>.requireMention`:提及门控默认值。
|
||||
- `channels.telegram.groups.<id>.skills`:技能过滤(省略 = 所有技能,空 = 无技能)。
|
||||
- `channels.telegram.groups.<id>.skills`:Skills 过滤(省略 = 所有 Skills,空 = 无 Skills)。
|
||||
- `channels.telegram.groups.<id>.allowFrom`:按群组的发送者白名单覆盖。
|
||||
- `channels.telegram.groups.<id>.systemPrompt`:群组的额外系统提示词。
|
||||
- `channels.telegram.groups.<id>.enabled`:设为 `false` 时禁用该群组。
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ openclaw plugins install ./extensions/tlon
|
|||
1. 安装 Tlon 插件。
|
||||
2. 获取你的 ship URL 和登录代码。
|
||||
3. 配置 `channels.tlon`。
|
||||
4. 重启 Gateway。
|
||||
4. 重启 Gateway网关。
|
||||
5. 向机器人发送私信或在群组渠道中提及它。
|
||||
|
||||
最小配置(单账户):
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ openclaw plugins install ./extensions/twitch
|
|||
- 环境变量:`OPENCLAW_TWITCH_ACCESS_TOKEN=...`(仅限默认账号)
|
||||
- 或配置文件:`channels.twitch.accessToken`
|
||||
- 如果两者都设置了,配置文件优先(环境变量回退仅适用于默认账号)。
|
||||
5. 启动 Gateway。
|
||||
5. 启动 Gateway网关。
|
||||
|
||||
**⚠️ 重要:** 添加访问控制(`allowFrom` 或 `allowedRoles`)以防止未授权用户触发机器人。`requireMention` 默认为 `true`。
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ openclaw plugins install ./extensions/twitch
|
|||
|
||||
## 工作原理
|
||||
|
||||
- 由 Gateway 拥有的 Twitch 渠道。
|
||||
- 由 Gateway网关拥有的 Twitch 渠道。
|
||||
- 确定性路由:回复始终返回到 Twitch。
|
||||
- 每个账号映射到一个隔离的会话键 `agent:<agentId>:twitch:<accountName>`。
|
||||
- `username` 是机器人的账号(用于认证),`channel` 是要加入的聊天室。
|
||||
|
|
@ -375,7 +375,7 @@ Access token refreshed for user 123456 (expires in 14400s)
|
|||
- **使用用户 ID 允许列表** 而非用户名进行访问控制
|
||||
- **监控日志** 关注令牌刷新事件和连接状态
|
||||
- **最小化令牌权限范围** - 仅请求 `chat:read` 和 `chat:write`
|
||||
- **如遇问题**:确认没有其他进程占用会话后,重启 Gateway
|
||||
- **如遇问题**:确认没有其他进程占用会话后,重启 Gateway网关
|
||||
|
||||
## 限制
|
||||
|
||||
|
|
|
|||
|
|
@ -14,14 +14,14 @@ x-i18n:
|
|||
|
||||
# WhatsApp(网页渠道)
|
||||
|
||||
状态:仅支持通过 Baileys 的 WhatsApp Web。Gateway 拥有会话。
|
||||
状态:仅支持通过 Baileys 的 WhatsApp Web。Gateway网关拥有会话。
|
||||
|
||||
## 快速设置(入门)
|
||||
|
||||
1. 如果可能,使用**单独的手机号码**(推荐)。
|
||||
2. 在 `~/.openclaw/openclaw.json` 中配置 WhatsApp。
|
||||
3. 运行 `openclaw channels login` 扫描二维码(已关联设备)。
|
||||
4. 启动 Gateway。
|
||||
4. 启动 Gateway网关。
|
||||
|
||||
最小配置:
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ x-i18n:
|
|||
|
||||
## 目标
|
||||
|
||||
- 单个 Gateway 进程中支持多个 WhatsApp 账号(多账号)。
|
||||
- 单个 Gateway网关进程中支持多个 WhatsApp 账号(多账号)。
|
||||
- 确定性路由:回复返回到 WhatsApp,无模型路由。
|
||||
- 模型获得足够的上下文以理解引用回复。
|
||||
|
||||
|
|
@ -56,8 +56,8 @@ x-i18n:
|
|||
|
||||
## 架构(职责划分)
|
||||
|
||||
- **Gateway** 拥有 Baileys socket 和收件箱循环。
|
||||
- **CLI / macOS 应用** 与 Gateway 通信;不直接使用 Baileys。
|
||||
- **Gateway网关** 拥有 Baileys socket 和收件箱循环。
|
||||
- **CLI / macOS 应用** 与 Gateway网关通信;不直接使用 Baileys。
|
||||
- **活跃监听器** 是出站发送的必要条件;否则发送会快速失败。
|
||||
|
||||
## 获取手机号码(两种模式)
|
||||
|
|
@ -161,7 +161,7 @@ WhatsApp 需要真实的手机号码进行验证。VoIP 和虚拟号码通常会
|
|||
|
||||
## 已读回执
|
||||
|
||||
默认情况下,Gateway 会在接受入站 WhatsApp 消息后将其标记为已读(蓝色对勾)。
|
||||
默认情况下,Gateway网关会在接受入站 WhatsApp 消息后将其标记为已读(蓝色对勾)。
|
||||
|
||||
全局禁用:
|
||||
|
||||
|
|
@ -242,7 +242,7 @@ WhatsApp 需要真实的手机号码进行验证。VoIP 和虚拟号码通常会
|
|||
|
||||
## 回复投递(线程)
|
||||
|
||||
- WhatsApp Web 发送标准消息(当前 Gateway 中无引用回复线程)。
|
||||
- WhatsApp Web 发送标准消息(当前 Gateway网关中无引用回复线程)。
|
||||
- 此渠道忽略回复标签。
|
||||
|
||||
## 确认反应(收到消息时自动反应)
|
||||
|
|
@ -266,7 +266,7 @@ WhatsApp 可以在收到消息时立即自动发送表情反应,在机器人
|
|||
**选项:**
|
||||
|
||||
- `emoji`(字符串):用于确认的表情(例如 "👀"、"✅"、"📨")。为空或省略 = 功能禁用。
|
||||
- `direct`(布尔值,默认:`true`):在私聊/DM 中发送反应。
|
||||
- `direct`(布尔值,默认:`true`):在私聊/私信 中发送反应。
|
||||
- `group`(字符串,默认:`"mentions"`):群聊行为:
|
||||
- `"always"`:对所有群聊消息做出反应(即使没有 @提及)
|
||||
- `"mentions"`:仅在机器人被 @提及时做出反应
|
||||
|
|
@ -314,7 +314,7 @@ WhatsApp 可以在收到消息时立即自动发送表情反应,在机器人
|
|||
|
||||
## 出站发送(文本 + 媒体)
|
||||
|
||||
- 使用活跃的网页监听器;如果 Gateway 未运行则报错。
|
||||
- 使用活跃的网页监听器;如果 Gateway网关未运行则报错。
|
||||
- 文本分块:每条消息最大 4k(可通过 `channels.whatsapp.textChunkLimit` 配置,可选 `channels.whatsapp.chunkMode`)。
|
||||
- 媒体:
|
||||
- 支持图片/视频/音频/文档。
|
||||
|
|
@ -323,7 +323,7 @@ WhatsApp 可以在收到消息时立即自动发送表情反应,在机器人
|
|||
- 媒体获取支持 HTTP(S) 和本地路径。
|
||||
- 动态 GIF:WhatsApp 期望带 `gifPlayback: true` 的 MP4 以实现内联循环播放。
|
||||
- CLI:`openclaw message send --media <mp4> --gif-playback`
|
||||
- Gateway:`send` 参数包含 `gifPlayback: true`
|
||||
- Gateway网关:`send` 参数包含 `gifPlayback: true`
|
||||
|
||||
## 语音消息(PTT 音频)
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ WhatsApp 以**语音消息**(PTT 气泡)发送音频。
|
|||
|
||||
## 心跳
|
||||
|
||||
- **Gateway 心跳** 记录连接健康状态(`web.heartbeatSeconds`,默认 60 秒)。
|
||||
- **Gateway网关心跳** 记录连接健康状态(`web.heartbeatSeconds`,默认 60 秒)。
|
||||
- **智能体心跳** 可按智能体配置(`agents.list[].heartbeat`)或通过
|
||||
`agents.defaults.heartbeat` 全局配置(未设置每智能体条目时的回退)。
|
||||
- 使用配置的心跳提示(默认:`Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`)+ `HEARTBEAT_OK` 跳过行为。
|
||||
|
|
@ -390,21 +390,21 @@ WhatsApp 以**语音消息**(PTT 气泡)发送音频。
|
|||
|
||||
- 子系统:`whatsapp/inbound`、`whatsapp/outbound`、`web-heartbeat`、`web-reconnect`。
|
||||
- 日志文件:`/tmp/openclaw/openclaw-YYYY-MM-DD.log`(可配置)。
|
||||
- 故障排除指南:[Gateway 故障排除](/gateway/troubleshooting)。
|
||||
- 故障排除指南:[Gateway网关故障排除](/gateway/troubleshooting)。
|
||||
|
||||
## 故障排除(快速)
|
||||
|
||||
**未关联 / 需要二维码登录**
|
||||
|
||||
- 症状:`channels status` 显示 `linked: false` 或警告"未关联"。
|
||||
- 修复:在 Gateway 主机上运行 `openclaw channels login` 并扫描二维码(WhatsApp → 设置 → 已关联设备)。
|
||||
- 修复:在 Gateway网关主机上运行 `openclaw channels login` 并扫描二维码(WhatsApp → 设置 → 已关联设备)。
|
||||
|
||||
**已关联但断开连接 / 重连循环**
|
||||
|
||||
- 症状:`channels status` 显示 `running, disconnected` 或警告"已关联但断开连接"。
|
||||
- 修复:`openclaw doctor`(或重启 Gateway)。如果问题持续,通过 `channels login` 重新关联并检查 `openclaw logs --follow`。
|
||||
- 修复:`openclaw doctor`(或重启 Gateway网关)。如果问题持续,通过 `channels login` 重新关联并检查 `openclaw logs --follow`。
|
||||
|
||||
**Bun 运行时**
|
||||
|
||||
- **不推荐**使用 Bun。WhatsApp(Baileys)和 Telegram 在 Bun 上不稳定。
|
||||
请使用 **Node** 运行 Gateway。(参见入门指南运行时说明。)
|
||||
请使用 **Node** 运行 Gateway网关。(参见入门指南运行时说明。)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ x-i18n:
|
|||
Zalo 以插件形式提供,不包含在核心安装中。
|
||||
|
||||
- 通过 CLI 安装:`openclaw plugins install @openclaw/zalo`
|
||||
- 或在上手引导中选择 **Zalo** 并确认安装提示
|
||||
- 或在新手引导中选择 **Zalo** 并确认安装提示
|
||||
- 详情:[插件](/plugin)
|
||||
|
||||
## 快速设置(新手)
|
||||
|
|
@ -29,11 +29,11 @@ Zalo 以插件形式提供,不包含在核心安装中。
|
|||
1. 安装 Zalo 插件:
|
||||
- 从源码检出安装:`openclaw plugins install ./extensions/zalo`
|
||||
- 从 npm 安装(如已发布):`openclaw plugins install @openclaw/zalo`
|
||||
- 或在上手引导中选择 **Zalo** 并确认安装提示
|
||||
- 或在新手引导中选择 **Zalo** 并确认安装提示
|
||||
2. 设置令牌:
|
||||
- 环境变量:`ZALO_BOT_TOKEN=...`
|
||||
- 或配置:`channels.zalo.botToken: "..."`。
|
||||
3. 重启 Gateway(或完成上手引导)。
|
||||
3. 重启 Gateway网关(或完成新手引导)。
|
||||
4. 私信访问默认使用配对模式;首次联系时需批准配对码。
|
||||
|
||||
最小配置:
|
||||
|
|
@ -52,10 +52,10 @@ Zalo 以插件形式提供,不包含在核心安装中。
|
|||
|
||||
## 简介
|
||||
|
||||
Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gateway 运行一个用于一对一对话的机器人。
|
||||
Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gateway网关运行一个用于一对一对话的机器人。
|
||||
它非常适合需要将消息确定性路由回 Zalo 的客服或通知场景。
|
||||
|
||||
- 由 Gateway 管理的 Zalo Bot API 渠道。
|
||||
- 由 Gateway网关管理的 Zalo Bot API 渠道。
|
||||
- 确定性路由:回复始终返回 Zalo;模型不会选择渠道。
|
||||
- 私信共享智能体的主会话。
|
||||
- 群组尚不支持(Zalo 文档标注"即将推出")。
|
||||
|
|
@ -88,7 +88,7 @@ Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gatew
|
|||
|
||||
多账户支持:使用 `channels.zalo.accounts`,为每个账户配置令牌和可选的 `name`。
|
||||
|
||||
3. 重启 Gateway。当令牌被解析(通过环境变量或配置)时,Zalo 将启动。
|
||||
3. 重启 Gateway网关。当令牌被解析(通过环境变量或配置)时,Zalo 将启动。
|
||||
4. 私信访问默认使用配对模式。机器人首次被联系时,请批准配对码。
|
||||
|
||||
## 工作原理(行为)
|
||||
|
|
@ -121,7 +121,7 @@ Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gatew
|
|||
- Webhook 密钥必须为 8-256 个字符。
|
||||
- Webhook URL 必须使用 HTTPS。
|
||||
- Zalo 通过 `X-Bot-Api-Secret-Token` 请求头发送事件以进行验证。
|
||||
- Gateway HTTP 在 `channels.zalo.webhookPath` 处理 webhook 请求(默认为 webhook URL 路径)。
|
||||
- Gateway网关 HTTP 在 `channels.zalo.webhookPath` 处理 webhook 请求(默认为 webhook URL 路径)。
|
||||
|
||||
**注意:** 根据 Zalo API 文档,getUpdates(轮询)和 webhook 互斥。
|
||||
|
||||
|
|
@ -156,13 +156,13 @@ Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gatew
|
|||
|
||||
- 检查令牌是否有效:`openclaw channels status --probe`
|
||||
- 验证发送者是否已批准(配对或 allowFrom)
|
||||
- 检查 Gateway 日志:`openclaw logs --follow`
|
||||
- 检查 Gateway网关日志:`openclaw logs --follow`
|
||||
|
||||
**Webhook 未收到事件:**
|
||||
|
||||
- 确保 webhook URL 使用 HTTPS
|
||||
- 验证密钥令牌为 8-256 个字符
|
||||
- 确认 Gateway HTTP 端点在配置的路径上可达
|
||||
- 确认 Gateway网关 HTTP 端点在配置的路径上可达
|
||||
- 检查 getUpdates 轮询是否未在运行(两者互斥)
|
||||
|
||||
## 配置参考(Zalo)
|
||||
|
|
@ -179,7 +179,7 @@ Zalo 是一款面向越南市场的即时通讯应用;其 Bot API 允许 Gatew
|
|||
- `channels.zalo.mediaMaxMb`:入站/出站媒体大小上限(MB,默认 5)。
|
||||
- `channels.zalo.webhookUrl`:启用 webhook 模式(需要 HTTPS)。
|
||||
- `channels.zalo.webhookSecret`:webhook 密钥(8-256 个字符)。
|
||||
- `channels.zalo.webhookPath`:Gateway HTTP 服务器上的 webhook 路径。
|
||||
- `channels.zalo.webhookPath`:Gateway网关 HTTP 服务器上的 webhook 路径。
|
||||
- `channels.zalo.proxy`:API 请求的代理 URL。
|
||||
|
||||
多账户选项:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Zalo Personal 以插件形式提供,不包含在核心安装包中。
|
|||
|
||||
## 前置条件:zca-cli
|
||||
|
||||
Gateway 所在机器必须在 `PATH` 中包含 `zca` 可执行文件。
|
||||
Gateway网关所在机器必须在 `PATH` 中包含 `zca` 可执行文件。
|
||||
|
||||
- 验证:`zca --version`
|
||||
- 如果缺失,请安装 zca-cli(参见 `extensions/zalouser/README.md` 或上游 zca-cli 文档)。
|
||||
|
|
@ -37,7 +37,7 @@ Gateway 所在机器必须在 `PATH` 中包含 `zca` 可执行文件。
|
|||
## 快速设置(入门)
|
||||
|
||||
1. 安装插件(见上文)。
|
||||
2. 登录(二维码方式,在 Gateway 机器上操作):
|
||||
2. 登录(二维码方式,在 Gateway网关机器上操作):
|
||||
- `openclaw channels login --channel zalouser`
|
||||
- 使用 Zalo 手机应用扫描终端中的二维码。
|
||||
3. 启用渠道:
|
||||
|
|
@ -53,7 +53,7 @@ Gateway 所在机器必须在 `PATH` 中包含 `zca` 可执行文件。
|
|||
}
|
||||
```
|
||||
|
||||
4. 重启 Gateway(或完成上手引导)。
|
||||
4. 重启 Gateway网关(或完成新手引导)。
|
||||
5. 私信访问默认为配对模式;首次联系时需批准配对码。
|
||||
|
||||
## 功能说明
|
||||
|
|
@ -139,7 +139,7 @@ openclaw directory groups list --channel zalouser --query "work"
|
|||
|
||||
**找不到 `zca`:**
|
||||
|
||||
- 安装 zca-cli 并确保 Gateway 进程的 `PATH` 中包含该命令。
|
||||
- 安装 zca-cli 并确保 Gateway网关进程的 `PATH` 中包含该命令。
|
||||
|
||||
**登录状态无法保持:**
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 设置基于 ACP 的 IDE 集成
|
||||
- 调试 ACP 会话到 Gateway 的路由
|
||||
- 调试 ACP 会话到 Gateway网关的路由
|
||||
summary: 运行用于 IDE 集成的 ACP 桥接
|
||||
title: acp
|
||||
x-i18n:
|
||||
|
|
@ -15,16 +15,16 @@ x-i18n:
|
|||
|
||||
# acp
|
||||
|
||||
运行与 OpenClaw Gateway 通信的 ACP(Agent Client Protocol)桥接。
|
||||
运行与 OpenClaw Gateway网关通信的 ACP(Agent Client Protocol)桥接。
|
||||
|
||||
此命令通过 stdio 使用 ACP 协议与 IDE 通信,并通过 WebSocket 将提示转发到 Gateway。它将 ACP 会话映射到 Gateway 会话密钥。
|
||||
此命令通过 stdio 使用 ACP 协议与 IDE 通信,并通过 WebSocket 将提示转发到 Gateway网关。它将 ACP 会话映射到 Gateway网关会话密钥。
|
||||
|
||||
## 用法
|
||||
|
||||
```bash
|
||||
openclaw acp
|
||||
|
||||
# 远程 Gateway
|
||||
# 远程 Gateway网关
|
||||
openclaw acp --url wss://gateway-host:18789 --token <token>
|
||||
|
||||
# 附加到现有会话密钥
|
||||
|
|
@ -45,7 +45,7 @@ openclaw acp --session agent:main:main --reset-session
|
|||
```bash
|
||||
openclaw acp client
|
||||
|
||||
# 将启动的桥接指向远程 Gateway
|
||||
# 将启动的桥接指向远程 Gateway网关
|
||||
openclaw acp client --server-args --url wss://gateway-host:18789 --token <token>
|
||||
|
||||
# 覆盖服务器命令(默认:openclaw)
|
||||
|
|
@ -54,10 +54,10 @@ openclaw acp client --server "node" --server-args openclaw.mjs acp --url ws://12
|
|||
|
||||
## 如何使用
|
||||
|
||||
当 IDE(或其他客户端)使用 Agent Client Protocol 并且你希望它驱动 OpenClaw Gateway 会话时,请使用 ACP。
|
||||
当 IDE(或其他客户端)使用 Agent Client Protocol 并且你希望它驱动 OpenClaw Gateway网关会话时,请使用 ACP。
|
||||
|
||||
1. 确保 Gateway 正在运行(本地或远程)。
|
||||
2. 配置 Gateway 目标(通过配置文件或标志)。
|
||||
1. 确保 Gateway网关正在运行(本地或远程)。
|
||||
2. 配置 Gateway网关目标(通过配置文件或标志)。
|
||||
3. 将你的 IDE 配置为通过 stdio 运行 `openclaw acp`。
|
||||
|
||||
示例配置(持久化):
|
||||
|
|
@ -75,7 +75,7 @@ openclaw acp --url wss://gateway-host:18789 --token <token>
|
|||
|
||||
## 选择智能体
|
||||
|
||||
ACP 不直接选择智能体。它通过 Gateway 会话密钥进行路由。
|
||||
ACP 不直接选择智能体。它通过 Gateway网关会话密钥进行路由。
|
||||
|
||||
使用智能体作用域的会话密钥来指定特定智能体:
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ openclaw acp --session agent:design:main
|
|||
openclaw acp --session agent:qa:bug-123
|
||||
```
|
||||
|
||||
每个 ACP 会话映射到单个 Gateway 会话密钥。一个智能体可以有多个会话;除非你覆盖密钥或标签,否则 ACP 默认使用隔离的 `acp:<uuid>` 会话。
|
||||
每个 ACP 会话映射到单个 Gateway网关会话密钥。一个智能体可以有多个会话;除非你覆盖密钥或标签,否则 ACP 默认使用隔离的 `acp:<uuid>` 会话。
|
||||
|
||||
## Zed 编辑器设置
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ openclaw acp --session agent:qa:bug-123
|
|||
}
|
||||
```
|
||||
|
||||
要指定特定的 Gateway 或智能体:
|
||||
要指定特定的 Gateway网关或智能体:
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
@ -131,10 +131,10 @@ openclaw acp --session agent:qa:bug-123
|
|||
|
||||
## 会话映射
|
||||
|
||||
默认情况下,ACP 会话会获得一个带有 `acp:` 前缀的隔离 Gateway 会话密钥。
|
||||
默认情况下,ACP 会话会获得一个带有 `acp:` 前缀的隔离 Gateway网关会话密钥。
|
||||
要复用已知会话,请传递会话密钥或标签:
|
||||
|
||||
- `--session <key>`:使用特定的 Gateway 会话密钥。
|
||||
- `--session <key>`:使用特定的 Gateway网关会话密钥。
|
||||
- `--session-label <label>`:通过标签解析现有会话。
|
||||
- `--reset-session`:为该密钥生成新的会话 ID(相同密钥,新的对话记录)。
|
||||
|
||||
|
|
@ -154,9 +154,9 @@ openclaw acp --session agent:qa:bug-123
|
|||
|
||||
## 选项
|
||||
|
||||
- `--url <url>`:Gateway WebSocket URL(配置后默认使用 gateway.remote.url)。
|
||||
- `--token <token>`:Gateway 认证令牌。
|
||||
- `--password <password>`:Gateway 认证密码。
|
||||
- `--url <url>`:Gateway网关 WebSocket URL(配置后默认使用 gateway.remote.url)。
|
||||
- `--token <token>`:Gateway网关认证令牌。
|
||||
- `--password <password>`:Gateway网关认证密码。
|
||||
- `--session <key>`:默认会话密钥。
|
||||
- `--session-label <label>`:要解析的默认会话标签。
|
||||
- `--require-existing`:如果会话密钥/标签不存在则失败。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想从脚本中运行一次智能体轮次(可选择投递回复)
|
||||
summary: "`openclaw agent` 的 CLI 参考(通过 Gateway 发送一次智能体轮次)"
|
||||
- 你想从脚本中运行一次智能体轮次(可选择投递回复)
|
||||
summary: "`openclaw agent` 的 CLI 参考(通过 Gateway网关发送一次智能体轮次)"
|
||||
title: agent
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:58:31Z"
|
||||
|
|
@ -14,7 +14,7 @@ x-i18n:
|
|||
|
||||
# `openclaw agent`
|
||||
|
||||
通过 Gateway 运行一次智能体轮次(使用 `--local` 进行嵌入式运行)。
|
||||
通过 Gateway网关运行一次智能体轮次(使用 `--local` 进行嵌入式运行)。
|
||||
使用 `--agent <id>` 直接指定一个已配置的智能体。
|
||||
|
||||
相关内容:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
read_when:
|
||||
- 您需要多个隔离的智能体(工作区 + 路由 + 认证)
|
||||
- 你需要多个隔离的智能体(工作区 + 路由 + 认证)
|
||||
summary: "`openclaw agents` 的 CLI 参考(列出/添加/删除/设置身份)"
|
||||
title: agents
|
||||
x-i18n:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想通过 CLI 编辑执行审批
|
||||
- 您需要管理 Gateway 或节点主机上的允许列表
|
||||
summary: "`openclaw approvals` 的 CLI 参考(用于 Gateway 或节点主机的执行审批)"
|
||||
- 你想通过 CLI 编辑执行审批
|
||||
- 你需要管理 Gateway网关或节点主机上的允许列表
|
||||
summary: "`openclaw approvals` 的 CLI 参考(用于 Gateway网关或节点主机的执行审批)"
|
||||
title: approvals
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:58:39Z"
|
||||
|
|
@ -15,8 +15,8 @@ x-i18n:
|
|||
|
||||
# `openclaw approvals`
|
||||
|
||||
管理**本地主机**、**Gateway 主机**或**节点主机**的执行审批。
|
||||
默认情况下,命令针对磁盘上的本地审批文件。使用 `--gateway` 针对 Gateway,或使用 `--node` 针对特定节点。
|
||||
管理**本地主机**、**Gateway网关主机**或**节点主机**的执行审批。
|
||||
默认情况下,命令针对磁盘上的本地审批文件。使用 `--gateway` 针对 Gateway网关,或使用 `--node` 针对特定节点。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ x-i18n:
|
|||
|
||||
## 常用标志
|
||||
|
||||
- `--url <gatewayWsUrl>`:Gateway WebSocket URL(默认使用配置值)。
|
||||
- `--token <token>`:Gateway 令牌(如需要)。
|
||||
- `--url <gatewayWsUrl>`:Gateway网关 WebSocket URL(默认使用配置值)。
|
||||
- `--token <token>`:Gateway网关令牌(如需要)。
|
||||
- `--timeout <ms>`:请求超时时间(毫秒)。
|
||||
- `--browser-profile <name>`:选择浏览器配置文件(默认使用配置值)。
|
||||
- `--json`:机器可读输出(在支持的情况下)。
|
||||
|
|
@ -107,7 +107,7 @@ openclaw browser extension path
|
|||
|
||||
## 远程浏览器控制(节点主机代理)
|
||||
|
||||
如果 Gateway 与浏览器运行在不同的机器上,请在安装了 Chrome/Brave/Edge/Chromium 的机器上运行**节点主机**。Gateway 会将浏览器操作代理到该节点(无需单独的浏览器控制服务器)。
|
||||
如果 Gateway网关与浏览器运行在不同的机器上,请在安装了 Chrome/Brave/Edge/Chromium 的机器上运行**节点主机**。Gateway网关会将浏览器操作代理到该节点(无需单独的浏览器控制服务器)。
|
||||
|
||||
使用 `gateway.nodes.browser.mode` 控制自动路由,使用 `gateway.nodes.browser.node` 在多个节点连接时固定到特定节点。
|
||||
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@ x-i18n:
|
|||
|
||||
# `openclaw channels`
|
||||
|
||||
管理 Gateway 上的聊天渠道账号及其运行时状态。
|
||||
管理 Gateway网关上的聊天渠道账号及其运行时状态。
|
||||
|
||||
相关文档:
|
||||
|
||||
- 渠道指南:[渠道](/channels/index)
|
||||
- Gateway 配置:[配置](/gateway/configuration)
|
||||
- Gateway网关配置:[配置](/gateway/configuration)
|
||||
|
||||
## 常用命令
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想以非交互方式读取或编辑配置
|
||||
- 你想以非交互方式读取或编辑配置
|
||||
summary: "`openclaw config` 的 CLI 参考(获取/设置/删除配置值)"
|
||||
title: config
|
||||
x-i18n:
|
||||
|
|
@ -53,4 +53,4 @@ openclaw config set gateway.port 19001 --json
|
|||
openclaw config set channels.whatsapp.groups '["*"]' --json
|
||||
```
|
||||
|
||||
编辑后请重启 Gateway。
|
||||
编辑后请重启 Gateway网关。
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想通过交互方式调整凭据、设备或智能体默认设置
|
||||
- 你想通过交互方式调整凭据、设备或智能体默认设置
|
||||
summary: "`openclaw configure` 的 CLI 参考(交互式配置提示)"
|
||||
title: configure
|
||||
x-i18n:
|
||||
|
|
@ -24,13 +24,13 @@ x-i18n:
|
|||
|
||||
相关内容:
|
||||
|
||||
- Gateway 配置参考:[配置](/gateway/configuration)
|
||||
- Gateway网关配置参考:[配置](/gateway/configuration)
|
||||
- Config CLI:[Config](/cli/config)
|
||||
|
||||
注意事项:
|
||||
|
||||
- 选择 Gateway 运行位置时会始终更新 `gateway.mode`。如果您只需要修改这一项,可以直接选择"继续"而无需配置其他部分。
|
||||
- 面向渠道的服务(Slack/Discord/Matrix/Microsoft Teams)在设置过程中会提示配置渠道/房间允许列表。您可以输入名称或 ID;向导会尽可能将名称解析为 ID。
|
||||
- 选择 Gateway网关运行位置时会始终更新 `gateway.mode`。如果你只需要修改这一项,可以直接选择"继续"而无需配置其他部分。
|
||||
- 面向渠道的服务(Slack/Discord/Matrix/Microsoft Teams)在设置过程中会提示配置渠道/房间允许列表。你可以输入名称或 ID;向导会尽可能将名称解析为 ID。
|
||||
|
||||
## 示例
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您需要定时任务和唤醒功能
|
||||
- 您正在调试定时任务的执行和日志
|
||||
- 你需要定时任务和唤醒功能
|
||||
- 你正在调试定时任务的执行和日志
|
||||
summary: "`openclaw cron` 的 CLI 参考(调度和运行后台任务)"
|
||||
title: cron
|
||||
x-i18n:
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw cron`
|
||||
|
||||
管理 Gateway 调度器的定时任务。
|
||||
管理 Gateway网关调度器的定时任务。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您正在审批设备配对请求
|
||||
- 您需要轮换或吊销设备令牌
|
||||
- 你正在审批设备配对请求
|
||||
- 你需要轮换或吊销设备令牌
|
||||
summary: "`openclaw devices` 的 CLI 参考(设备配对 + 令牌轮换/吊销)"
|
||||
title: devices
|
||||
x-i18n:
|
||||
|
|
@ -62,9 +62,9 @@ openclaw devices revoke --device <deviceId> --role node
|
|||
|
||||
## 通用选项
|
||||
|
||||
- `--url <url>`:Gateway WebSocket URL(配置后默认使用 `gateway.remote.url`)。
|
||||
- `--token <token>`:Gateway 令牌(如需要)。
|
||||
- `--password <password>`:Gateway 密码(密码认证)。
|
||||
- `--url <url>`:Gateway网关 WebSocket URL(配置后默认使用 `gateway.remote.url`)。
|
||||
- `--token <token>`:Gateway网关令牌(如需要)。
|
||||
- `--password <password>`:Gateway网关密码(密码认证)。
|
||||
- `--timeout <ms>`:RPC 超时时间。
|
||||
- `--json`:JSON 输出(推荐用于脚本)。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您需要通过 Tailscale + CoreDNS 实现广域发现(DNS-SD)
|
||||
- 您正在为自定义发现域名设置分离 DNS(例如:openclaw.internal)
|
||||
- 你需要通过 Tailscale + CoreDNS 实现广域发现(DNS-SD)
|
||||
- 你正在为自定义发现域名设置分离 DNS(例如:openclaw.internal)
|
||||
summary: "`openclaw dns` 的 CLI 参考(广域发现辅助工具)"
|
||||
title: dns
|
||||
x-i18n:
|
||||
|
|
@ -19,7 +19,7 @@ x-i18n:
|
|||
|
||||
相关内容:
|
||||
|
||||
- Gateway 发现:[发现](/gateway/discovery)
|
||||
- Gateway网关发现:[发现](/gateway/discovery)
|
||||
- 广域发现配置:[配置](/gateway/configuration)
|
||||
|
||||
## 设置
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw doctor`
|
||||
|
||||
Gateway 和渠道的健康检查 + 快速修复。
|
||||
Gateway网关和渠道的健康检查 + 快速修复。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
read_when:
|
||||
- 从 CLI 运行 Gateway(开发或服务器环境)
|
||||
- 调试 Gateway 认证、绑定模式和连接问题
|
||||
- 通过 Bonjour 发现 Gateway(局域网 + tailnet)
|
||||
summary: OpenClaw Gateway CLI(`openclaw gateway`)— 运行、查询和发现 Gateway
|
||||
- 从 CLI 运行 Gateway网关(开发或服务器环境)
|
||||
- 调试 Gateway网关认证、绑定模式和连接问题
|
||||
- 通过 Bonjour 发现 Gateway网关(局域网 + tailnet)
|
||||
summary: OpenClaw Gateway网关 CLI(`openclaw gateway`)— 运行、查询和发现 Gateway网关
|
||||
title: gateway
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:59:19Z"
|
||||
|
|
@ -14,9 +14,9 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# Gateway CLI
|
||||
# Gateway网关 CLI
|
||||
|
||||
Gateway 是 OpenClaw 的 WebSocket 服务器(渠道、节点、会话、钩子)。
|
||||
Gateway网关是 OpenClaw 的 WebSocket 服务器(渠道、节点、会话、钩子)。
|
||||
|
||||
本页中的子命令位于 `openclaw gateway …` 下。
|
||||
|
||||
|
|
@ -26,9 +26,7 @@ Gateway 是 OpenClaw 的 WebSocket 服务器(渠道、节点、会话、钩子
|
|||
- [/gateway/discovery](/gateway/discovery)
|
||||
- [/gateway/configuration](/gateway/configuration)
|
||||
|
||||
## 运行 Gateway
|
||||
|
||||
运行本地 Gateway 进程:
|
||||
## 运行 Gateway网关运行本地 Gateway网关进程:
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
|
|
@ -42,10 +40,10 @@ openclaw gateway run
|
|||
|
||||
注意事项:
|
||||
|
||||
- 默认情况下,除非在 `~/.openclaw/openclaw.json` 中设置了 `gateway.mode=local`,否则 Gateway 会拒绝启动。使用 `--allow-unconfigured` 进行临时/开发运行。
|
||||
- 在没有认证的情况下绑定到回环地址以外的地址会被阻止(安全防护措施)。
|
||||
- 授权后 `SIGUSR1` 会触发进程内重启(需启用 `commands.restart` 或使用 Gateway 工具/配置应用/更新)。
|
||||
- `SIGINT`/`SIGTERM` 处理程序会停止 Gateway 进程,但不会恢复任何自定义终端状态。如果您使用 TUI 或原始模式输入包装 CLI,请在退出前恢复终端。
|
||||
- 默认情况下,除非在 `~/.openclaw/openclaw.json` 中设置了 `gateway.mode=local`,否则 Gateway网关会拒绝启动。使用 `--allow-unconfigured` 进行临时/开发运行。
|
||||
- 在没有认证的情况下绑定到 local loopback 以外的地址会被阻止(安全防护措施)。
|
||||
- 授权后 `SIGUSR1` 会触发进程内重启(需启用 `commands.restart` 或使用 Gateway网关工具/配置应用/更新)。
|
||||
- `SIGINT`/`SIGTERM` 处理程序会停止 Gateway网关进程,但不会恢复任何自定义终端状态。如果你使用 TUI 或原始模式输入包装 CLI,请在退出前恢复终端。
|
||||
|
||||
### 选项
|
||||
|
||||
|
|
@ -54,9 +52,9 @@ openclaw gateway run
|
|||
- `--auth <token|password>`:认证模式覆盖。
|
||||
- `--token <token>`:令牌覆盖(同时为进程设置 `OPENCLAW_GATEWAY_TOKEN`)。
|
||||
- `--password <password>`:密码覆盖(同时为进程设置 `OPENCLAW_GATEWAY_PASSWORD`)。
|
||||
- `--tailscale <off|serve|funnel>`:通过 Tailscale 暴露 Gateway。
|
||||
- `--tailscale <off|serve|funnel>`:通过 Tailscale 暴露 Gateway网关。
|
||||
- `--tailscale-reset-on-exit`:关闭时重置 Tailscale serve/funnel 配置。
|
||||
- `--allow-unconfigured`:允许在配置中没有 `gateway.mode=local` 的情况下启动 Gateway。
|
||||
- `--allow-unconfigured`:允许在配置中没有 `gateway.mode=local` 的情况下启动 Gateway网关。
|
||||
- `--dev`:如果缺失则创建开发配置和工作区(跳过 BOOTSTRAP.md)。
|
||||
- `--reset`:重置开发配置 + 凭据 + 会话 + 工作区(需要 `--dev`)。
|
||||
- `--force`:启动前终止所选端口上的现有监听器。
|
||||
|
|
@ -67,9 +65,7 @@ openclaw gateway run
|
|||
- `--raw-stream`:将原始模型流事件记录到 jsonl。
|
||||
- `--raw-stream-path <path>`:原始流 jsonl 路径。
|
||||
|
||||
## 查询运行中的 Gateway
|
||||
|
||||
所有查询命令使用 WebSocket RPC。
|
||||
## 查询运行中的 Gateway网关所有查询命令使用 WebSocket RPC。
|
||||
|
||||
输出模式:
|
||||
|
||||
|
|
@ -79,9 +75,9 @@ openclaw gateway run
|
|||
|
||||
共享选项(在支持的命令中):
|
||||
|
||||
- `--url <url>`:Gateway WebSocket URL。
|
||||
- `--token <token>`:Gateway 令牌。
|
||||
- `--password <password>`:Gateway 密码。
|
||||
- `--url <url>`:Gateway网关 WebSocket URL。
|
||||
- `--token <token>`:Gateway网关令牌。
|
||||
- `--password <password>`:Gateway网关密码。
|
||||
- `--timeout <ms>`:超时时间/预算(因命令而异)。
|
||||
- `--expect-final`:等待"最终"响应(智能体调用)。
|
||||
|
||||
|
|
@ -93,7 +89,7 @@ openclaw gateway health --url ws://127.0.0.1:18789
|
|||
|
||||
### `gateway status`
|
||||
|
||||
`gateway status` 显示 Gateway 服务(launchd/systemd/schtasks)以及可选的 RPC 探测。
|
||||
`gateway status` 显示 Gateway网关服务(launchd/systemd/schtasks)以及可选的 RPC 探测。
|
||||
|
||||
```bash
|
||||
openclaw gateway status
|
||||
|
|
@ -113,10 +109,10 @@ openclaw gateway status --json
|
|||
|
||||
`gateway probe` 是"全面调试"命令。它始终会探测:
|
||||
|
||||
- 您配置的远程 Gateway(如已设置),以及
|
||||
- localhost(回环地址),**即使已配置远程 Gateway**。
|
||||
- 你配置的远程 Gateway网关(如已设置),以及
|
||||
- localhost(local loopback),**即使已配置远程 Gateway网关**。
|
||||
|
||||
如果有多个 Gateway 可达,它会全部输出。当您使用隔离的配置文件/端口时(例如救援机器人),支持多个 Gateway,但大多数安装仍然运行单个 Gateway。
|
||||
如果有多个 Gateway网关可达,它会全部输出。当你使用隔离的配置文件/端口时(例如救援机器人),支持多个 Gateway网关,但大多数安装仍然运行单个 Gateway网关。
|
||||
|
||||
```bash
|
||||
openclaw gateway probe
|
||||
|
|
@ -125,7 +121,7 @@ openclaw gateway probe --json
|
|||
|
||||
#### 通过 SSH 远程连接(Mac 应用对等模式)
|
||||
|
||||
macOS 应用的"通过 SSH 远程连接"模式使用本地端口转发,使远程 Gateway(可能仅绑定到回环地址)可通过 `ws://127.0.0.1:<port>` 访问。
|
||||
macOS 应用的"通过 SSH 远程连接"模式使用本地端口转发,使远程 Gateway网关(可能仅绑定到 local loopback)可通过 `ws://127.0.0.1:<port>` 访问。
|
||||
|
||||
CLI 等效命令:
|
||||
|
||||
|
|
@ -137,7 +133,7 @@ openclaw gateway probe --ssh user@gateway-host
|
|||
|
||||
- `--ssh <target>`:`user@host` 或 `user@host:port`(端口默认为 `22`)。
|
||||
- `--ssh-identity <path>`:身份文件。
|
||||
- `--ssh-auto`:自动选择第一个发现的 Gateway 主机作为 SSH 目标(仅限局域网/WAB)。
|
||||
- `--ssh-auto`:自动选择第一个发现的 Gateway网关主机作为 SSH 目标(仅限局域网/WAB)。
|
||||
|
||||
配置(可选,用作默认值):
|
||||
|
||||
|
|
@ -153,7 +149,7 @@ openclaw gateway call status
|
|||
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
|
||||
```
|
||||
|
||||
## 管理 Gateway 服务
|
||||
## 管理 Gateway网关服务
|
||||
|
||||
```bash
|
||||
openclaw gateway install
|
||||
|
|
@ -168,18 +164,18 @@ openclaw gateway uninstall
|
|||
- `gateway install` 支持 `--port`、`--runtime`、`--token`、`--force`、`--json`。
|
||||
- 生命周期命令接受 `--json` 用于脚本编写。
|
||||
|
||||
## 发现 Gateway(Bonjour)
|
||||
## 发现 Gateway网关(Bonjour)
|
||||
|
||||
`gateway discover` 扫描 Gateway 信标(`_openclaw-gw._tcp`)。
|
||||
`gateway discover` 扫描 Gateway网关信标(`_openclaw-gw._tcp`)。
|
||||
|
||||
- 组播 DNS-SD:`local.`
|
||||
- 单播 DNS-SD(广域 Bonjour):选择一个域名(例如:`openclaw.internal.`)并设置分离 DNS + DNS 服务器;参见 [/gateway/bonjour](/gateway/bonjour)
|
||||
|
||||
只有启用了 Bonjour 发现(默认启用)的 Gateway 才会广播信标。
|
||||
只有启用了 Bonjour 发现(默认启用)的 Gateway网关才会广播信标。
|
||||
|
||||
广域发现记录包含(TXT):
|
||||
|
||||
- `role`(Gateway 角色提示)
|
||||
- `role`(Gateway网关角色提示)
|
||||
- `transport`(传输提示,例如 `gateway`)
|
||||
- `gatewayPort`(WebSocket 端口,通常为 `18789`)
|
||||
- `sshPort`(SSH 端口;如未指定默认为 `22`)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想快速检查正在运行的 Gateway 的健康状态
|
||||
summary: "`openclaw health` 的 CLI 参考(通过 RPC 访问 Gateway 健康端点)"
|
||||
- 你想快速检查正在运行的 Gateway网关的健康状态
|
||||
summary: "`openclaw health` 的 CLI 参考(通过 RPC 访问 Gateway网关健康端点)"
|
||||
title: health
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T19:58:57Z"
|
||||
|
|
@ -14,7 +14,7 @@ x-i18n:
|
|||
|
||||
# `openclaw health`
|
||||
|
||||
从正在运行的 Gateway 获取健康状态。
|
||||
从正在运行的 Gateway网关获取健康状态。
|
||||
|
||||
```bash
|
||||
openclaw health
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想管理智能体钩子
|
||||
- 您想安装或更新钩子
|
||||
- 你想管理智能体钩子
|
||||
- 你想安装或更新钩子
|
||||
summary: "`openclaw hooks` 的 CLI 参考(智能体钩子)"
|
||||
title: hooks
|
||||
x-i18n:
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw hooks`
|
||||
|
||||
管理智能体钩子(用于 `/new`、`/reset` 等命令以及 Gateway 启动的事件驱动自动化)。
|
||||
管理智能体钩子(用于 `/new`、`/reset` 等命令以及 Gateway网关启动的事件驱动自动化)。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ openclaw hooks enable session-memory
|
|||
|
||||
**启用后:**
|
||||
|
||||
- 重启 Gateway 以重新加载钩子(macOS 上重启菜单栏应用,或在开发环境中重启 Gateway 进程)。
|
||||
- 重启 Gateway网关以重新加载钩子(macOS 上重启菜单栏应用,或在开发环境中重启 Gateway网关进程)。
|
||||
|
||||
## 禁用钩子
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ openclaw hooks disable command-logger
|
|||
|
||||
**禁用后:**
|
||||
|
||||
- 重启 Gateway 以重新加载钩子
|
||||
- 重启 Gateway网关以重新加载钩子
|
||||
|
||||
## 安装钩子
|
||||
|
||||
|
|
@ -244,7 +244,7 @@ openclaw hooks update --all
|
|||
|
||||
### session-memory
|
||||
|
||||
在您执行 `/new` 时将会话上下文保存到记忆中。
|
||||
在你执行 `/new` 时将会话上下文保存到记忆中。
|
||||
|
||||
**启用:**
|
||||
|
||||
|
|
@ -297,7 +297,7 @@ openclaw hooks enable soul-evil
|
|||
|
||||
### boot-md
|
||||
|
||||
在 Gateway 启动时(渠道启动之后)运行 `BOOT.md`。
|
||||
在 Gateway网关启动时(渠道启动之后)运行 `BOOT.md`。
|
||||
|
||||
**事件**:`gateway:startup`
|
||||
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
## 安全
|
||||
|
||||
- `openclaw security audit` — 审计配置和本地状态中常见的安全隐患。
|
||||
- `openclaw security audit --deep` — 尽力进行实时 Gateway 探测。
|
||||
- `openclaw security audit --deep` — 尽力进行实时 Gateway网关探测。
|
||||
- `openclaw security audit --fix` — 收紧安全默认设置并修改状态/配置文件权限。
|
||||
|
||||
## 插件
|
||||
|
|
@ -262,7 +262,7 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
- `openclaw plugins enable <id>` / `disable <id>` — 切换 `plugins.entries.<id>.enabled`。
|
||||
- `openclaw plugins doctor` — 报告插件加载错误。
|
||||
|
||||
大多数插件变更需要重启 Gateway。参见 [/plugin](/plugin)。
|
||||
大多数插件变更需要重启 Gateway网关。参见 [/plugin](/plugin)。
|
||||
|
||||
## 记忆
|
||||
|
||||
|
|
@ -282,7 +282,7 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
- `/config` 用于持久化配置更改。
|
||||
- `/debug` 用于仅运行时的配置覆盖(内存中,不写入磁盘;需要 `commands.debug: true`)。
|
||||
|
||||
## 设置与上手引导
|
||||
## 设置与新手引导
|
||||
|
||||
### `setup`
|
||||
|
||||
|
|
@ -291,17 +291,17 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
选项:
|
||||
|
||||
- `--workspace <dir>`:智能体工作区路径(默认 `~/.openclaw/workspace`)。
|
||||
- `--wizard`:运行上手引导向导。
|
||||
- `--wizard`:运行新手引导向导。
|
||||
- `--non-interactive`:无提示运行向导。
|
||||
- `--mode <local|remote>`:向导模式。
|
||||
- `--remote-url <url>`:远程 Gateway URL。
|
||||
- `--remote-token <token>`:远程 Gateway 令牌。
|
||||
- `--remote-url <url>`:远程 Gateway网关 URL。
|
||||
- `--remote-token <token>`:远程 Gateway网关令牌。
|
||||
|
||||
当存在任何向导参数(`--non-interactive`、`--mode`、`--remote-url`、`--remote-token`)时,向导会自动运行。
|
||||
|
||||
### `onboard`
|
||||
|
||||
交互式向导,用于设置 Gateway、工作区和技能。
|
||||
交互式向导,用于设置 Gateway网关、工作区和 Skills。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -341,12 +341,12 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
- `--skip-skills`
|
||||
- `--skip-health`
|
||||
- `--skip-ui`
|
||||
- `--node-manager <npm|pnpm|bun>`(推荐 pnpm;不建议将 bun 用于 Gateway 运行时)
|
||||
- `--node-manager <npm|pnpm|bun>`(推荐 pnpm;不建议将 bun 用于 Gateway网关运行时)
|
||||
- `--json`
|
||||
|
||||
### `configure`
|
||||
|
||||
交互式配置向导(模型、渠道、技能、Gateway)。
|
||||
交互式配置向导(模型、渠道、Skills、Gateway网关)。
|
||||
|
||||
### `config`
|
||||
|
||||
|
|
@ -360,14 +360,14 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
|
||||
### `doctor`
|
||||
|
||||
健康检查和快速修复(配置 + Gateway + 旧版服务)。
|
||||
健康检查和快速修复(配置 + Gateway网关 + 旧版服务)。
|
||||
|
||||
选项:
|
||||
|
||||
- `--no-workspace-suggestions`:禁用工作区记忆提示。
|
||||
- `--yes`:无需提示接受默认值(无头模式)。
|
||||
- `--non-interactive`:跳过提示;仅应用安全迁移。
|
||||
- `--deep`:扫描系统服务以查找额外的 Gateway 安装。
|
||||
- `--deep`:扫描系统服务以查找额外的 Gateway网关安装。
|
||||
|
||||
## 渠道辅助工具
|
||||
|
||||
|
|
@ -378,9 +378,9 @@ openclaw [--dev] [--profile <name>] <command>
|
|||
子命令:
|
||||
|
||||
- `channels list`:显示已配置的渠道和认证配置。
|
||||
- `channels status`:检查 Gateway 可达性和渠道健康状态(`--probe` 运行额外检查;使用 `openclaw health` 或 `openclaw status --deep` 进行 Gateway 健康探测)。
|
||||
- `channels status`:检查 Gateway网关可达性和渠道健康状态(`--probe` 运行额外检查;使用 `openclaw health` 或 `openclaw status --deep` 进行 Gateway网关健康探测)。
|
||||
- 提示:`channels status` 在检测到常见配置错误时会打印警告并提供修复建议(然后引导你使用 `openclaw doctor`)。
|
||||
- `channels logs`:显示来自 Gateway 日志文件的最近渠道日志。
|
||||
- `channels logs`:显示来自 Gateway网关日志文件的最近渠道日志。
|
||||
- `channels add`:不传参数时以向导模式设置;传入参数则切换为非交互模式。
|
||||
- `channels remove`:默认仅禁用;传入 `--delete` 可无提示删除配置条目。
|
||||
- `channels login`:交互式渠道登录(仅限 WhatsApp Web)。
|
||||
|
|
@ -428,21 +428,21 @@ openclaw status --deep
|
|||
|
||||
### `skills`
|
||||
|
||||
列出和检查可用技能及就绪信息。
|
||||
列出和检查可用 Skills 及就绪信息。
|
||||
|
||||
子命令:
|
||||
|
||||
- `skills list`:列出技能(无子命令时的默认行为)。
|
||||
- `skills info <name>`:显示某个技能的详情。
|
||||
- `skills list`:列出 Skills(无子命令时的默认行为)。
|
||||
- `skills info <name>`:显示某个 Skills 的详情。
|
||||
- `skills check`:就绪与缺失需求的摘要。
|
||||
|
||||
选项:
|
||||
|
||||
- `--eligible`:仅显示就绪的技能。
|
||||
- `--eligible`:仅显示就绪的 Skills。
|
||||
- `--json`:输出 JSON(无样式)。
|
||||
- `-v`、`--verbose`:包含缺失需求的详情。
|
||||
|
||||
提示:使用 `npx clawhub` 搜索、安装和同步技能。
|
||||
提示:使用 `npx clawhub` 搜索、安装和同步 Skills。
|
||||
|
||||
### `pairing`
|
||||
|
||||
|
|
@ -497,7 +497,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `agent`
|
||||
|
||||
通过 Gateway(或 `--local` 嵌入模式)运行一个智能体回合。
|
||||
通过 Gateway网关(或 `--local` 嵌入模式)运行一个智能体回合。
|
||||
|
||||
必需:
|
||||
|
||||
|
|
@ -554,7 +554,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `acp`
|
||||
|
||||
运行将 IDE 连接到 Gateway 的 ACP 桥接。
|
||||
运行将 IDE 连接到 Gateway网关的 ACP 桥接。
|
||||
|
||||
参见 [`acp`](/cli/acp) 获取完整选项和示例。
|
||||
|
||||
|
|
@ -574,7 +574,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
说明:
|
||||
|
||||
- 概览在可用时包含 Gateway + 节点主机服务状态。
|
||||
- 概览在可用时包含 Gateway网关 + 节点主机服务状态。
|
||||
|
||||
### 用量追踪
|
||||
|
||||
|
|
@ -595,7 +595,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `health`
|
||||
|
||||
从运行中的 Gateway 获取健康状态。
|
||||
从运行中的 Gateway网关获取健康状态。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -633,7 +633,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `uninstall`
|
||||
|
||||
卸载 Gateway 服务和本地数据(CLI 保留)。
|
||||
卸载 Gateway网关服务和本地数据(CLI 保留)。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -650,11 +650,11 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
- `--non-interactive` 需要 `--yes` 和明确的范围(或 `--all`)。
|
||||
|
||||
## Gateway
|
||||
## Gateway网关
|
||||
|
||||
### `gateway`
|
||||
|
||||
运行 WebSocket Gateway。
|
||||
运行 WebSocket Gateway网关。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -678,11 +678,11 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `gateway service`
|
||||
|
||||
管理 Gateway 服务(launchd/systemd/schtasks)。
|
||||
管理 Gateway网关服务(launchd/systemd/schtasks)。
|
||||
|
||||
子命令:
|
||||
|
||||
- `gateway status`(默认探测 Gateway RPC)
|
||||
- `gateway status`(默认探测 Gateway网关 RPC)
|
||||
- `gateway install`(服务安装)
|
||||
- `gateway uninstall`
|
||||
- `gateway start`
|
||||
|
|
@ -691,9 +691,9 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
说明:
|
||||
|
||||
- `gateway status` 默认使用服务解析的端口/配置探测 Gateway RPC(可通过 `--url/--token/--password` 覆盖)。
|
||||
- `gateway status` 默认使用服务解析的端口/配置探测 Gateway网关 RPC(可通过 `--url/--token/--password` 覆盖)。
|
||||
- `gateway status` 支持 `--no-probe`、`--deep` 和 `--json` 用于脚本编写。
|
||||
- `gateway status` 还会在检测到旧版或额外的 Gateway 服务时展示(`--deep` 添加系统级扫描)。以配置文件命名的 OpenClaw 服务被视为正式服务,不会被标记为"额外"。
|
||||
- `gateway status` 还会在检测到旧版或额外的 Gateway网关服务时展示(`--deep` 添加系统级扫描)。以配置文件命名的 OpenClaw 服务被视为正式服务,不会被标记为"额外"。
|
||||
- `gateway status` 会打印 CLI 使用的配置路径与服务可能使用的配置(服务环境变量),以及解析后的探测目标 URL。
|
||||
- `gateway install|uninstall|start|stop|restart` 支持 `--json` 用于脚本编写(默认输出保持人类可读)。
|
||||
- `gateway install` 默认使用 Node 运行时;**不建议**使用 bun(WhatsApp/Telegram 存在 bug)。
|
||||
|
|
@ -701,7 +701,7 @@ Gmail Pub/Sub 钩子设置与运行。参见 [/automation/gmail-pubsub](/automat
|
|||
|
||||
### `logs`
|
||||
|
||||
通过 RPC 追踪 Gateway 文件日志。
|
||||
通过 RPC 追踪 Gateway网关文件日志。
|
||||
|
||||
说明:
|
||||
|
||||
|
|
@ -720,7 +720,7 @@ openclaw logs --no-color
|
|||
|
||||
### `gateway <subcommand>`
|
||||
|
||||
Gateway CLI 辅助工具(RPC 子命令使用 `--url`、`--token`、`--password`、`--timeout`、`--expect-final`)。
|
||||
Gateway网关 CLI 辅助工具(RPC 子命令使用 `--url`、`--token`、`--password`、`--timeout`、`--expect-final`)。
|
||||
|
||||
子命令:
|
||||
|
||||
|
|
@ -859,7 +859,7 @@ openclaw models status
|
|||
|
||||
### `system event`
|
||||
|
||||
入队系统事件并可选触发心跳(Gateway RPC)。
|
||||
入队系统事件并可选触发心跳(Gateway网关 RPC)。
|
||||
|
||||
必需:
|
||||
|
||||
|
|
@ -873,7 +873,7 @@ openclaw models status
|
|||
|
||||
### `system heartbeat last|enable|disable`
|
||||
|
||||
心跳控制(Gateway RPC)。
|
||||
心跳控制(Gateway网关 RPC)。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -882,7 +882,7 @@ openclaw models status
|
|||
|
||||
### `system presence`
|
||||
|
||||
列出系统存在条目(Gateway RPC)。
|
||||
列出系统存在条目(Gateway网关 RPC)。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
@ -891,7 +891,7 @@ openclaw models status
|
|||
|
||||
## 定时任务
|
||||
|
||||
管理调度作业(Gateway RPC)。参见 [/automation/cron-jobs](/automation/cron-jobs)。
|
||||
管理调度作业(Gateway网关 RPC)。参见 [/automation/cron-jobs](/automation/cron-jobs)。
|
||||
|
||||
子命令:
|
||||
|
||||
|
|
@ -922,7 +922,7 @@ openclaw models status
|
|||
|
||||
## 节点
|
||||
|
||||
`nodes` 与 Gateway 通信并操作已配对的节点。参见 [/nodes](/nodes)。
|
||||
`nodes` 与 Gateway网关通信并操作已配对的节点。参见 [/nodes](/nodes)。
|
||||
|
||||
通用选项:
|
||||
|
||||
|
|
@ -1018,7 +1018,7 @@ openclaw models status
|
|||
|
||||
### `tui`
|
||||
|
||||
打开连接到 Gateway 的终端 UI。
|
||||
打开连接到 Gateway网关的终端 UI。
|
||||
|
||||
选项:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 需要远程查看 Gateway 日志(无需 SSH)
|
||||
- 需要远程查看 Gateway网关日志(无需 SSH)
|
||||
- 需要 JSON 格式的日志行以供工具使用
|
||||
summary: 通过 RPC 查看 Gateway 日志的 `openclaw logs` CLI 参考
|
||||
summary: 通过 RPC 查看 Gateway网关日志的 `openclaw logs` CLI 参考
|
||||
title: logs
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:08Z"
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw logs`
|
||||
|
||||
通过 RPC 实时查看 Gateway 文件日志(支持远程模式)。
|
||||
通过 RPC 实时查看 Gateway网关文件日志(支持远程模式)。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想要索引或搜索语义记忆
|
||||
- 您正在调试记忆可用性或索引问题
|
||||
- 你想要索引或搜索语义记忆
|
||||
- 你正在调试记忆可用性或索引问题
|
||||
summary: "`openclaw memory`(status/index/search)的 CLI 参考"
|
||||
title: memory
|
||||
x-i18n:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想更改默认模型或查看提供商认证状态
|
||||
- 您想扫描可用的模型/提供商并调试认证配置
|
||||
- 你想更改默认模型或查看提供商认证状态
|
||||
- 你想扫描可用的模型/提供商并调试认证配置
|
||||
summary: "`openclaw models` 的 CLI 参考(status/list/set/scan、别名、回退、认证)"
|
||||
title: models
|
||||
x-i18n:
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw node`
|
||||
|
||||
运行一个**无头节点主机**,连接到 Gateway WebSocket 并在本机上暴露
|
||||
运行一个**无头节点主机**,连接到 Gateway网关 WebSocket 并在本机上暴露
|
||||
`system.run` / `system.which`。
|
||||
|
||||
## 为什么使用节点主机?
|
||||
|
|
@ -25,7 +25,7 @@ x-i18n:
|
|||
常见用例:
|
||||
|
||||
- 在远程 Linux/Windows 机器上运行命令(构建服务器、实验室机器、NAS)。
|
||||
- 在 Gateway 上保持执行**沙箱化**,但将已批准的运行委派给其他主机。
|
||||
- 在 Gateway网关上保持执行**沙箱隔离**,但将已批准的运行委派给其他主机。
|
||||
- 为自动化或 CI 节点提供轻量级、无头的执行目标。
|
||||
|
||||
执行仍受**执行审批**和节点主机上的按智能体白名单保护,因此你可以保持命令访问的范围明确可控。
|
||||
|
|
@ -54,9 +54,9 @@ openclaw node run --host <gateway-host> --port 18789
|
|||
|
||||
选项:
|
||||
|
||||
- `--host <host>`:Gateway WebSocket 主机(默认:`127.0.0.1`)
|
||||
- `--port <port>`:Gateway WebSocket 端口(默认:`18789`)
|
||||
- `--tls`:为 Gateway 连接使用 TLS
|
||||
- `--host <host>`:Gateway网关 WebSocket 主机(默认:`127.0.0.1`)
|
||||
- `--port <port>`:Gateway网关 WebSocket 端口(默认:`18789`)
|
||||
- `--tls`:为 Gateway网关连接使用 TLS
|
||||
- `--tls-fingerprint <sha256>`:预期的 TLS 证书指纹(sha256)
|
||||
- `--node-id <id>`:覆盖节点 ID(清除配对令牌)
|
||||
- `--display-name <name>`:覆盖节点显示名称
|
||||
|
|
@ -71,9 +71,9 @@ openclaw node install --host <gateway-host> --port 18789
|
|||
|
||||
选项:
|
||||
|
||||
- `--host <host>`:Gateway WebSocket 主机(默认:`127.0.0.1`)
|
||||
- `--port <port>`:Gateway WebSocket 端口(默认:`18789`)
|
||||
- `--tls`:为 Gateway 连接使用 TLS
|
||||
- `--host <host>`:Gateway网关 WebSocket 主机(默认:`127.0.0.1`)
|
||||
- `--port <port>`:Gateway网关 WebSocket 端口(默认:`18789`)
|
||||
- `--tls`:为 Gateway网关连接使用 TLS
|
||||
- `--tls-fingerprint <sha256>`:预期的 TLS 证书指纹(sha256)
|
||||
- `--node-id <id>`:覆盖节点 ID(清除配对令牌)
|
||||
- `--display-name <name>`:覆盖节点显示名称
|
||||
|
|
@ -95,7 +95,7 @@ openclaw node uninstall
|
|||
|
||||
## 配对
|
||||
|
||||
首次连接会在 Gateway 上创建一个待处理的节点配对请求。
|
||||
首次连接会在 Gateway网关上创建一个待处理的节点配对请求。
|
||||
通过以下方式批准:
|
||||
|
||||
```bash
|
||||
|
|
@ -103,7 +103,7 @@ openclaw nodes pending
|
|||
openclaw nodes approve <requestId>
|
||||
```
|
||||
|
||||
节点主机将其节点 ID、令牌、显示名称和 Gateway 连接信息存储在
|
||||
节点主机将其节点 ID、令牌、显示名称和 Gateway网关连接信息存储在
|
||||
`~/.openclaw/node.json` 中。
|
||||
|
||||
## 执行审批
|
||||
|
|
@ -112,4 +112,4 @@ openclaw nodes approve <requestId>
|
|||
|
||||
- `~/.openclaw/exec-approvals.json`
|
||||
- [执行审批](/tools/exec-approvals)
|
||||
- `openclaw approvals --node <id|name|ip>`(从 Gateway 编辑)
|
||||
- `openclaw approvals --node <id|name|ip>`(从 Gateway网关编辑)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想要通过引导式设置配置 Gateway、工作区、认证、渠道和技能
|
||||
summary: "`openclaw onboard`(交互式上手引导向导)的 CLI 参考"
|
||||
- 你想要通过引导式设置配置 Gateway网关、工作区、认证、渠道和 Skills
|
||||
summary: "`openclaw onboard`(交互式新手引导向导)的 CLI 参考"
|
||||
title: onboard
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:15Z"
|
||||
|
|
@ -14,11 +14,11 @@ x-i18n:
|
|||
|
||||
# `openclaw onboard`
|
||||
|
||||
交互式上手引导向导(本地或远程 Gateway 设置)。
|
||||
交互式新手引导向导(本地或远程 Gateway网关设置)。
|
||||
|
||||
相关内容:
|
||||
|
||||
- 向导指南:[上手引导](/start/onboarding)
|
||||
- 向导指南:[新手引导](/start/onboarding)
|
||||
|
||||
## 示例
|
||||
|
||||
|
|
@ -31,6 +31,6 @@ openclaw onboard --mode remote --remote-url ws://gateway-host:18789
|
|||
|
||||
流程说明:
|
||||
|
||||
- `quickstart`:最少提示,自动生成 Gateway 令牌。
|
||||
- `quickstart`:最少提示,自动生成 Gateway网关令牌。
|
||||
- `manual`:完整的端口/绑定/认证提示(`advanced` 的别名)。
|
||||
- 最快开始聊天的方式:`openclaw dashboard`(控制台 UI,无需渠道设置)。
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
read_when:
|
||||
- 您正在使用配对模式的私信功能,需要批准发送者
|
||||
- 你正在使用配对模式的私信功能,需要批准发送者
|
||||
summary: "`openclaw pairing`(批准/列出配对请求)的 CLI 参考"
|
||||
title: pairing
|
||||
x-i18n:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想安装或管理进程内 Gateway 插件
|
||||
- 您想调试插件加载失败问题
|
||||
- 你想安装或管理进程内 Gateway网关插件
|
||||
- 你想调试插件加载失败问题
|
||||
summary: "`openclaw plugins` 的 CLI 参考(list、install、enable/disable、doctor)"
|
||||
title: plugins
|
||||
x-i18n:
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw plugins`
|
||||
|
||||
管理 Gateway 插件/扩展(进程内加载)。
|
||||
管理 Gateway网关插件/扩展(进程内加载)。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
read_when: 您正在管理沙箱容器或调试沙箱/工具策略行为。
|
||||
read_when: 你正在管理沙箱容器或调试沙箱/工具策略行为。
|
||||
status: active
|
||||
summary: 管理沙箱容器并检查生效的沙箱策略
|
||||
title: Sandbox CLI
|
||||
|
|
@ -18,7 +18,7 @@ x-i18n:
|
|||
|
||||
## 概述
|
||||
|
||||
OpenClaw 可以在隔离的 Docker 容器中运行智能体以确保安全性。`sandbox` 命令帮助您管理这些容器,尤其是在更新或配置变更之后。
|
||||
OpenClaw 可以在隔离的 Docker 容器中运行智能体以确保安全性。`sandbox` 命令帮助你管理这些容器,尤其是在更新或配置变更之后。
|
||||
|
||||
## 命令
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ openclaw sandbox recreate --agent alfred
|
|||
|
||||
## 为什么需要这样做?
|
||||
|
||||
**问题:** 当您更新沙箱 Docker 镜像或配置时:
|
||||
**问题:** 当你更新沙箱 Docker 镜像或配置时:
|
||||
|
||||
- 现有容器会继续使用旧设置运行
|
||||
- 容器仅在空闲 24 小时后才会被清理
|
||||
|
|
@ -123,7 +123,7 @@ openclaw sandbox recreate --agent alfred
|
|||
|
||||
**解决方案:** 使用 `openclaw sandbox recreate` 强制移除旧容器。它们会在下次需要时自动使用当前设置重新创建。
|
||||
|
||||
提示:建议使用 `openclaw sandbox recreate` 而非手动执行 `docker rm`。它使用 Gateway 的容器命名规则,避免在作用域/会话键发生变化时出现不匹配问题。
|
||||
提示:建议使用 `openclaw sandbox recreate` 而非手动执行 `docker rm`。它使用 Gateway网关的容器命名规则,避免在作用域/会话键发生变化时出现不匹配问题。
|
||||
|
||||
## 配置
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您在不使用完整上手引导向导的情况下进行首次设置
|
||||
- 您想设置默认工作区路径
|
||||
- 你在不使用完整新手引导向导的情况下进行首次设置
|
||||
- 你想设置默认工作区路径
|
||||
summary: "`openclaw setup` 的 CLI 参考(初始化配置 + 工作区)"
|
||||
title: setup
|
||||
x-i18n:
|
||||
|
|
@ -20,7 +20,7 @@ x-i18n:
|
|||
相关内容:
|
||||
|
||||
- 快速开始:[快速开始](/start/getting-started)
|
||||
- 向导:[上手引导](/start/onboarding)
|
||||
- 向导:[新手引导](/start/onboarding)
|
||||
|
||||
## 示例
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 想要查看哪些技能可用且可以运行
|
||||
- 想要调试技能缺失的二进制文件/环境变量/配置
|
||||
summary: 技能列表/信息/检查及技能资格的 `openclaw skills` CLI 参考
|
||||
- 想要查看哪些 Skills 可用且可以运行
|
||||
- 想要调试 Skills 缺失的二进制文件/环境变量/配置
|
||||
summary: Skills 列表/信息/检查及 Skills 资格的 `openclaw skills` CLI 参考
|
||||
title: skills
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:28Z"
|
||||
|
|
@ -15,12 +15,12 @@ x-i18n:
|
|||
|
||||
# `openclaw skills`
|
||||
|
||||
检查技能(内置 + 工作区 + 托管覆盖),查看哪些符合条件以及哪些缺少依赖。
|
||||
检查 Skills(内置 + 工作区 + 托管覆盖),查看哪些符合条件以及哪些缺少依赖。
|
||||
|
||||
相关内容:
|
||||
|
||||
- 技能系统:[技能](/tools/skills)
|
||||
- 技能配置:[技能配置](/tools/skills-config)
|
||||
- Skills 系统:[Skills](/tools/skills)
|
||||
- Skills配置:[Skills配置](/tools/skills-config)
|
||||
- ClawHub 安装:[ClawHub](/tools/clawhub)
|
||||
|
||||
## 命令
|
||||
|
|
|
|||
|
|
@ -28,6 +28,6 @@ openclaw status --usage
|
|||
|
||||
- `--deep` 会运行实时探测(WhatsApp Web + Telegram + Discord + Google Chat + Slack + Signal)。
|
||||
- 当配置了多个智能体时,输出包含每个智能体的会话存储。
|
||||
- 概览包含 Gateway 和节点主机服务的安装/运行状态(如可用)。
|
||||
- 概览包含 Gateway网关和节点主机服务的安装/运行状态(如可用)。
|
||||
- 概览包含更新渠道和 git SHA(适用于源码检出)。
|
||||
- 更新信息会显示在概览中;如果有可用更新,状态会提示运行 `openclaw update`(参见[更新](/install/updating))。
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想在不创建 cron 任务的情况下将系统事件加入队列
|
||||
- 您需要启用或禁用心跳
|
||||
- 您想检查系统存在状态条目
|
||||
- 你想在不创建 cron 任务的情况下将系统事件加入队列
|
||||
- 你需要启用或禁用心跳
|
||||
- 你想检查系统存在状态条目
|
||||
summary: "`openclaw system` 的 CLI 参考(系统事件、心跳、存在状态)"
|
||||
title: system
|
||||
x-i18n:
|
||||
|
|
@ -16,7 +16,7 @@ x-i18n:
|
|||
|
||||
# `openclaw system`
|
||||
|
||||
Gateway 的系统级辅助工具:将系统事件加入队列、控制心跳以及查看存在状态。
|
||||
Gateway网关的系统级辅助工具:将系统事件加入队列、控制心跳以及查看存在状态。
|
||||
|
||||
## 常用命令
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ openclaw system presence
|
|||
|
||||
## `system presence`
|
||||
|
||||
列出 Gateway 已知的当前系统存在状态条目(节点、实例及类似状态行)。
|
||||
列出 Gateway网关已知的当前系统存在状态条目(节点、实例及类似状态行)。
|
||||
|
||||
标志:
|
||||
|
||||
|
|
@ -59,5 +59,5 @@ openclaw system presence
|
|||
|
||||
## 注意事项
|
||||
|
||||
- 需要当前配置(本地或远程)可访问的运行中 Gateway。
|
||||
- 需要当前配置(本地或远程)可访问的运行中 Gateway网关。
|
||||
- 系统事件是临时的,不会在重启后持久化。
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 想要使用 Gateway 的终端 UI(支持远程)
|
||||
- 想要使用 Gateway网关的终端 UI(支持远程)
|
||||
- 想要从脚本传递 url/token/session
|
||||
summary: 连接到 Gateway 的终端 UI 的 `openclaw tui` CLI 参考
|
||||
summary: 连接到 Gateway网关的终端 UI 的 `openclaw tui` CLI 参考
|
||||
title: tui
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:31Z"
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw tui`
|
||||
|
||||
打开连接到 Gateway 的终端 UI。
|
||||
打开连接到 Gateway网关的终端 UI。
|
||||
|
||||
相关内容:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想移除 Gateway 服务和/或本地状态
|
||||
- 您想先进行试运行
|
||||
summary: "`openclaw uninstall`(移除 Gateway 服务 + 本地数据)的 CLI 参考"
|
||||
- 你想移除 Gateway网关服务和/或本地状态
|
||||
- 你想先进行试运行
|
||||
summary: "`openclaw uninstall`(移除 Gateway网关服务 + 本地数据)的 CLI 参考"
|
||||
title: uninstall
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:33Z"
|
||||
|
|
@ -15,7 +15,7 @@ x-i18n:
|
|||
|
||||
# `openclaw uninstall`
|
||||
|
||||
卸载 Gateway 服务 + 本地数据(CLI 保留)。
|
||||
卸载 Gateway网关服务 + 本地数据(CLI 保留)。
|
||||
|
||||
```bash
|
||||
openclaw uninstall
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
read_when:
|
||||
- 你想安全地更新源码检出
|
||||
- 你需要了解 `--update` 简写行为
|
||||
summary: "`openclaw update`(安全的源码更新 + Gateway 自动重启)的 CLI 参考"
|
||||
summary: "`openclaw update`(安全的源码更新 + Gateway网关自动重启)的 CLI 参考"
|
||||
title: update
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:21:45Z"
|
||||
|
|
@ -35,7 +35,7 @@ openclaw --update
|
|||
|
||||
## 选项
|
||||
|
||||
- `--no-restart`:成功更新后跳过重启 Gateway 服务。
|
||||
- `--no-restart`:成功更新后跳过重启 Gateway网关服务。
|
||||
- `--channel <stable|beta|dev>`:设置更新渠道(git + npm;持久化到配置中)。
|
||||
- `--tag <dist-tag|version>`:仅为本次更新覆盖 npm dist-tag 或版本。
|
||||
- `--json`:输出机器可读的 `UpdateRunResult` JSON。
|
||||
|
|
@ -60,7 +60,7 @@ openclaw update status --timeout 10
|
|||
|
||||
## `update wizard`
|
||||
|
||||
交互式流程,用于选择更新渠道并确认更新后是否重启 Gateway(默认重启)。如果你选择 `dev` 但没有 git 检出,它会提供创建一个的选项。
|
||||
交互式流程,用于选择更新渠道并确认更新后是否重启 Gateway网关(默认重启)。如果你选择 `dev` 但没有 git 检出,它会提供创建一个的选项。
|
||||
|
||||
## 工作原理
|
||||
|
||||
|
|
|
|||
|
|
@ -38,4 +38,4 @@ openclaw voicecall expose --mode funnel
|
|||
openclaw voicecall unexpose
|
||||
```
|
||||
|
||||
安全提示:仅将 webhook 端点暴露给您信任的网络。尽可能优先使用 Tailscale Serve 而非 Funnel。
|
||||
安全提示:仅将 webhook 端点暴露给你信任的网络。尽可能优先使用 Tailscale Serve 而非 Funnel。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想将 Gmail Pub/Sub 事件接入 OpenClaw
|
||||
- 您需要 Webhook 辅助命令
|
||||
- 你想将 Gmail Pub/Sub 事件接入 OpenClaw
|
||||
- 你需要 Webhook 辅助命令
|
||||
summary: "`openclaw webhooks`(Webhook 辅助工具 + Gmail Pub/Sub)的 CLI 参考"
|
||||
title: webhooks
|
||||
x-i18n:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
read_when:
|
||||
- 您需要智能体循环或生命周期事件的详细说明
|
||||
- 你需要智能体循环或生命周期事件的详细说明
|
||||
summary: 智能体循环生命周期、流和等待语义
|
||||
title: 智能体循环
|
||||
x-i18n:
|
||||
|
|
@ -21,7 +21,7 @@ x-i18n:
|
|||
|
||||
## 入口点
|
||||
|
||||
- Gateway RPC:`agent` 和 `agent.wait`。
|
||||
- Gateway网关 RPC:`agent` 和 `agent.wait`。
|
||||
- CLI:`agent` 命令。
|
||||
|
||||
## 工作原理(高层概述)
|
||||
|
|
@ -29,7 +29,7 @@ x-i18n:
|
|||
1. `agent` RPC 验证参数,解析会话(sessionKey/sessionId),持久化会话元数据,立即返回 `{ runId, acceptedAt }`。
|
||||
2. `agentCommand` 运行智能体:
|
||||
- 解析模型 + thinking/verbose 默认值
|
||||
- 加载技能快照
|
||||
- 加载 Skills 快照
|
||||
- 调用 `runEmbeddedPiAgent`(pi-agent-core 运行时)
|
||||
- 如果嵌入式循环未发出**生命周期 end/error** 事件,则补充发出
|
||||
3. `runEmbeddedPiAgent`:
|
||||
|
|
@ -56,13 +56,13 @@ x-i18n:
|
|||
## 会话 + 工作区准备
|
||||
|
||||
- 工作区被解析并创建;沙箱运行可能会重定向到沙箱工作区根目录。
|
||||
- 技能被加载(或从快照中复用)并注入到环境和提示中。
|
||||
- Skills 被加载(或从快照中复用)并注入到环境和提示中。
|
||||
- 引导/上下文文件被解析并注入到系统提示报告中。
|
||||
- 获取会话写锁;在流式传输之前打开并准备 `SessionManager`。
|
||||
|
||||
## 提示组装 + 系统提示
|
||||
|
||||
- 系统提示由 OpenClaw 的基础提示、技能提示、引导上下文和每次运行的覆盖项构建而成。
|
||||
- 系统提示由 OpenClaw 的基础提示、Skills 提示、引导上下文和每次运行的覆盖项构建而成。
|
||||
- 强制执行模型特定的限制和压缩预留令牌数。
|
||||
- 参见[系统提示](/concepts/system-prompt)了解模型所看到的内容。
|
||||
|
||||
|
|
@ -70,10 +70,10 @@ x-i18n:
|
|||
|
||||
OpenClaw 有两个钩子系统:
|
||||
|
||||
- **内部钩子**(Gateway 钩子):用于命令和生命周期事件的事件驱动脚本。
|
||||
- **插件钩子**:智能体/工具生命周期和 Gateway 管道中的扩展点。
|
||||
- **内部钩子**(Gateway网关钩子):用于命令和生命周期事件的事件驱动脚本。
|
||||
- **插件钩子**:智能体/工具生命周期和 Gateway网关管道中的扩展点。
|
||||
|
||||
### 内部钩子(Gateway 钩子)
|
||||
### 内部钩子(Gateway网关钩子)
|
||||
|
||||
- **`agent:bootstrap`**:在系统提示最终确定之前构建引导文件时运行。
|
||||
用于添加/移除引导上下文文件。
|
||||
|
|
@ -81,9 +81,9 @@ OpenClaw 有两个钩子系统:
|
|||
|
||||
参见[钩子](/hooks)了解设置和示例。
|
||||
|
||||
### 插件钩子(智能体 + Gateway 生命周期)
|
||||
### 插件钩子(智能体 + Gateway网关生命周期)
|
||||
|
||||
这些在智能体循环或 Gateway 管道内运行:
|
||||
这些在智能体循环或 Gateway网关管道内运行:
|
||||
|
||||
- **`before_agent_start`**:在运行开始前注入上下文或覆盖系统提示。
|
||||
- **`agent_end`**:在完成后检查最终消息列表和运行元数据。
|
||||
|
|
@ -92,7 +92,7 @@ OpenClaw 有两个钩子系统:
|
|||
- **`tool_result_persist`**:在工具结果写入会话记录之前同步转换工具结果。
|
||||
- **`message_received` / `message_sending` / `message_sent`**:入站 + 出站消息钩子。
|
||||
- **`session_start` / `session_end`**:会话生命周期边界。
|
||||
- **`gateway_start` / `gateway_stop`**:Gateway 生命周期事件。
|
||||
- **`gateway_start` / `gateway_stop`**:Gateway网关生命周期事件。
|
||||
|
||||
参见[插件](/plugin#plugin-hooks)了解钩子 API 和注册详情。
|
||||
|
||||
|
|
@ -146,5 +146,5 @@ OpenClaw 有两个钩子系统:
|
|||
|
||||
- 智能体超时(中止)
|
||||
- AbortSignal(取消)
|
||||
- Gateway 断开连接或 RPC 超时
|
||||
- Gateway网关断开连接或 RPC 超时
|
||||
- `agent.wait` 超时(仅等待阶段,不会停止智能体)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您需要解释智能体工作区或其文件布局
|
||||
- 您想要备份或迁移智能体工作区
|
||||
- 你需要解释智能体工作区或其文件布局
|
||||
- 你想要备份或迁移智能体工作区
|
||||
summary: 智能体工作区:位置、布局和备份策略
|
||||
title: 智能体工作区
|
||||
x-i18n:
|
||||
|
|
@ -19,7 +19,7 @@ x-i18n:
|
|||
|
||||
它与 `~/.openclaw/` 是分开的,后者存储配置、凭据和会话。
|
||||
|
||||
**重要提示:** 工作区是**默认工作目录**,而非硬性沙箱。工具会基于工作区解析相对路径,但绝对路径仍然可以访问主机上的其他位置,除非启用了沙箱。如果您需要隔离,请使用 [`agents.defaults.sandbox`](/gateway/sandboxing)(和/或按智能体的沙箱配置)。当启用沙箱且 `workspaceAccess` 不是 `"rw"` 时,工具在 `~/.openclaw/sandboxes` 下的沙箱工作区中运行,而非您的主机工作区。
|
||||
**重要提示:** 工作区是**默认工作目录**,而非硬性沙箱。工具会基于工作区解析相对路径,但绝对路径仍然可以访问主机上的其他位置,除非启用了沙箱。如果你需要隔离,请使用 [`agents.defaults.sandbox`](/gateway/sandboxing)(和/或按智能体的沙箱配置)。当启用沙箱且 `workspaceAccess` 不是 `"rw"` 时,工具在 `~/.openclaw/sandboxes` 下的沙箱工作区中运行,而非你的主机工作区。
|
||||
|
||||
## 默认位置
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ x-i18n:
|
|||
|
||||
`openclaw onboard`、`openclaw configure` 或 `openclaw setup` 将创建工作区,并在引导文件缺失时生成它们。
|
||||
|
||||
如果您已经自行管理工作区文件,可以禁用引导文件创建:
|
||||
如果你已经自行管理工作区文件,可以禁用引导文件创建:
|
||||
|
||||
```json5
|
||||
{ agent: { skipBootstrap: true } }
|
||||
|
|
@ -48,7 +48,7 @@ x-i18n:
|
|||
|
||||
较旧的安装可能创建了 `~/openclaw`。保留多个工作区目录可能会导致认证或状态不一致的困惑,因为同一时间只有一个工作区处于活跃状态。
|
||||
|
||||
**建议:** 保持单一活跃工作区。如果您不再使用额外的文件夹,请将其归档或移至回收站(例如 `trash ~/openclaw`)。如果您有意保留多个工作区,请确保 `agents.defaults.workspace` 指向活跃的那个。
|
||||
**建议:** 保持单一活跃工作区。如果你不再使用额外的文件夹,请将其归档或移至回收站(例如 `trash ~/openclaw`)。如果你有意保留多个工作区,请确保 `agents.defaults.workspace` 指向活跃的那个。
|
||||
|
||||
`openclaw doctor` 在检测到额外工作区目录时会发出警告。
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ x-i18n:
|
|||
- 保持简短以避免消耗令牌。
|
||||
|
||||
- `BOOT.md`
|
||||
- 可选的启动清单,在启用内部钩子时于 Gateway 重启时执行。
|
||||
- 可选的启动清单,在启用内部钩子时于 Gateway网关重启时执行。
|
||||
- 保持简短;使用消息工具进行外发。
|
||||
|
||||
- `BOOTSTRAP.md`
|
||||
|
|
@ -101,8 +101,8 @@ x-i18n:
|
|||
参见[记忆](/concepts/memory)了解工作流程和自动记忆刷写。
|
||||
|
||||
- `skills/`(可选)
|
||||
- 工作区特定的技能。
|
||||
- 名称冲突时覆盖托管/内置技能。
|
||||
- 工作区特定的 Skills。
|
||||
- 名称冲突时覆盖托管/内置 Skills。
|
||||
|
||||
- `canvas/`(可选)
|
||||
- 用于节点显示的 Canvas UI 文件(例如 `canvas/index.html`)。
|
||||
|
|
@ -116,15 +116,15 @@ x-i18n:
|
|||
- `~/.openclaw/openclaw.json`(配置)
|
||||
- `~/.openclaw/credentials/`(OAuth 令牌、API 密钥)
|
||||
- `~/.openclaw/agents/<agentId>/sessions/`(会话记录和元数据)
|
||||
- `~/.openclaw/skills/`(托管技能)
|
||||
- `~/.openclaw/skills/`(托管 Skills)
|
||||
|
||||
如果您需要迁移会话或配置,请单独复制它们并将其排除在版本控制之外。
|
||||
如果你需要迁移会话或配置,请单独复制它们并将其排除在版本控制之外。
|
||||
|
||||
## Git 备份(推荐,私有)
|
||||
|
||||
将工作区视为私有记忆。将其放入一个**私有** git 仓库中,以便备份和恢复。
|
||||
|
||||
在 Gateway 运行的机器上执行以下步骤(工作区就在那里)。
|
||||
在 Gateway网关运行的机器上执行以下步骤(工作区就在那里)。
|
||||
|
||||
### 1) 初始化仓库
|
||||
|
||||
|
|
@ -189,7 +189,7 @@ git push
|
|||
- `~/.openclaw/` 下的任何内容。
|
||||
- 聊天记录的原始转储或敏感附件。
|
||||
|
||||
如果您必须存储敏感引用,请使用占位符并将真实密钥保存在其他地方(密码管理器、环境变量或 `~/.openclaw/`)。
|
||||
如果你必须存储敏感引用,请使用占位符并将真实密钥保存在其他地方(密码管理器、环境变量或 `~/.openclaw/`)。
|
||||
|
||||
建议的 `.gitignore` 起始内容:
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ git push
|
|||
1. 将仓库克隆到目标路径(默认 `~/.openclaw/workspace`)。
|
||||
2. 在 `~/.openclaw/openclaw.json` 中将 `agents.defaults.workspace` 设置为该路径。
|
||||
3. 运行 `openclaw setup --workspace <path>` 以生成任何缺失的文件。
|
||||
4. 如果您需要会话记录,请从旧机器单独复制 `~/.openclaw/agents/<agentId>/sessions/`。
|
||||
4. 如果你需要会话记录,请从旧机器单独复制 `~/.openclaw/agents/<agentId>/sessions/`。
|
||||
|
||||
## 高级说明
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ OpenClaw 使用单一智能体工作区目录(`agents.defaults.workspace`)
|
|||
|
||||
完整的工作区布局 + 备份指南:[智能体工作区](/concepts/agent-workspace)
|
||||
|
||||
如果启用了 `agents.defaults.sandbox`,非主会话可以使用 `agents.defaults.sandbox.workspaceRoot` 下的按会话工作区覆盖此设置(参见 [Gateway 配置](/gateway/configuration))。
|
||||
如果启用了 `agents.defaults.sandbox`,非主会话可以使用 `agents.defaults.sandbox.workspaceRoot` 下的按会话工作区覆盖此设置(参见 [Gateway网关配置](/gateway/configuration))。
|
||||
|
||||
## 引导文件(注入)
|
||||
|
||||
|
|
@ -43,7 +43,7 @@ OpenClaw 使用单一智能体工作区目录(`agents.defaults.workspace`)
|
|||
|
||||
如果文件缺失,OpenClaw 会注入一行"文件缺失"标记(`openclaw setup` 会创建安全的默认模板)。
|
||||
|
||||
`BOOTSTRAP.md` 仅在**全新工作区**(没有其他引导文件存在)时创建。如果您在完成仪式后删除了它,后续重启时不会重新创建。
|
||||
`BOOTSTRAP.md` 仅在**全新工作区**(没有其他引导文件存在)时创建。如果你在完成仪式后删除了它,后续重启时不会重新创建。
|
||||
|
||||
要完全禁用引导文件创建(用于预填充的工作区),请设置:
|
||||
|
||||
|
|
@ -53,17 +53,17 @@ OpenClaw 使用单一智能体工作区目录(`agents.defaults.workspace`)
|
|||
|
||||
## 内置工具
|
||||
|
||||
核心工具(read/exec/edit/write 及相关系统工具)始终可用,受工具策略约束。`apply_patch` 是可选的,由 `tools.exec.applyPatch` 控制。`TOOLS.md` **不**控制哪些工具存在;它是关于您希望如何使用这些工具的指导。
|
||||
核心工具(read/exec/edit/write 及相关系统工具)始终可用,受工具策略约束。`apply_patch` 是可选的,由 `tools.exec.applyPatch` 控制。`TOOLS.md` **不**控制哪些工具存在;它是关于你希望如何使用这些工具的指导。
|
||||
|
||||
## 技能
|
||||
## Skills
|
||||
|
||||
OpenClaw 从三个位置加载技能(名称冲突时工作区优先):
|
||||
OpenClaw 从三个位置加载 Skills(名称冲突时工作区优先):
|
||||
|
||||
- 内置(随安装包附带)
|
||||
- 托管/本地:`~/.openclaw/skills`
|
||||
- 工作区:`<workspace>/skills`
|
||||
|
||||
技能可以通过配置/环境变量进行控制(参见 [Gateway 配置](/gateway/configuration) 中的 `skills`)。
|
||||
Skills 可以通过配置/环境变量进行控制(参见 [Gateway网关配置](/gateway/configuration) 中的 `skills`)。
|
||||
|
||||
## pi-mono 集成
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
read_when:
|
||||
- 处理 Gateway 协议、客户端或传输层相关工作时
|
||||
summary: WebSocket Gateway 架构、组件和客户端流程
|
||||
title: Gateway 架构
|
||||
- 处理 Gateway网关协议、客户端或传输层相关工作时
|
||||
summary: WebSocket Gateway网关架构、组件和客户端流程
|
||||
title: Gateway网关架构
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:22:27Z"
|
||||
model: claude-opus-4-5
|
||||
|
|
@ -12,21 +12,21 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# Gateway 架构
|
||||
# Gateway网关架构
|
||||
|
||||
最后更新:2026-01-22
|
||||
|
||||
## 概述
|
||||
|
||||
- 单个长生命周期的 **Gateway** 管理所有消息接入面(通过 Baileys 接入 WhatsApp、通过 grammY 接入 Telegram、Slack、Discord、Signal、iMessage、WebChat)。
|
||||
- 控制面客户端(macOS 应用、CLI、Web UI、自动化)通过 **WebSocket** 连接到 Gateway,使用配置的绑定地址(默认 `127.0.0.1:18789`)。
|
||||
- 单个长生命周期的 **Gateway网关** 管理所有消息接入面(通过 Baileys 接入 WhatsApp、通过 grammY 接入 Telegram、Slack、Discord、Signal、iMessage、WebChat)。
|
||||
- 控制面客户端(macOS 应用、CLI、Web UI、自动化)通过 **WebSocket** 连接到 Gateway网关,使用配置的绑定地址(默认 `127.0.0.1:18789`)。
|
||||
- **节点**(macOS/iOS/Android/无头模式)也通过 **WebSocket** 连接,但声明 `role: node` 并显式指定能力/命令。
|
||||
- 每台主机一个 Gateway;它是唯一打开 WhatsApp 会话的位置。
|
||||
- 每台主机一个 Gateway网关;它是唯一打开 WhatsApp 会话的位置。
|
||||
- **画布主机**(默认 `18793`)提供智能体可编辑的 HTML 和 A2UI。
|
||||
|
||||
## 组件和流程
|
||||
|
||||
### Gateway(守护进程)
|
||||
### Gateway网关(守护进程)
|
||||
|
||||
- 维护提供商连接。
|
||||
- 暴露类型化的 WS API(请求、响应、服务端推送事件)。
|
||||
|
|
@ -47,17 +47,17 @@ x-i18n:
|
|||
|
||||
协议详情:
|
||||
|
||||
- [Gateway 协议](/gateway/protocol)
|
||||
- [Gateway网关协议](/gateway/protocol)
|
||||
|
||||
### WebChat
|
||||
|
||||
- 静态 UI,使用 Gateway WS API 获取聊天历史和发送消息。
|
||||
- 静态 UI,使用 Gateway网关 WS API 获取聊天历史和发送消息。
|
||||
- 在远程设置中,通过与其他客户端相同的 SSH/Tailscale 隧道连接。
|
||||
|
||||
## 连接生命周期(单个客户端)
|
||||
|
||||
```
|
||||
Client Gateway
|
||||
Client Gateway网关
|
||||
| |
|
||||
|---- req:connect -------->|
|
||||
|<------ res (ok) ---------| (或 res error + 关闭)
|
||||
|
|
@ -87,12 +87,12 @@ Client Gateway
|
|||
## 配对与本地信任
|
||||
|
||||
- 所有 WS 客户端(操作员 + 节点)在 `connect` 时包含**设备身份**。
|
||||
- 新设备 ID 需要配对审批;Gateway 颁发**设备令牌**用于后续连接。
|
||||
- **本地**连接(回环地址或 Gateway 主机自身的 tailnet 地址)可以自动审批,以保持同主机用户体验的流畅性。
|
||||
- 新设备 ID 需要配对审批;Gateway网关颁发**设备令牌**用于后续连接。
|
||||
- **本地**连接(local loopback 或 Gateway网关主机自身的 tailnet 地址)可以自动审批,以保持同主机用户体验的流畅性。
|
||||
- **非本地**连接必须对 `connect.challenge` nonce 签名,并需要显式审批。
|
||||
- Gateway 认证(`gateway.auth.*`)仍适用于**所有**连接,无论本地还是远程。
|
||||
- Gateway网关认证(`gateway.auth.*`)仍适用于**所有**连接,无论本地还是远程。
|
||||
|
||||
详情:[Gateway 协议](/gateway/protocol)、[配对](/start/pairing)、[安全](/gateway/security)。
|
||||
详情:[Gateway网关协议](/gateway/protocol)、[配对](/start/pairing)、[安全](/gateway/security)。
|
||||
|
||||
## 协议类型定义与代码生成
|
||||
|
||||
|
|
@ -118,6 +118,6 @@ Client Gateway
|
|||
|
||||
## 不变量
|
||||
|
||||
- 每台主机恰好一个 Gateway 控制单个 Baileys 会话。
|
||||
- 每台主机恰好一个 Gateway网关控制单个 Baileys 会话。
|
||||
- 握手是强制的;任何非 JSON 或非 connect 的首帧将导致硬关闭。
|
||||
- 事件不会重放;客户端必须在出现间隙时刷新。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想了解自动压缩和 /compact
|
||||
- 您正在调试长会话触及上下文限制的问题
|
||||
- 你想了解自动压缩和 /compact
|
||||
- 你正在调试长会话触及上下文限制的问题
|
||||
summary: 上下文窗口 + 压缩:OpenClaw 如何将会话保持在模型限制内
|
||||
title: 压缩
|
||||
x-i18n:
|
||||
|
|
@ -34,7 +34,7 @@ x-i18n:
|
|||
|
||||
当会话接近或超过模型的上下文窗口时,OpenClaw 会触发自动压缩,并可能使用压缩后的上下文重试原始请求。
|
||||
|
||||
您会看到:
|
||||
你会看到:
|
||||
|
||||
- 详细模式下显示 `🧹 Auto-compaction complete`
|
||||
- `/status` 显示 `🧹 Compactions: <count>`
|
||||
|
|
@ -64,4 +64,4 @@ x-i18n:
|
|||
|
||||
- 当会话感觉过时或上下文臃肿时,使用 `/compact`。
|
||||
- 大型工具输出已被截断;修剪可以进一步减少工具结果的堆积。
|
||||
- 如果您需要全新开始,`/new` 或 `/reset` 会启动一个新的会话 ID。
|
||||
- 如果你需要全新开始,`/new` 或 `/reset` 会启动一个新的会话 ID。
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ x-i18n:
|
|||
|
||||
初学者心智模型:
|
||||
|
||||
- **系统提示词**(由 OpenClaw 构建):规则、工具、技能列表、时间/运行时信息,以及注入的工作区文件。
|
||||
- **系统提示词**(由 OpenClaw 构建):规则、工具、Skills 列表、时间/运行时信息,以及注入的工作区文件。
|
||||
- **对话历史**:你的消息 + 助手在本次会话中的消息。
|
||||
- **工具调用/结果 + 附件**:命令输出、文件读取、图片/音频等。
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ x-i18n:
|
|||
|
||||
- `/status` → 快速查看"我的窗口还剩多少空间?"以及会话设置。
|
||||
- `/context list` → 查看注入了哪些内容及大致大小(按文件和总计)。
|
||||
- `/context detail` → 更深入的分解:按文件、按工具 schema 大小、按技能条目大小,以及系统提示词大小。
|
||||
- `/context detail` → 更深入的分解:按文件、按工具 schema 大小、按 Skills 条目大小,以及系统提示词大小。
|
||||
- `/usage tokens` → 在正常回复后附加每次回复的用量信息。
|
||||
- `/compact` → 将较早的历史记录总结为一个压缩条目,以释放窗口空间。
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ Top tools (schema size):
|
|||
系统提示词由 **OpenClaw 拥有**,每次运行时重新构建。它包括:
|
||||
|
||||
- 工具列表 + 简短描述。
|
||||
- 技能列表(仅元数据;见下文)。
|
||||
- Skills 列表(仅元数据;见下文)。
|
||||
- 工作区位置。
|
||||
- 时间(UTC + 如已配置则转换为用户时间)。
|
||||
- 运行时元数据(主机/操作系统/模型/思考模式)。
|
||||
|
|
@ -121,11 +121,11 @@ Top tools (schema size):
|
|||
|
||||
大文件会按 `agents.defaults.bootstrapMaxChars`(默认 `20000` 字符)逐文件截断。`/context` 会显示**原始大小与注入大小**的对比,以及是否发生了截断。
|
||||
|
||||
## 技能:注入的内容与按需加载的内容
|
||||
## Skills:注入的内容与按需加载的内容
|
||||
|
||||
系统提示词中包含一个紧凑的**技能列表**(名称 + 描述 + 位置)。此列表会产生实际开销。
|
||||
系统提示词中包含一个紧凑的**Skills 列表**(名称 + 描述 + 位置)。此列表会产生实际开销。
|
||||
|
||||
技能指令默认*不会*包含在内。模型应在**需要时**才 `read` 技能的 `SKILL.md`。
|
||||
Skills 指令默认*不会*包含在内。模型应在**需要时**才 `read` Skills 的 `SKILL.md`。
|
||||
|
||||
## 工具:两种开销
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ Top tools (schema size):
|
|||
|
||||
## 命令、指令和"内联快捷方式"
|
||||
|
||||
斜杠命令由 Gateway 处理。有几种不同的行为:
|
||||
斜杠命令由 Gateway网关处理。有几种不同的行为:
|
||||
|
||||
- **独立命令**:仅包含 `/...` 的消息作为命令运行。
|
||||
- **指令**:`/think`、`/verbose`、`/reasoning`、`/elevated`、`/model`、`/queue` 会在模型看到消息之前被移除。
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ x-i18n:
|
|||
- 手动冒烟测试:
|
||||
- 在群组中发送 `@openclaw` 提及,确认回复中引用了发送者名称。
|
||||
- 再次发送提及,验证历史消息块已包含并在下一轮清除。
|
||||
- 检查 Gateway 日志(使用 `--verbose` 运行)查看 `inbound web message` 条目,确认其显示 `from: <groupJid>` 和 `[from: …]` 后缀。
|
||||
- 检查 Gateway网关日志(使用 `--verbose` 运行)查看 `inbound web message` 条目,确认其显示 `from: <groupJid>` 和 `[from: …]` 后缀。
|
||||
|
||||
## 已知注意事项
|
||||
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ OpenClaw 在各平台上统一处理群聊:WhatsApp、Telegram、Discord、Sla
|
|||
|
||||
## 入门简介(2 分钟)
|
||||
|
||||
OpenClaw "运行"在您自己的消息账户上。没有单独的 WhatsApp 机器人用户。
|
||||
如果**您**在某个群组中,OpenClaw 就能看到该群组并在其中回复。
|
||||
OpenClaw "运行"在你自己的消息账户上。没有单独的 WhatsApp 机器人用户。
|
||||
如果**你**在某个群组中,OpenClaw 就能看到该群组并在其中回复。
|
||||
|
||||
默认行为:
|
||||
|
||||
- 群组受限(`groupPolicy: "allowlist"`)。
|
||||
- 除非您显式禁用提及门控,否则回复需要 @提及。
|
||||
- 除非你显式禁用提及门控,否则回复需要 @提及。
|
||||
|
||||
含义:允许列表中的发送者可以通过提及 OpenClaw 来触发它。
|
||||
|
||||
|
|
@ -45,13 +45,13 @@ otherwise -> reply
|
|||
|
||||

|
||||
|
||||
如果您想要...
|
||||
如果你想要...
|
||||
| 目标 | 需要设置的内容 |
|
||||
|------|-------------|
|
||||
| 允许所有群组但仅在 @提及时回复 | `groups: { "*": { requireMention: true } }` |
|
||||
| 禁用所有群组回复 | `groupPolicy: "disabled"` |
|
||||
| 仅特定群组 | `groups: { "<group-id>": { ... } }`(无 `"*"` 键) |
|
||||
| 仅您可以在群组中触发 | `groupPolicy: "allowlist"`、`groupAllowFrom: ["+1555..."]` |
|
||||
| 仅你可以在群组中触发 | `groupPolicy: "allowlist"`、`groupAllowFrom: ["+1555..."]` |
|
||||
|
||||
## 会话键
|
||||
|
||||
|
|
@ -62,18 +62,18 @@ otherwise -> reply
|
|||
|
||||
## 模式:个人私聊 + 公开群组(单智能体)
|
||||
|
||||
可以——如果您的"个人"流量是**私聊**,"公开"流量是**群组**,这种方式效果很好。
|
||||
可以——如果你的"个人"流量是**私聊**,"公开"流量是**群组**,这种方式效果很好。
|
||||
|
||||
原因:在单智能体模式下,私聊通常落在**主**会话键(`agent:main:main`)上,而群组始终使用**非主**会话键(`agent:main:<channel>:group:<id>`)。如果您启用沙箱并设置 `mode: "non-main"`,这些群组会话将在 Docker 中运行,而您的主私聊会话留在主机上。
|
||||
原因:在单智能体模式下,私聊通常落在**主**会话键(`agent:main:main`)上,而群组始终使用**非主**会话键(`agent:main:<channel>:group:<id>`)。如果你启用沙箱并设置 `mode: "non-main"`,这些群组会话将在 Docker 中运行,而你的主私聊会话留在主机上。
|
||||
|
||||
这为您提供了一个智能体"大脑"(共享工作区 + 记忆),但有两种执行姿态:
|
||||
这为你提供了一个智能体"大脑"(共享工作区 + 记忆),但有两种执行姿态:
|
||||
|
||||
- **私聊**:完整工具(主机)
|
||||
- **群组**:沙箱 + 受限工具(Docker)
|
||||
|
||||
> 如果您需要真正独立的工作区/角色("个人"和"公开"绝不能混合),请使用第二个智能体 + 绑定。参见[多智能体路由](/concepts/multi-agent)。
|
||||
> 如果你需要真正独立的工作区/角色("个人"和"公开"绝不能混合),请使用第二个智能体 + 绑定。参见[多智能体路由](/concepts/multi-agent)。
|
||||
|
||||
示例(私聊在主机上,群组沙箱化 + 仅消息工具):
|
||||
示例(私聊在主机上,群组沙箱隔离 + 仅消息工具):
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
@ -122,9 +122,9 @@ otherwise -> reply
|
|||
|
||||
相关内容:
|
||||
|
||||
- 配置键和默认值:[Gateway 配置](/gateway/configuration#agentsdefaultssandbox)
|
||||
- 配置键和默认值:[Gateway网关配置](/gateway/configuration#agentsdefaultssandbox)
|
||||
- 调试工具被阻止的原因:[沙箱 vs 工具策略 vs 提权](/gateway/sandbox-vs-tool-policy-vs-elevated)
|
||||
- 绑定挂载详情:[沙箱化](/gateway/sandboxing#custom-bind-mounts)
|
||||
- 绑定挂载详情:[沙箱隔离](/gateway/sandboxing#custom-bind-mounts)
|
||||
|
||||
## 显示标签
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ otherwise -> reply
|
|||
- Matrix:允许列表使用 `channels.matrix.groups`(房间 ID、别名或名称)。使用 `channels.matrix.groupAllowFrom` 限制发送者;也支持按房间的 `users` 允许列表。
|
||||
- 群组私聊单独控制(`channels.discord.dm.*`、`channels.slack.dm.*`)。
|
||||
- Telegram 允许列表可以匹配用户 ID(`"123456789"`、`"telegram:123456789"`、`"tg:123456789"`)或用户名(`"@alice"` 或 `"alice"`);前缀不区分大小写。
|
||||
- 默认为 `groupPolicy: "allowlist"`;如果您的群组允许列表为空,群组消息将被阻止。
|
||||
- 默认为 `groupPolicy: "allowlist"`;如果你的群组允许列表为空,群组消息将被阻止。
|
||||
|
||||
快速心智模型(群消息的评估顺序):
|
||||
|
||||
|
|
|
|||
|
|
@ -68,13 +68,13 @@ x-i18n:
|
|||
|
||||
## 会话与设备
|
||||
|
||||
会话由 Gateway 管理,而非由客户端管理。
|
||||
会话由 Gateway网关管理,而非由客户端管理。
|
||||
|
||||
- 私聊消息归并到智能体的主会话键。
|
||||
- 群组/频道拥有各自独立的会话键。
|
||||
- 会话存储和对话记录保存在 Gateway 主机上。
|
||||
- 会话存储和对话记录保存在 Gateway网关主机上。
|
||||
|
||||
多个设备/渠道可以映射到同一个会话,但历史记录不会完全同步回每个客户端。建议:长对话使用一个主要设备,以避免上下文分歧。控制界面和 TUI 始终显示 Gateway 端的会话记录,因此它们是权威数据源。
|
||||
多个设备/渠道可以映射到同一个会话,但历史记录不会完全同步回每个客户端。建议:长对话使用一个主要设备,以避免上下文分歧。控制界面和 TUI 始终显示 Gateway网关端的会话记录,因此它们是权威数据源。
|
||||
|
||||
详情请参见:[会话管理](/concepts/session)。
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ OpenClaw 会将其标记为冷却状态并移至下一个配置文件。
|
|||
|
||||
## 相关配置
|
||||
|
||||
参阅 [Gateway 配置](/gateway/configuration) 了解:
|
||||
参阅 [Gateway网关配置](/gateway/configuration) 了解:
|
||||
|
||||
- `auth.profiles` / `auth.order`
|
||||
- `auth.cooldowns.billingBackoffHours` / `auth.cooldowns.billingBackoffHoursByProvider`
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 你需要按提供商查阅模型设置参考
|
||||
- 你需要模型提供商的示例配置或 CLI 上手引导命令
|
||||
- 你需要模型提供商的示例配置或 CLI 新手引导命令
|
||||
summary: 模型提供商概览,包含示例配置和 CLI 流程
|
||||
title: 模型提供商
|
||||
x-i18n:
|
||||
|
|
@ -97,7 +97,7 @@ OpenClaw 自带 pi‑ai 目录。这些提供商**无需**配置 `models.provide
|
|||
- Gemini CLI OAuth 作为捆绑插件提供(`google-gemini-cli-auth`,默认禁用)。
|
||||
- 启用:`openclaw plugins enable google-gemini-cli-auth`
|
||||
- 登录:`openclaw models auth login --provider google-gemini-cli --set-default`
|
||||
- 注意:你**无需**将客户端 ID 或密钥粘贴到 `openclaw.json` 中。CLI 登录流程会将令牌存储在 Gateway 主机的认证配置文件中。
|
||||
- 注意:你**无需**将客户端 ID 或密钥粘贴到 `openclaw.json` 中。CLI 登录流程会将令牌存储在 Gateway网关主机的认证配置文件中。
|
||||
|
||||
### Z.AI (GLM)
|
||||
|
||||
|
|
@ -314,4 +314,4 @@ openclaw models set opencode/claude-opus-4-5
|
|||
openclaw models list
|
||||
```
|
||||
|
||||
另请参见:[/gateway/configuration](/gateway/configuration) 了解完整的配置示例。
|
||||
另请参见:[/gateway/configuration](/gateway/configuration) 了解全部配置示例。
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ OpenClaw 按以下顺序选择模型:
|
|||
|
||||
## 设置向导(推荐)
|
||||
|
||||
如果不想手动编辑配置,可以运行上手引导向导:
|
||||
如果不想手动编辑配置,可以运行新手引导向导:
|
||||
|
||||
```bash
|
||||
openclaw onboard
|
||||
|
|
@ -152,7 +152,7 @@ OAuth 状态始终显示(并包含在 `--json` 输出中)。如果已配置
|
|||
JSON 包含 `auth.oauth`(警告窗口 + 配置文件)和 `auth.providers`(每个提供商的有效认证)。
|
||||
使用 `--check` 进行自动化检测(缺失/过期时退出码为 `1`,即将过期时为 `2`)。
|
||||
|
||||
推荐的 Anthropic 认证方式是 Claude Code CLI setup-token(可在任何地方运行;如有需要可粘贴到 Gateway 主机上):
|
||||
推荐的 Anthropic 认证方式是 Claude Code CLI setup-token(可在任何地方运行;如有需要可粘贴到 Gateway网关主机上):
|
||||
|
||||
```bash
|
||||
claude setup-token
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
read_when: 你希望在一个 Gateway 进程中运行多个隔离的智能体(工作区 + 认证)。
|
||||
read_when: 你希望在一个 Gateway网关进程中运行多个隔离的智能体(工作区 + 认证)。
|
||||
status: active
|
||||
summary: 多智能体路由:隔离的智能体、渠道账户和绑定
|
||||
title: 多智能体路由
|
||||
|
|
@ -14,7 +14,7 @@ x-i18n:
|
|||
|
||||
# 多智能体路由
|
||||
|
||||
目标:在一个运行中的 Gateway 中托管多个*隔离的*智能体(独立的工作区 + `agentDir` + 会话),以及多个渠道账户(例如两个 WhatsApp)。入站消息通过绑定路由到对应的智能体。
|
||||
目标:在一个运行中的 Gateway网关中托管多个*隔离的*智能体(独立的工作区 + `agentDir` + 会话),以及多个渠道账户(例如两个 WhatsApp)。入站消息通过绑定路由到对应的智能体。
|
||||
|
||||
## 什么是"一个智能体"?
|
||||
|
||||
|
|
@ -32,9 +32,9 @@ x-i18n:
|
|||
|
||||
主智能体的凭证**不会**自动共享。切勿在智能体之间复用 `agentDir`(会导致认证/会话冲突)。如果你想共享凭证,请将 `auth-profiles.json` 复制到另一个智能体的 `agentDir` 中。
|
||||
|
||||
技能通过每个工作区的 `skills/` 文件夹按智能体隔离,共享技能可从 `~/.openclaw/skills` 获取。参阅[技能:按智能体 vs 共享](/tools/skills#per-agent-vs-shared-skills)。
|
||||
Skills 通过每个工作区的 `skills/` 文件夹按智能体隔离,共享 Skills 可从 `~/.openclaw/skills` 获取。参阅[Skills:按智能体 vs 共享](/tools/skills#per-agent-vs-shared-skills)。
|
||||
|
||||
Gateway 可以托管**一个智能体**(默认)或**多个智能体**并行运行。
|
||||
Gateway网关可以托管**一个智能体**(默认)或**多个智能体**并行运行。
|
||||
|
||||
**工作区说明:** 每个智能体的工作区是**默认工作目录**,而非严格的沙箱。相对路径在工作区内解析,但绝对路径可以访问主机上的其他位置,除非启用了沙箱。参阅[沙箱](/gateway/sandboxing)。
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ openclaw agents list --bindings
|
|||
- **不同的性格**(按智能体工作区文件,如 `AGENTS.md` 和 `SOUL.md`)。
|
||||
- **独立的认证 + 会话**(除非显式启用,否则无串扰)。
|
||||
|
||||
这使得**多个用户**可以共享一台 Gateway 服务器,同时保持各自的 AI "大脑"和数据隔离。
|
||||
这使得**多个用户**可以共享一台 Gateway网关服务器,同时保持各自的 AI "大脑"和数据隔离。
|
||||
|
||||
## 一个 WhatsApp 号码,多个用户(私聊分流)
|
||||
|
||||
|
|
@ -316,7 +316,7 @@ openclaw agents list --bindings
|
|||
|
||||
说明:
|
||||
|
||||
- 工具允许/拒绝列表针对的是**工具**,而非技能。如果某个技能需要运行二进制文件,请确保允许 `exec` 并且该二进制文件存在于沙箱中。
|
||||
- 工具允许/拒绝列表针对的是**工具**,而非 Skills。如果某个 Skills 需要运行二进制文件,请确保允许 `exec` 并且该二进制文件存在于沙箱中。
|
||||
- 要实现更严格的控制,请设置 `agents.list[].groupChat.mentionPatterns` 并为渠道启用群组白名单。
|
||||
|
||||
## 按智能体的沙箱和工具配置
|
||||
|
|
@ -339,7 +339,7 @@ openclaw agents list --bindings
|
|||
id: "family",
|
||||
workspace: "~/.openclaw/workspace-family",
|
||||
sandbox: {
|
||||
mode: "all", // 始终沙箱化
|
||||
mode: "all", // 始终沙箱隔离
|
||||
scope: "agent", // 每个智能体一个容器
|
||||
docker: {
|
||||
// 容器创建后的可选一次性设置
|
||||
|
|
@ -361,7 +361,7 @@ openclaw agents list --bindings
|
|||
**优势:**
|
||||
|
||||
- **安全隔离**:限制不受信任的智能体的工具
|
||||
- **资源控制**:沙箱化特定智能体,同时让其他智能体在主机上运行
|
||||
- **资源控制**:沙箱隔离特定智能体,同时让其他智能体在主机上运行
|
||||
- **灵活策略**:按智能体设置不同权限
|
||||
|
||||
注意:`tools.elevated` 是**全局的**且基于发送者;不能按智能体配置。如果你需要按智能体的边界,请使用 `agents.list[].tools` 来拒绝 `exec`。对于群组定向,请使用 `agents.list[].groupChat.mentionPatterns`,以便 @提及能准确映射到目标智能体。
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
read_when:
|
||||
- 您想全面了解 OpenClaw 的 OAuth 流程
|
||||
- 您遇到了令牌失效/登出问题
|
||||
- 您想了解 setup-token 或 OAuth 认证流程
|
||||
- 您想使用多账户或配置文件路由
|
||||
- 你想全面了解 OpenClaw 的 OAuth 流程
|
||||
- 你遇到了令牌失效/登出问题
|
||||
- 你想了解 setup-token 或 OAuth 认证流程
|
||||
- 你想使用多账户或配置文件路由
|
||||
summary: OpenClaw 中的 OAuth:令牌交换、存储和多账户模式
|
||||
title: OAuth
|
||||
x-i18n:
|
||||
|
|
@ -35,7 +35,7 @@ OAuth 提供商通常在登录/刷新流程中发放**新的刷新令牌**。某
|
|||
|
||||
实际症状:
|
||||
|
||||
- 您通过 OpenClaw _和_ Claude Code / Codex CLI 登录 → 其中一个稍后会随机"登出"
|
||||
- 你通过 OpenClaw _和_ Claude Code / Codex CLI 登录 → 其中一个稍后会随机"登出"
|
||||
|
||||
为减少这种情况,OpenClaw 将 `auth-profiles.json` 视为**令牌汇聚点**:
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ OAuth 提供商通常在登录/刷新流程中发放**新的刷新令牌**。某
|
|||
openclaw models auth setup-token --provider anthropic
|
||||
```
|
||||
|
||||
如果您在其他地方生成了令牌,可以手动粘贴:
|
||||
如果你在其他地方生成了令牌,可以手动粘贴:
|
||||
|
||||
```bash
|
||||
openclaw models auth paste-token --provider anthropic
|
||||
|
|
@ -96,7 +96,7 @@ OpenClaw 的交互式登录流程在 `@mariozechner/pi-ai` 中实现,并集成
|
|||
1. 生成 PKCE 验证器/质询 + 随机 `state`
|
||||
2. 打开 `https://auth.openai.com/oauth/authorize?...`
|
||||
3. 尝试在 `http://127.0.0.1:1455/auth/callback` 捕获回调
|
||||
4. 如果回调无法绑定(或您在远程/无头环境中),手动粘贴重定向 URL/代码
|
||||
4. 如果回调无法绑定(或你在远程/无头环境中),手动粘贴重定向 URL/代码
|
||||
5. 在 `https://auth.openai.com/oauth/token` 进行交换
|
||||
6. 从访问令牌中提取 `accountId` 并存储 `{ access, refresh, expires, accountId }`
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ OpenClaw 的交互式登录流程在 `@mariozechner/pi-ai` 中实现,并集成
|
|||
- 如果 `expires` 在未来 → 使用已存储的访问令牌
|
||||
- 如果已过期 → 刷新(在文件锁下)并覆盖已存储的凭据
|
||||
|
||||
刷新流程是自动的;您通常不需要手动管理令牌。
|
||||
刷新流程是自动的;你通常不需要手动管理令牌。
|
||||
|
||||
## 多账户(配置文件)+ 路由
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ OpenClaw 的交互式登录流程在 `@mariozechner/pi-ai` 中实现,并集成
|
|||
|
||||
### 1)推荐:独立智能体
|
||||
|
||||
如果您希望"个人"和"工作"永远不交叉,请使用隔离的智能体(独立的会话 + 凭据 + 工作区):
|
||||
如果你希望"个人"和"工作"永远不交叉,请使用隔离的智能体(独立的会话 + 凭据 + 工作区):
|
||||
|
||||
```bash
|
||||
openclaw agents add work
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
read_when:
|
||||
- 调试实例选项卡
|
||||
- 排查重复或过期的实例行
|
||||
- 更改 Gateway WebSocket 连接或系统事件信标
|
||||
- 更改 Gateway网关 WebSocket 连接或系统事件信标
|
||||
summary: OpenClaw 在线状态条目的生成、合并与显示方式
|
||||
title: 在线状态
|
||||
x-i18n:
|
||||
|
|
@ -18,8 +18,8 @@ x-i18n:
|
|||
|
||||
OpenClaw 的"在线状态"是一个轻量级、尽力而为的视图,展示:
|
||||
|
||||
- **Gateway** 自身,以及
|
||||
- **连接到 Gateway 的客户端**(Mac 应用、WebChat、CLI 等)
|
||||
- **Gateway网关** 自身,以及
|
||||
- **连接到 Gateway网关的客户端**(Mac 应用、WebChat、CLI 等)
|
||||
|
||||
在线状态主要用于渲染 macOS 应用的**实例**选项卡,并为操作人员提供快速可视化。
|
||||
|
||||
|
|
@ -41,13 +41,13 @@ OpenClaw 的"在线状态"是一个轻量级、尽力而为的视图,展示:
|
|||
|
||||
在线状态条目由多个来源产生并进行**合并**。
|
||||
|
||||
### 1)Gateway 自身条目
|
||||
### 1)Gateway网关自身条目
|
||||
|
||||
Gateway 在启动时始终会创建一个"self"条目,这样即使在任何客户端连接之前,UI 也能显示 Gateway 主机。
|
||||
Gateway网关在启动时始终会创建一个"self"条目,这样即使在任何客户端连接之前,UI 也能显示 Gateway网关主机。
|
||||
|
||||
### 2)WebSocket 连接
|
||||
|
||||
每个 WebSocket 客户端都以 `connect` 请求开始。握手成功后,Gateway 会为该连接更新插入一个在线状态条目。
|
||||
每个 WebSocket 客户端都以 `connect` 请求开始。握手成功后,Gateway网关会为该连接更新插入一个在线状态条目。
|
||||
|
||||
#### 为什么一次性 CLI 命令不会显示
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ CLI 通常只为短暂的一次性命令建立连接。为避免实例列表被
|
|||
|
||||
### 4)节点连接(role: node)
|
||||
|
||||
当节点通过 Gateway WebSocket 以 `role: node` 连接时,Gateway 会为该节点更新插入一个在线状态条目(与其他 WebSocket 客户端流程相同)。
|
||||
当节点通过 Gateway网关 WebSocket 以 `role: node` 连接时,Gateway网关会为该节点更新插入一个在线状态条目(与其他 WebSocket 客户端流程相同)。
|
||||
|
||||
## 合并与去重规则(为什么 `instanceId` 很重要)
|
||||
|
||||
|
|
@ -80,9 +80,9 @@ CLI 通常只为短暂的一次性命令建立连接。为避免实例列表被
|
|||
|
||||
这确保列表保持新鲜,避免无限制的内存增长。
|
||||
|
||||
## 远程/隧道注意事项(回环 IP)
|
||||
## 远程/隧道注意事项(local loopback IP)
|
||||
|
||||
当客户端通过 SSH 隧道/本地端口转发连接时,Gateway 可能会将远程地址识别为 `127.0.0.1`。为避免覆盖客户端报告的有效 IP,回环远程地址会被忽略。
|
||||
当客户端通过 SSH 隧道/本地端口转发连接时,Gateway网关可能会将远程地址识别为 `127.0.0.1`。为避免覆盖客户端报告的有效 IP,local loopback 远程地址会被忽略。
|
||||
|
||||
## 消费者
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ macOS 应用渲染 `system-presence` 的输出,并根据最后更新的时间
|
|||
|
||||
## 调试技巧
|
||||
|
||||
- 要查看原始列表,请对 Gateway 调用 `system-presence`。
|
||||
- 要查看原始列表,请对 Gateway网关调用 `system-presence`。
|
||||
- 如果看到重复条目:
|
||||
- 确认客户端在握手中发送了稳定的 `client.instanceId`
|
||||
- 确认周期性信标使用相同的 `instanceId`
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ summarize 会保留一个被丢弃消息的简短要点列表,并将其作为
|
|||
|
||||
## 作用范围与保证
|
||||
|
||||
- 适用于所有使用 Gateway 回复管道的入站渠道的自动回复智能体运行(WhatsApp 网页版、Telegram、Slack、Discord、Signal、iMessage、网页聊天等)。
|
||||
- 适用于所有使用 Gateway网关回复管道的入站渠道的自动回复智能体运行(WhatsApp 网页版、Telegram、Slack、Discord、Signal、iMessage、网页聊天等)。
|
||||
- 默认通道(`main`)在进程范围内适用于入站消息和主心跳;设置 `agents.defaults.maxConcurrent` 以允许多个会话并行。
|
||||
- 可能存在其他通道(如 `cron`、`subagent`),以便后台任务可以并行运行而不阻塞入站回复。
|
||||
- 按会话通道保证同一时间只有一个智能体运行接触给定会话。
|
||||
|
|
|
|||
|
|
@ -126,4 +126,4 @@ x-i18n:
|
|||
}
|
||||
```
|
||||
|
||||
参见配置参考:[Gateway 配置](/gateway/configuration)
|
||||
参见配置参考:[Gateway网关配置](/gateway/configuration)
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ x-i18n:
|
|||
|
||||
- `messageLimit > 0` 时会获取每个会话的 `chat.history` 并包含最近 N 条消息。
|
||||
- 列表输出中会过滤工具结果;使用 `sessions_history` 获取工具消息。
|
||||
- 在**沙箱化**的智能体会话中运行时,会话工具默认为**仅已生成可见**(见下文)。
|
||||
- 在**沙箱隔离**的智能体会话中运行时,会话工具默认为**仅已生成可见**(见下文)。
|
||||
|
||||
行结构(JSON):
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ x-i18n:
|
|||
- 如果等待超时:`{ runId, status: "timeout", error }`。运行继续;稍后调用 `sessions_history`。
|
||||
- 如果运行失败:`{ runId, status: "error", error }`。
|
||||
- 通知投递在主运行完成后运行,属于尽力而为;`status: "ok"` 不保证通知已成功投递。
|
||||
- 通过 Gateway `agent.wait`(服务器端)等待,因此重连不会中断等待。
|
||||
- 通过 Gateway网关 `agent.wait`(服务器端)等待,因此重连不会中断等待。
|
||||
- 智能体间消息上下文会注入到主运行中。
|
||||
- 主运行完成后,OpenClaw 运行**回复往返循环**:
|
||||
- 第 2 轮及之后在请求方和目标智能体之间交替。
|
||||
|
|
@ -144,7 +144,7 @@ x-i18n:
|
|||
|
||||
执行点:
|
||||
|
||||
- `chat.send` / `agent`(Gateway)
|
||||
- `chat.send` / `agent`(Gateway网关)
|
||||
- 自动回复投递逻辑
|
||||
|
||||
## sessions_spawn
|
||||
|
|
@ -182,7 +182,7 @@ x-i18n:
|
|||
|
||||
## 沙箱会话可见性
|
||||
|
||||
沙箱化的会话可以使用会话工具,但默认只能看到通过 `sessions_spawn` 生成的会话。
|
||||
沙箱隔离的会话可以使用会话工具,但默认只能看到通过 `sessions_spawn` 生成的会话。
|
||||
|
||||
配置:
|
||||
|
||||
|
|
|
|||
|
|
@ -24,16 +24,16 @@ OpenClaw 将**每个智能体一个私聊会话**视为主会话。私聊归并
|
|||
- `per-account-channel-peer`:按账号 + 渠道 + 发送者隔离(推荐用于多账号收件箱)。
|
||||
使用 `session.identityLinks` 将带提供商前缀的对端 ID 映射到规范身份,这样在使用 `per-peer`、`per-channel-peer` 或 `per-account-channel-peer` 时,同一个人可以跨渠道共享私信会话。
|
||||
|
||||
## Gateway 是权威数据源
|
||||
## Gateway网关是权威数据源
|
||||
|
||||
所有会话状态均由 **Gateway**("主" OpenClaw)管理。UI 客户端(macOS 应用、WebChat 等)必须向 Gateway 查询会话列表和令牌计数,而不是读取本地文件。
|
||||
所有会话状态均由 **Gateway网关**("主" OpenClaw)管理。UI 客户端(macOS 应用、WebChat 等)必须向 Gateway网关查询会话列表和令牌计数,而不是读取本地文件。
|
||||
|
||||
- 在**远程模式**下,你关心的会话存储位于远程 Gateway 主机上,而不是你的 Mac 上。
|
||||
- UI 中显示的令牌计数来自 Gateway 存储字段(`inputTokens`、`outputTokens`、`totalTokens`、`contextTokens`)。客户端不会解析 JSONL 记录来"修正"总数。
|
||||
- 在**远程模式**下,你关心的会话存储位于远程 Gateway网关主机上,而不是你的 Mac 上。
|
||||
- UI 中显示的令牌计数来自 Gateway网关存储字段(`inputTokens`、`outputTokens`、`totalTokens`、`contextTokens`)。客户端不会解析 JSONL 记录来"修正"总数。
|
||||
|
||||
## 状态存储位置
|
||||
|
||||
- 在 **Gateway 主机**上:
|
||||
- 在 **Gateway网关主机**上:
|
||||
- 存储文件:`~/.openclaw/agents/<agentId>/sessions/sessions.json`(每个智能体)。
|
||||
- 对话记录:`~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl`(Telegram 话题会话使用 `.../<SessionId>-topic-<threadId>.jsonl`)。
|
||||
- 存储是一个 `sessionKey -> { sessionId, updatedAt, ... }` 的映射。删除条目是安全的;它们会按需重新创建。
|
||||
|
|
@ -71,7 +71,7 @@ OpenClaw 默认在 LLM 调用之前从内存上下文中修剪**旧的工具结
|
|||
## 生命周期
|
||||
|
||||
- 重置策略:会话持续复用直到过期,过期在下一条入站消息时评估。
|
||||
- 每日重置:默认为 **Gateway 主机本地时间凌晨 4:00**。当会话的最后更新早于最近一次每日重置时间时,会话即为过期。
|
||||
- 每日重置:默认为 **Gateway网关主机本地时间凌晨 4:00**。当会话的最后更新早于最近一次每日重置时间时,会话即为过期。
|
||||
- 空闲重置(可选):`idleMinutes` 添加一个滑动空闲窗口。当同时配置了每日重置和空闲重置时,**先到期的那个**强制创建新会话。
|
||||
- 旧版仅空闲模式:如果设置了 `session.idleMinutes` 但没有任何 `session.reset`/`resetByType` 配置,OpenClaw 会保持仅空闲模式以向后兼容。
|
||||
- 按类型覆盖(可选):`resetByType` 允许你为 `dm`、`group` 和 `thread` 会话覆盖策略(thread = Slack/Discord 线程、Telegram 话题、连接器提供的 Matrix 线程)。
|
||||
|
|
@ -117,7 +117,7 @@ OpenClaw 默认在 LLM 调用之前从内存上下文中修剪**旧的工具结
|
|||
alice: ["telegram:123456789", "discord:987654321012345678"],
|
||||
},
|
||||
reset: {
|
||||
// 默认值:mode=daily,atHour=4(Gateway 主机本地时间)。
|
||||
// 默认值:mode=daily,atHour=4(Gateway网关主机本地时间)。
|
||||
// 如果同时设置了 idleMinutes,先到期的优先。
|
||||
mode: "daily",
|
||||
atHour: 4,
|
||||
|
|
@ -142,7 +142,7 @@ OpenClaw 默认在 LLM 调用之前从内存上下文中修剪**旧的工具结
|
|||
|
||||
- `openclaw status` — 显示存储路径和最近的会话。
|
||||
- `openclaw sessions --json` — 转储所有条目(使用 `--active <minutes>` 进行筛选)。
|
||||
- `openclaw gateway call sessions.list --params '{}'` — 从运行中的 Gateway 获取会话(使用 `--url`/`--token` 访问远程 Gateway)。
|
||||
- `openclaw gateway call sessions.list --params '{}'` — 从运行中的 Gateway网关获取会话(使用 `--url`/`--token` 访问远程 Gateway网关)。
|
||||
- 在聊天中发送 `/status` 作为独立消息,可查看智能体是否可达、会话上下文使用了多少、当前的思考/详细模式开关,以及 WhatsApp 网页凭证的最后刷新时间(有助于发现需要重新链接的情况)。
|
||||
- 发送 `/context list` 或 `/context detail` 查看系统提示词和注入的工作区文件中的内容(以及最大的上下文贡献者)。
|
||||
- 发送 `/stop` 作为独立消息,可中止当前运行、清除该会话的排队后续消息,并停止由其生成的任何子智能体运行(回复中包含已停止的数量)。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 编辑系统提示词文本、工具列表或时间/心跳部分
|
||||
- 更改工作区引导或技能注入行为
|
||||
- 更改工作区引导或 Skills 注入行为
|
||||
summary: OpenClaw 系统提示词的内容及其组装方式
|
||||
title: 系统提示词
|
||||
x-i18n:
|
||||
|
|
@ -25,26 +25,26 @@ OpenClaw 为每次智能体运行构建自定义系统提示词。该提示词
|
|||
|
||||
- **工具**:当前工具列表及简短描述。
|
||||
- **安全**:简短的护栏提醒,避免模型追求权力或绕过监督。
|
||||
- **技能**(可用时):告诉模型如何按需加载技能指令。
|
||||
- **Skills**(可用时):告诉模型如何按需加载 Skills 指令。
|
||||
- **OpenClaw 自更新**:如何运行 `config.apply` 和 `update.run`。
|
||||
- **工作区**:工作目录(`agents.defaults.workspace`)。
|
||||
- **文档**:OpenClaw 文档的本地路径(仓库或 npm 包)及查阅时机。
|
||||
- **工作区文件(注入的)**:表明引导文件包含在下方。
|
||||
- **沙箱**(启用时):表明沙箱化运行时、沙箱路径,以及是否可用提权执行。
|
||||
- **沙箱**(启用时):表明沙箱隔离运行时、沙箱路径,以及是否可用提权执行。
|
||||
- **当前日期和时间**:用户本地时间、时区和时间格式。
|
||||
- **回复标签**:支持的提供商的可选回复标签语法。
|
||||
- **心跳**:心跳提示和确认行为。
|
||||
- **运行时**:主机、操作系统、Node、模型、仓库根目录(检测到时)、思考级别(一行)。
|
||||
- **推理**:当前可见性级别及 /reasoning 切换提示。
|
||||
|
||||
系统提示词中的安全护栏是建议性的。它们引导模型行为但不强制执行策略。请使用工具策略、执行审批、沙箱化和渠道白名单进行硬性执行;操作人员可以按设计禁用这些功能。
|
||||
系统提示词中的安全护栏是建议性的。它们引导模型行为但不强制执行策略。请使用工具策略、执行审批、沙箱隔离和渠道白名单进行硬性执行;操作人员可以按设计禁用这些功能。
|
||||
|
||||
## 提示词模式
|
||||
|
||||
OpenClaw 可以为子智能体渲染更小的系统提示词。运行时为每次运行设置一个 `promptMode`(非用户可配置项):
|
||||
|
||||
- `full`(默认):包含上述所有部分。
|
||||
- `minimal`:用于子智能体;省略**技能**、**记忆召回**、**OpenClaw 自更新**、**模型别名**、**用户身份**、**回复标签**、**消息**、**静默回复**和**心跳**。工具、**安全**、工作区、沙箱、当前日期和时间(已知时)、运行时和注入的上下文仍然可用。
|
||||
- `minimal`:用于子智能体;省略**Skills**、**记忆召回**、**OpenClaw 自更新**、**模型别名**、**用户身份**、**回复标签**、**消息**、**静默回复**和**心跳**。工具、**安全**、工作区、沙箱、当前日期和时间(已知时)、运行时和注入的上下文仍然可用。
|
||||
- `none`:仅返回基础身份行。
|
||||
|
||||
当 `promptMode=minimal` 时,额外注入的提示词标记为**子智能体上下文**而非**群聊上下文**。
|
||||
|
|
@ -78,11 +78,11 @@ OpenClaw 可以为子智能体渲染更小的系统提示词。运行时为每
|
|||
- `agents.defaults.userTimezone`
|
||||
- `agents.defaults.timeFormat`(`auto` | `12` | `24`)
|
||||
|
||||
详见[日期和时间](/date-time)了解完整行为细节。
|
||||
详见[日期和时间](/date-time)了解全部行为细节。
|
||||
|
||||
## 技能
|
||||
## Skills
|
||||
|
||||
当存在符合条件的技能时,OpenClaw 会注入一个紧凑的**可用技能列表**(`formatSkillsForPrompt`),其中包含每个技能的**文件路径**。提示词指示模型使用 `read` 加载位于所列位置(工作区、托管或捆绑)的 SKILL.md。如果没有符合条件的技能,则省略技能部分。
|
||||
当存在符合条件的 Skills 时,OpenClaw 会注入一个紧凑的**可用 Skills 列表**(`formatSkillsForPrompt`),其中包含每个 Skills 的**文件路径**。提示词指示模型使用 `read` 加载位于所列位置(工作区、托管或捆绑)的 SKILL.md。如果没有符合条件的 Skills,则省略 Skills 部分。
|
||||
|
||||
```
|
||||
<available_skills>
|
||||
|
|
@ -94,8 +94,8 @@ OpenClaw 可以为子智能体渲染更小的系统提示词。运行时为每
|
|||
</available_skills>
|
||||
```
|
||||
|
||||
这样可以保持基础提示词精简,同时仍然支持有针对性的技能使用。
|
||||
这样可以保持基础提示词精简,同时仍然支持有针对性的 Skills 使用。
|
||||
|
||||
## 文档
|
||||
|
||||
当可用时,系统提示词包含一个**文档**部分,指向本地 OpenClaw 文档目录(仓库工作区中的 `docs/` 或捆绑的 npm 包文档),并注明公共镜像、源代码仓库、社区 Discord 和 ClawHub (https://clawhub.com) 用于技能发现。提示词指示模型在查询 OpenClaw 行为、命令、配置或架构时优先查阅本地文档,并在可能时自行运行 `openclaw status`(仅在无法访问时才询问用户)。
|
||||
当可用时,系统提示词包含一个**文档**部分,指向本地 OpenClaw 文档目录(仓库工作区中的 `docs/` 或捆绑的 npm 包文档),并注明公共镜像、源代码仓库、社区 Discord 和 ClawHub (https://clawhub.com) 用于 Skills 发现。提示词指示模型在查询 OpenClaw 行为、命令、配置或架构时优先查阅本地文档,并在可能时自行运行 `openclaw status`(仅在无法访问时才询问用户)。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 更新协议模式或代码生成
|
||||
summary: TypeBox 模式作为 Gateway 协议的唯一事实来源
|
||||
summary: TypeBox 模式作为 Gateway网关协议的唯一事实来源
|
||||
title: TypeBox
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:24:36Z"
|
||||
|
|
@ -16,13 +16,13 @@ x-i18n:
|
|||
|
||||
最后更新:2026-01-10
|
||||
|
||||
TypeBox 是一个 TypeScript 优先的模式库。我们用它来定义 **Gateway WebSocket 协议**(握手、请求/响应、服务器事件)。这些模式驱动**运行时验证**、**JSON Schema 导出**以及 macOS 应用的 **Swift 代码生成**。一个事实来源;其他一切都是生成的。
|
||||
TypeBox 是一个 TypeScript 优先的模式库。我们用它来定义 **Gateway网关 WebSocket 协议**(握手、请求/响应、服务器事件)。这些模式驱动**运行时验证**、**JSON Schema 导出**以及 macOS 应用的 **Swift 代码生成**。一个事实来源;其他一切都是生成的。
|
||||
|
||||
如果您想了解更高层次的协议上下文,请从 [Gateway 架构](/concepts/architecture) 开始。
|
||||
如果你想了解更高层次的协议上下文,请从 [Gateway网关架构](/concepts/architecture) 开始。
|
||||
|
||||
## 心智模型(30 秒)
|
||||
|
||||
每条 Gateway WS 消息都是以下三种帧之一:
|
||||
每条 Gateway网关 WS 消息都是以下三种帧之一:
|
||||
|
||||
- **请求**:`{ type: "req", id, method, params }`
|
||||
- **响应**:`{ type: "res", id, ok, payload | error }`
|
||||
|
|
@ -33,7 +33,7 @@ TypeBox 是一个 TypeScript 优先的模式库。我们用它来定义 **Gatewa
|
|||
连接流程(最简):
|
||||
|
||||
```
|
||||
Client Gateway
|
||||
Client Gateway网关
|
||||
|---- req:connect -------->|
|
||||
|<---- res:hello-ok --------|
|
||||
|<---- event:tick ----------|
|
||||
|
|
@ -49,7 +49,7 @@ Client Gateway
|
|||
| 消息 | `send`、`poll`、`agent`、`agent.wait` | 有副作用的操作需要 `idempotencyKey` |
|
||||
| 聊天 | `chat.history`、`chat.send`、`chat.abort`、`chat.inject` | WebChat 使用这些 |
|
||||
| 会话 | `sessions.list`、`sessions.patch`、`sessions.delete` | 会话管理 |
|
||||
| 节点 | `node.list`、`node.invoke`、`node.pair.*` | Gateway WS + 节点操作 |
|
||||
| 节点 | `node.list`、`node.invoke`、`node.pair.*` | Gateway网关 WS + 节点操作 |
|
||||
| 事件 | `tick`、`presence`、`agent`、`chat`、`health`、`shutdown` | 服务器推送 |
|
||||
|
||||
权威列表位于 `src/gateway/server.ts`(`METHODS`、`EVENTS`)。
|
||||
|
|
@ -61,14 +61,14 @@ Client Gateway
|
|||
- 服务器握手 + 方法分发:`src/gateway/server.ts`
|
||||
- 节点客户端:`src/gateway/client.ts`
|
||||
- 生成的 JSON Schema:`dist/protocol.schema.json`
|
||||
- 生成的 Swift 模型:`apps/macos/Sources/OpenClawProtocol/GatewayModels.swift`
|
||||
- 生成的 Swift 模型:`apps/macos/Sources/OpenClawProtocol/Gateway网关Models.swift`
|
||||
|
||||
## 当前流水线
|
||||
|
||||
- `pnpm protocol:gen`
|
||||
- 将 JSON Schema(draft‑07)写入 `dist/protocol.schema.json`
|
||||
- `pnpm protocol:gen:swift`
|
||||
- 生成 Swift Gateway 模型
|
||||
- 生成 Swift Gateway网关模型
|
||||
- `pnpm protocol:check`
|
||||
- 运行两个生成器并验证输出已提交
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ Client Gateway
|
|||
|
||||
- **服务器端**:每个入站帧都通过 AJV 验证。握手仅接受参数匹配 `ConnectParams` 的 `connect` 请求。
|
||||
- **客户端**:JS 客户端在使用事件和响应帧之前进行验证。
|
||||
- **方法接口**:Gateway 在 `hello-ok` 中公布支持的 `methods` 和 `events`。
|
||||
- **方法接口**:Gateway网关在 `hello-ok` 中公布支持的 `methods` 和 `events`。
|
||||
|
||||
## 示例帧
|
||||
|
||||
|
|
@ -228,7 +228,7 @@ export const validateSystemEchoParams = ajv.compile<SystemEchoParams>(SystemEcho
|
|||
在 `src/gateway/server-methods/system.ts` 中添加处理器:
|
||||
|
||||
```ts
|
||||
export const systemHandlers: GatewayRequestHandlers = {
|
||||
export const systemHandlers: Gateway网关RequestHandlers = {
|
||||
"system.echo": ({ params, respond }) => {
|
||||
const text = String(params.text ?? "");
|
||||
respond(true, { ok: true, text });
|
||||
|
|
@ -252,7 +252,7 @@ pnpm protocol:check
|
|||
|
||||
Swift 生成器输出:
|
||||
|
||||
- 包含 `req`、`res`、`event` 和 `unknown` case 的 `GatewayFrame` 枚举
|
||||
- 包含 `req`、`res`、`event` 和 `unknown` case 的 `Gateway网关Frame` 枚举
|
||||
- 强类型的 payload 结构体/枚举
|
||||
- `ErrorCode` 值和 `GATEWAY_PROTOCOL_VERSION`
|
||||
|
||||
|
|
@ -268,7 +268,7 @@ Swift 生成器输出:
|
|||
|
||||
- 大多数对象使用 `additionalProperties: false` 以实现严格的 payload。
|
||||
- `NonEmptyString` 是 ID 和方法/事件名称的默认类型。
|
||||
- 顶层 `GatewayFrame` 在 `type` 上使用**鉴别器**。
|
||||
- 顶层 `Gateway网关Frame` 在 `type` 上使用**鉴别器**。
|
||||
- 有副作用的方法通常需要在参数中包含 `idempotencyKey`(示例:`send`、`poll`、`agent`、`chat.send`)。
|
||||
|
||||
## 实时 Schema JSON
|
||||
|
|
@ -277,7 +277,7 @@ Swift 生成器输出:
|
|||
|
||||
- https://raw.githubusercontent.com/openclaw/openclaw/main/dist/protocol.schema.json
|
||||
|
||||
## 当您更改模式时
|
||||
## 当你更改模式时
|
||||
|
||||
1. 更新 TypeBox 模式。
|
||||
2. 运行 `pnpm protocol:check`。
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 您正在更改向模型或用户展示时间戳的方式
|
||||
- 您正在调试消息或系统提示词输出中的时间格式问题
|
||||
- 你正在更改向模型或用户展示时间戳的方式
|
||||
- 你正在调试消息或系统提示词输出中的时间格式问题
|
||||
summary: 信封、提示词、工具和连接器中的日期与时间处理
|
||||
title: 日期与时间
|
||||
x-i18n:
|
||||
|
|
@ -28,7 +28,7 @@ OpenClaw 默认使用**主机本地时间作为传输时间戳**,并且**仅
|
|||
|
||||
此信封时间戳**默认为主机本地时间**,与提供商时区无关。
|
||||
|
||||
您可以覆盖此行为:
|
||||
你可以覆盖此行为:
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 需要检查原始模型输出中的推理泄漏
|
||||
- 希望在迭代开发时以监视模式运行 Gateway
|
||||
- 希望在迭代开发时以监视模式运行 Gateway网关
|
||||
- 需要可重复的调试工作流
|
||||
summary: 调试工具:监视模式、原始模型流和推理泄漏追踪
|
||||
title: 调试
|
||||
|
|
@ -35,9 +35,9 @@ x-i18n:
|
|||
|
||||
`/debug reset` 会清除所有覆盖项,恢复为磁盘上的配置。
|
||||
|
||||
## Gateway 监视模式
|
||||
## Gateway网关监视模式
|
||||
|
||||
要快速迭代,可在文件监视器下运行 Gateway:
|
||||
要快速迭代,可在文件监视器下运行 Gateway网关:
|
||||
|
||||
```bash
|
||||
pnpm gateway:watch --force
|
||||
|
|
@ -49,14 +49,14 @@ pnpm gateway:watch --force
|
|||
tsx watch src/entry.ts gateway --force
|
||||
```
|
||||
|
||||
在 `gateway:watch` 后添加任何 Gateway CLI 标志,它们会在每次重启时被透传。
|
||||
在 `gateway:watch` 后添加任何 Gateway网关 CLI 标志,它们会在每次重启时被透传。
|
||||
|
||||
## 开发配置文件 + 开发 Gateway(--dev)
|
||||
## 开发配置文件 + 开发 Gateway网关(--dev)
|
||||
|
||||
使用开发配置文件来隔离状态,搭建一个安全的、可随时丢弃的调试环境。有**两个** `--dev` 标志:
|
||||
|
||||
- **全局 `--dev`(配置文件):** 将状态隔离到 `~/.openclaw-dev`,并将 Gateway 默认端口设为 `19001`(派生端口随之偏移)。
|
||||
- **`gateway --dev`:告诉 Gateway 在缺少配置和工作区时自动创建默认配置 + 工作区**(并跳过 BOOTSTRAP.md)。
|
||||
- **全局 `--dev`(配置文件):** 将状态隔离到 `~/.openclaw-dev`,并将 Gateway网关默认端口设为 `19001`(派生端口随之偏移)。
|
||||
- **`gateway --dev`:告诉 Gateway网关在缺少配置和工作区时自动创建默认配置 + 工作区**(并跳过 BOOTSTRAP.md)。
|
||||
|
||||
推荐流程(开发配置文件 + 开发引导):
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ OPENCLAW_PROFILE=dev openclaw tui
|
|||
- `OPENCLAW_GATEWAY_PORT=19001`(浏览器/画布端口随之偏移)
|
||||
|
||||
2. **开发引导**(`gateway --dev`)
|
||||
- 如缺少配置则写入最小配置(`gateway.mode=local`,绑定回环地址)。
|
||||
- 如缺少配置则写入最小配置(`gateway.mode=local`,绑定 local loopback)。
|
||||
- 将 `agent.workspace` 设为开发工作区。
|
||||
- 设置 `agent.skipBootstrap=true`(不使用 BOOTSTRAP.md)。
|
||||
- 如缺少工作区文件则进行初始化:
|
||||
|
|
@ -99,7 +99,7 @@ OPENCLAW_PROFILE=dev openclaw gateway --dev --reset
|
|||
|
||||
`--reset` 会清除配置、凭据、会话和开发工作区(使用 `trash` 而非 `rm`),然后重新创建默认的开发环境。
|
||||
|
||||
提示:如果非开发 Gateway 已在运行(launchd/systemd),请先停止它:
|
||||
提示:如果非开发 Gateway网关已在运行(launchd/systemd),请先停止它:
|
||||
|
||||
```bash
|
||||
openclaw gateway stop
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ x-i18n:
|
|||
}
|
||||
```
|
||||
|
||||
更改标志后需重启 Gateway。
|
||||
更改标志后需重启 Gateway网关。
|
||||
|
||||
## 环境变量覆盖(一次性)
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ rg "telegram http error" /tmp/openclaw/openclaw-*.log
|
|||
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"
|
||||
```
|
||||
|
||||
对于远程 Gateway,你也可以使用 `openclaw logs --follow`(参见 [/cli/logs](/cli/logs))。
|
||||
对于远程 Gateway网关,你也可以使用 `openclaw logs --follow`(参见 [/cli/logs](/cli/logs))。
|
||||
|
||||
## 注意事项
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when:
|
||||
- 需要了解加载了哪些环境变量及其加载顺序
|
||||
- 正在调试 Gateway 中缺失的 API 密钥
|
||||
- 正在调试 Gateway网关中缺失的 API 密钥
|
||||
- 正在编写提供商认证或部署环境的文档
|
||||
summary: OpenClaw 从哪里加载环境变量及其优先级顺序
|
||||
title: 环境变量
|
||||
|
|
@ -20,7 +20,7 @@ OpenClaw 从多个来源获取环境变量。规则是**永远不覆盖已有的
|
|||
|
||||
## 优先级(从高到低)
|
||||
|
||||
1. **进程环境**(Gateway 进程从父 shell/守护进程继承的变量)。
|
||||
1. **进程环境**(Gateway网关进程从父 shell/守护进程继承的变量)。
|
||||
2. **当前工作目录下的 `.env`**(dotenv 默认行为;不覆盖已有值)。
|
||||
3. **全局 `.env`**,位于 `~/.openclaw/.env`(即 `$OPENCLAW_STATE_DIR/.env`;不覆盖已有值)。
|
||||
4. **配置文件中的 `env` 块**,位于 `~/.openclaw/openclaw.json`(仅在变量缺失时应用)。
|
||||
|
|
@ -83,6 +83,6 @@ OpenClaw 从多个来源获取环境变量。规则是**永远不覆盖已有的
|
|||
|
||||
## 相关内容
|
||||
|
||||
- [Gateway 配置](/gateway/configuration)
|
||||
- [Gateway网关配置](/gateway/configuration)
|
||||
- [常见问题:环境变量与 .env 加载](/help/faq#env-vars-and-env-loading)
|
||||
- [模型概览](/concepts/models)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
read_when: 修改上手引导向导步骤或配置 schema 端点时
|
||||
summary: 上手引导向导和配置 schema 的 RPC 协议说明
|
||||
title: 上手引导与配置协议
|
||||
read_when: 修改新手引导向导步骤或配置 schema 端点时
|
||||
summary: 新手引导向导和配置 schema 的 RPC 协议说明
|
||||
title: 新手引导与配置协议
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:24:58Z"
|
||||
model: claude-opus-4-5
|
||||
|
|
@ -11,19 +11,19 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# 上手引导 + 配置协议
|
||||
# 新手引导 + 配置协议
|
||||
|
||||
用途:在 CLI、macOS 应用和 Web UI 之间共享上手引导与配置界面。
|
||||
用途:在 CLI、macOS 应用和 Web UI 之间共享新手引导与配置界面。
|
||||
|
||||
## 组件
|
||||
|
||||
- 向导引擎(共享会话 + 提示 + 上手引导状态)。
|
||||
- CLI 上手引导使用与 UI 客户端相同的向导流程。
|
||||
- Gateway RPC 暴露向导 + 配置 schema 端点。
|
||||
- macOS 上手引导使用向导步骤模型。
|
||||
- 向导引擎(共享会话 + 提示 + 新手引导状态)。
|
||||
- CLI 新手引导使用与 UI 客户端相同的向导流程。
|
||||
- Gateway网关 RPC 暴露向导 + 配置 schema 端点。
|
||||
- macOS 新手引导使用向导步骤模型。
|
||||
- Web UI 根据 JSON Schema + UI 提示渲染配置表单。
|
||||
|
||||
## Gateway RPC
|
||||
## Gateway网关 RPC
|
||||
|
||||
- `wizard.start` 参数:`{ mode?: "local"|"remote", workspace?: string }`
|
||||
- `wizard.next` 参数:`{ sessionId, answer?: { stepId, value? } }`
|
||||
|
|
@ -44,4 +44,4 @@ x-i18n:
|
|||
|
||||
## 说明
|
||||
|
||||
- 本文档是跟踪上手引导/配置协议重构的唯一位置。
|
||||
- 本文档是跟踪新手引导/配置协议重构的唯一位置。
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ x-i18n:
|
|||
|
||||
## 背景
|
||||
|
||||
近期 Gateway 日志显示 `cron.add` 反复因无效参数(缺少 `sessionTarget`、`wakeMode`、`payload` 以及格式错误的 `schedule`)而失败。这表明至少有一个客户端(可能是智能体工具调用路径)正在发送包装过的或部分指定的任务载荷。此外,TypeScript、Gateway schema、CLI 标志和 UI 表单类型之间的 cron 提供商枚举存在偏差,同时 `cron.status` 的 UI 也存在不匹配问题(期望 `jobCount`,而 Gateway 返回的是 `jobs`)。
|
||||
近期 Gateway网关日志显示 `cron.add` 反复因无效参数(缺少 `sessionTarget`、`wakeMode`、`payload` 以及格式错误的 `schedule`)而失败。这表明至少有一个客户端(可能是智能体工具调用路径)正在发送包装过的或部分指定的任务载荷。此外,TypeScript、Gateway网关 schema、CLI 标志和 UI 表单类型之间的 cron 提供商枚举存在偏差,同时 `cron.status` 的 UI 也存在不匹配问题(期望 `jobCount`,而 Gateway网关返回的是 `jobs`)。
|
||||
|
||||
## 目标
|
||||
|
||||
- 通过标准化常见的包装载荷并推断缺失的 `kind` 字段,消除 `cron.add` 的 INVALID_REQUEST 错误。
|
||||
- 在 Gateway schema、cron 类型、CLI 文档和 UI 表单之间对齐 cron 提供商列表。
|
||||
- 在 Gateway网关 schema、cron 类型、CLI 文档和 UI 表单之间对齐 cron 提供商列表。
|
||||
- 明确智能体 cron 工具 schema,使 LLM 生成正确的任务载荷。
|
||||
- 修复 Control UI 中 cron 状态的任务计数显示。
|
||||
- 添加测试以覆盖标准化和工具行为。
|
||||
|
|
@ -35,17 +35,17 @@ x-i18n:
|
|||
|
||||
## 发现(当前差距)
|
||||
|
||||
- Gateway 中的 `CronPayloadSchema` 不包含 `signal` + `imessage`,而 TS 类型中包含它们。
|
||||
- Control UI 的 CronStatus 期望 `jobCount`,但 Gateway 返回的是 `jobs`。
|
||||
- Gateway网关中的 `CronPayloadSchema` 不包含 `signal` + `imessage`,而 TS 类型中包含它们。
|
||||
- Control UI 的 CronStatus 期望 `jobCount`,但 Gateway网关返回的是 `jobs`。
|
||||
- 智能体 cron 工具 schema 允许任意 `job` 对象,导致格式错误的输入。
|
||||
- Gateway 严格验证 `cron.add` 且不进行标准化,因此包装过的载荷会失败。
|
||||
- Gateway网关严格验证 `cron.add` 且不进行标准化,因此包装过的载荷会失败。
|
||||
|
||||
## 变更内容
|
||||
|
||||
- `cron.add` 和 `cron.update` 现在会标准化常见的包装结构并推断缺失的 `kind` 字段。
|
||||
- 智能体 cron 工具 schema 与 Gateway schema 保持一致,减少了无效载荷。
|
||||
- 提供商枚举已在 Gateway、CLI、UI 和 macOS 选择器之间对齐。
|
||||
- Control UI 使用 Gateway 的 `jobs` 计数字段显示状态。
|
||||
- 智能体 cron 工具 schema 与 Gateway网关 schema 保持一致,减少了无效载荷。
|
||||
- 提供商枚举已在 Gateway网关、CLI、UI 和 macOS 选择器之间对齐。
|
||||
- Control UI 使用 Gateway网关的 `jobs` 计数字段显示状态。
|
||||
|
||||
## 当前行为
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ x-i18n:
|
|||
|
||||
## 验证
|
||||
|
||||
- 监控 Gateway 日志,确认 `cron.add` INVALID_REQUEST 错误已减少。
|
||||
- 监控 Gateway网关日志,确认 `cron.add` INVALID_REQUEST 错误已减少。
|
||||
- 确认 Control UI 的 cron 状态在刷新后显示任务计数。
|
||||
|
||||
## 可选后续工作
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ last_updated: "2026-01-19"
|
|||
owner: openclaw
|
||||
status: 草稿
|
||||
summary: 计划:添加 OpenResponses /v1/responses 端点并平稳废弃 Chat Completions
|
||||
title: OpenResponses Gateway 计划
|
||||
title: OpenResponses Gateway网关计划
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:25:20Z"
|
||||
model: claude-opus-4-5
|
||||
|
|
@ -13,11 +13,11 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# OpenResponses Gateway 集成计划
|
||||
# OpenResponses Gateway网关集成计划
|
||||
|
||||
## 背景
|
||||
|
||||
OpenClaw Gateway 当前在 `/v1/chat/completions` 暴露了一个最小化的 OpenAI 兼容 Chat Completions 端点(参见 [OpenAI Chat Completions](/gateway/openai-http-api))。
|
||||
OpenClaw Gateway网关当前在 `/v1/chat/completions` 暴露了一个最小化的 OpenAI 兼容 Chat Completions 端点(参见 [OpenAI Chat Completions](/gateway/openai-http-api))。
|
||||
|
||||
Open Responses 是一个基于 OpenAI Responses API 的开放推理标准。它专为智能体工作流设计,使用基于项目的输入和语义化流式事件。OpenResponses 规范定义的是 `/v1/responses`,而非 `/v1/chat/completions`。
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ Open Responses 是一个基于 OpenAI Responses API 的开放推理标准。它
|
|||
|
||||
## 建议架构
|
||||
|
||||
- 添加 `src/gateway/open-responses.schema.ts`,仅包含 Zod schema(不引入 Gateway 依赖)。
|
||||
- 添加 `src/gateway/open-responses.schema.ts`,仅包含 Zod schema(不引入 Gateway网关依赖)。
|
||||
- 添加 `src/gateway/openresponses-http.ts`(或 `open-responses-http.ts`)用于 `/v1/responses`。
|
||||
- 保持 `src/gateway/openai-http.ts` 不变,作为旧版兼容适配器。
|
||||
- 添加配置 `gateway.http.endpoints.responses.enabled`(默认 `false`)。
|
||||
|
|
@ -89,7 +89,7 @@ Open Responses 是一个基于 OpenAI Responses API 的开放推理标准。它
|
|||
- `CreateResponseBody`
|
||||
- `ItemParam` + 消息内容部分联合类型
|
||||
- `ResponseResource`
|
||||
- Gateway 使用的流式事件结构
|
||||
- Gateway网关使用的流式事件结构
|
||||
- 将 schema 保存在单个隔离模块中,以避免漂移并支持未来的代码生成。
|
||||
|
||||
## 流式实现(第一阶段)
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ Hindsight 在此处的关键洞察:存储**叙事性的、自包含的事实**
|
|||
|
||||
### 为什么仍然拆分为库?
|
||||
|
||||
- 保持记忆逻辑可在无 Gateway/运行时的情况下测试
|
||||
- 保持记忆逻辑可在无 Gateway网关/运行时的情况下测试
|
||||
- 可在其他上下文中复用(本地脚本、未来的桌面应用等)
|
||||
|
||||
形态:
|
||||
|
|
|
|||
|
|
@ -17,21 +17,21 @@ x-i18n:
|
|||
|
||||
OpenClaw 支持通过 OAuth 和 API 密钥对模型提供商进行认证。对于 Anthropic 账户,我们推荐使用 **API 密钥**。对于 Claude 订阅访问,请使用 `claude setup-token` 创建的长期有效令牌。
|
||||
|
||||
参见 [/concepts/oauth](/concepts/oauth) 了解完整的 OAuth 流程和存储布局。
|
||||
参见 [/concepts/oauth](/concepts/oauth) 了解全部 OAuth 流程和存储布局。
|
||||
|
||||
## 推荐的 Anthropic 设置(API 密钥)
|
||||
|
||||
如果你直接使用 Anthropic,请使用 API 密钥。
|
||||
|
||||
1. 在 Anthropic 控制台中创建 API 密钥。
|
||||
2. 将其放置在 **Gateway 主机**(运行 `openclaw gateway` 的机器)上。
|
||||
2. 将其放置在 **Gateway网关主机**(运行 `openclaw gateway` 的机器)上。
|
||||
|
||||
```bash
|
||||
export ANTHROPIC_API_KEY="..."
|
||||
openclaw models status
|
||||
```
|
||||
|
||||
3. 如果 Gateway 在 systemd/launchd 下运行,建议将密钥放在 `~/.openclaw/.env` 中,以便守护进程能够读取:
|
||||
3. 如果 Gateway网关在 systemd/launchd 下运行,建议将密钥放在 `~/.openclaw/.env` 中,以便守护进程能够读取:
|
||||
|
||||
```bash
|
||||
cat >> ~/.openclaw/.env <<'EOF'
|
||||
|
|
@ -39,20 +39,20 @@ ANTHROPIC_API_KEY=...
|
|||
EOF
|
||||
```
|
||||
|
||||
然后重启守护进程(或重启 Gateway 进程)并重新检查:
|
||||
然后重启守护进程(或重启 Gateway网关进程)并重新检查:
|
||||
|
||||
```bash
|
||||
openclaw models status
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
如果你不想自行管理环境变量,上手引导向导可以为守护进程存储 API 密钥:`openclaw onboard`。
|
||||
如果你不想自行管理环境变量,新手引导向导可以为守护进程存储 API 密钥:`openclaw onboard`。
|
||||
|
||||
参见[帮助](/help)了解环境变量继承的详细信息(`env.shellEnv`、`~/.openclaw/.env`、systemd/launchd)。
|
||||
|
||||
## Anthropic:setup-token(订阅认证)
|
||||
|
||||
对于 Anthropic,推荐的方式是使用 **API 密钥**。如果你使用的是 Claude 订阅,也支持 setup-token 流程。在 **Gateway 主机**上运行:
|
||||
对于 Anthropic,推荐的方式是使用 **API 密钥**。如果你使用的是 Claude 订阅,也支持 setup-token 流程。在 **Gateway网关主机**上运行:
|
||||
|
||||
```bash
|
||||
claude setup-token
|
||||
|
|
@ -126,7 +126,7 @@ openclaw models auth order clear --provider anthropic
|
|||
|
||||
### "No credentials found"
|
||||
|
||||
如果 Anthropic 令牌配置缺失,请在 **Gateway 主机**上运行 `claude setup-token`,然后重新检查:
|
||||
如果 Anthropic 令牌配置缺失,请在 **Gateway网关主机**上运行 `claude setup-token`,然后重新检查:
|
||||
|
||||
```bash
|
||||
openclaw models status
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ OpenClaw 通过 `exec` 工具运行 shell 命令,并将长时间运行的任
|
|||
|
||||
## 子进程桥接
|
||||
|
||||
在 exec/process 工具之外启动长时间运行的子进程时(例如 CLI 重启或 Gateway 辅助进程),请挂载子进程桥接助手,以便终止信号能被正确转发,并在退出/出错时分离监听器。这可以避免在 systemd 上产生孤儿进程,并保持跨平台的关闭行为一致性。
|
||||
在 exec/process 工具之外启动长时间运行的子进程时(例如 CLI 重启或 Gateway网关辅助进程),请挂载子进程桥接助手,以便终止信号能被正确转发,并在退出/出错时分离监听器。这可以避免在 systemd 上产生孤儿进程,并保持跨平台的关闭行为一致性。
|
||||
|
||||
环境变量覆盖:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
read_when:
|
||||
- 在 macOS/iOS 上调试 Bonjour 发现问题
|
||||
- 更改 mDNS 服务类型、TXT 记录或发现相关的用户体验
|
||||
summary: Bonjour/mDNS 发现 + 调试(Gateway 信标、客户端及常见故障模式)
|
||||
summary: Bonjour/mDNS 发现 + 调试(Gateway网关信标、客户端及常见故障模式)
|
||||
title: Bonjour 发现
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:25:34Z"
|
||||
|
|
@ -15,21 +15,21 @@ x-i18n:
|
|||
|
||||
# Bonjour / mDNS 发现
|
||||
|
||||
OpenClaw 使用 Bonjour(mDNS / DNS‑SD)作为**仅限局域网的便捷方式**来发现活跃的 Gateway(WebSocket 端点)。这是尽力而为的机制,**不能**替代 SSH 或基于 Tailnet 的连接。
|
||||
OpenClaw 使用 Bonjour(mDNS / DNS‑SD)作为**仅限局域网的便捷方式**来发现活跃的 Gateway网关(WebSocket 端点)。这是尽力而为的机制,**不能**替代 SSH 或基于 Tailnet 的连接。
|
||||
|
||||
## 通过 Tailscale 实现广域 Bonjour(单播 DNS‑SD)
|
||||
|
||||
如果节点和 Gateway 处于不同网络,组播 mDNS 无法跨越网络边界。您可以通过切换到基于 Tailscale 的**单播 DNS‑SD**("广域 Bonjour")来保持相同的发现体验。
|
||||
如果节点和 Gateway网关处于不同网络,组播 mDNS 无法跨越网络边界。你可以通过切换到基于 Tailscale 的**单播 DNS‑SD**("广域 Bonjour")来保持相同的发现体验。
|
||||
|
||||
概要步骤:
|
||||
|
||||
1. 在 Gateway 主机上运行 DNS 服务器(可通过 Tailnet 访问)。
|
||||
1. 在 Gateway网关主机上运行 DNS 服务器(可通过 Tailnet 访问)。
|
||||
2. 在专用区域下为 `_openclaw-gw._tcp` 发布 DNS‑SD 记录(示例:`openclaw.internal.`)。
|
||||
3. 配置 Tailscale **分割 DNS**,使您选择的域名通过该 DNS 服务器为客户端(包括 iOS)解析。
|
||||
3. 配置 Tailscale **分割 DNS**,使你选择的域名通过该 DNS 服务器为客户端(包括 iOS)解析。
|
||||
|
||||
OpenClaw 支持任意发现域名;`openclaw.internal.` 仅为示例。iOS/Android 节点会同时浏览 `local.` 和您配置的广域域名。
|
||||
OpenClaw 支持任意发现域名;`openclaw.internal.` 仅为示例。iOS/Android 节点会同时浏览 `local.` 和你配置的广域域名。
|
||||
|
||||
### Gateway 配置(推荐)
|
||||
### Gateway网关配置(推荐)
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
@ -38,7 +38,7 @@ OpenClaw 支持任意发现域名;`openclaw.internal.` 仅为示例。iOS/Andr
|
|||
}
|
||||
```
|
||||
|
||||
### 一次性 DNS 服务器设置(Gateway 主机)
|
||||
### 一次性 DNS 服务器设置(Gateway网关主机)
|
||||
|
||||
```bash
|
||||
openclaw dns setup --apply
|
||||
|
|
@ -46,8 +46,8 @@ openclaw dns setup --apply
|
|||
|
||||
此命令会安装 CoreDNS 并将其配置为:
|
||||
|
||||
- 仅在 Gateway 的 Tailscale 接口上监听 53 端口
|
||||
- 从 `~/.openclaw/dns/<domain>.db` 提供您选择的域名服务(示例:`openclaw.internal.`)
|
||||
- 仅在 Gateway网关的 Tailscale 接口上监听 53 端口
|
||||
- 从 `~/.openclaw/dns/<domain>.db` 提供你选择的域名服务(示例:`openclaw.internal.`)
|
||||
|
||||
从 Tailnet 连接的机器上验证:
|
||||
|
||||
|
|
@ -60,36 +60,36 @@ dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short
|
|||
|
||||
在 Tailscale 管理控制台中:
|
||||
|
||||
- 添加指向 Gateway Tailnet IP 的名称服务器(UDP/TCP 53)。
|
||||
- 添加分割 DNS,使您的发现域名使用该名称服务器。
|
||||
- 添加指向 Gateway网关 Tailnet IP 的名称服务器(UDP/TCP 53)。
|
||||
- 添加分割 DNS,使你的发现域名使用该名称服务器。
|
||||
|
||||
客户端接受 Tailnet DNS 后,iOS 节点即可在您的发现域名中浏览 `_openclaw-gw._tcp`,无需组播。
|
||||
客户端接受 Tailnet DNS 后,iOS 节点即可在你的发现域名中浏览 `_openclaw-gw._tcp`,无需组播。
|
||||
|
||||
### Gateway 监听器安全(推荐)
|
||||
### Gateway网关监听器安全(推荐)
|
||||
|
||||
Gateway WS 端口(默认 `18789`)默认绑定到回环地址。若需局域网/Tailnet 访问,请显式绑定并保持认证启用。
|
||||
Gateway网关 WS 端口(默认 `18789`)默认绑定到 local loopback。若需局域网/Tailnet 访问,请显式绑定并保持认证启用。
|
||||
|
||||
对于仅限 Tailnet 的设置:
|
||||
|
||||
- 在 `~/.openclaw/openclaw.json` 中设置 `gateway.bind: "tailnet"`。
|
||||
- 重启 Gateway(或重启 macOS 菜单栏应用)。
|
||||
- 重启 Gateway网关(或重启 macOS 菜单栏应用)。
|
||||
|
||||
## 广播方
|
||||
|
||||
只有 Gateway 广播 `_openclaw-gw._tcp`。
|
||||
只有 Gateway网关广播 `_openclaw-gw._tcp`。
|
||||
|
||||
## 服务类型
|
||||
|
||||
- `_openclaw-gw._tcp` — Gateway 传输信标(供 macOS/iOS/Android 节点使用)。
|
||||
- `_openclaw-gw._tcp` — Gateway网关传输信标(供 macOS/iOS/Android 节点使用)。
|
||||
|
||||
## TXT 键(非机密提示)
|
||||
|
||||
Gateway 广播小型非机密提示以方便 UI 流程:
|
||||
Gateway网关广播小型非机密提示以方便 UI 流程:
|
||||
|
||||
- `role=gateway`
|
||||
- `displayName=<友好名称>`
|
||||
- `lanHost=<主机名>.local`
|
||||
- `gatewayPort=<端口>`(Gateway WS + HTTP)
|
||||
- `gatewayPort=<端口>`(Gateway网关 WS + HTTP)
|
||||
- `gatewayTls=1`(仅在启用 TLS 时)
|
||||
- `gatewayTlsSha256=<sha256>`(仅在启用 TLS 且指纹可用时)
|
||||
- `canvasPort=<端口>`(仅在启用 canvas 主机时;默认 `18793`)
|
||||
|
|
@ -113,9 +113,9 @@ Gateway 广播小型非机密提示以方便 UI 流程:
|
|||
|
||||
如果浏览正常但解析失败,通常是遇到了局域网策略或 mDNS 解析器问题。
|
||||
|
||||
## 在 Gateway 日志中调试
|
||||
## 在 Gateway网关日志中调试
|
||||
|
||||
Gateway 会写入滚动日志文件(启动时输出为 `gateway log file: ...`)。查找 `bonjour:` 行,特别是:
|
||||
Gateway网关会写入滚动日志文件(启动时输出为 `gateway log file: ...`)。查找 `bonjour:` 行,特别是:
|
||||
|
||||
- `bonjour: advertise failed ...`
|
||||
- `bonjour: ... name conflict resolved` / `hostname conflict resolved`
|
||||
|
|
@ -127,8 +127,8 @@ iOS 节点使用 `NWBrowser` 来发现 `_openclaw-gw._tcp`。
|
|||
|
||||
要获取日志:
|
||||
|
||||
- 设置 → Gateway → 高级 → **发现调试日志**
|
||||
- 设置 → Gateway → 高级 → **发现日志** → 复现问题 → **复制**
|
||||
- 设置 → Gateway网关 → 高级 → **发现调试日志**
|
||||
- 设置 → Gateway网关 → 高级 → **发现日志** → 复现问题 → **复制**
|
||||
|
||||
日志包含浏览器状态转换和结果集变化。
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ iOS 节点使用 `NWBrowser` 来发现 `_openclaw-gw._tcp`。
|
|||
- **Bonjour 无法跨网络**:请使用 Tailnet 或 SSH。
|
||||
- **组播被阻止**:某些 Wi‑Fi 网络会禁用 mDNS。
|
||||
- **睡眠 / 接口变动**:macOS 可能会临时丢失 mDNS 结果;请重试。
|
||||
- **浏览正常但解析失败**:保持机器名称简单(避免使用表情符号或标点符号),然后重启 Gateway。服务实例名称来源于主机名,因此过于复杂的名称可能会导致某些解析器混淆。
|
||||
- **浏览正常但解析失败**:保持机器名称简单(避免使用表情符号或标点符号),然后重启 Gateway网关。服务实例名称来源于主机名,因此过于复杂的名称可能会导致某些解析器混淆。
|
||||
|
||||
## 转义的实例名称(`\032`)
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ Bonjour/DNS‑SD 经常将服务实例名称中的字节转义为十进制 `\DDD
|
|||
## 禁用 / 配置
|
||||
|
||||
- `OPENCLAW_DISABLE_BONJOUR=1` 禁用广播(旧版:`OPENCLAW_DISABLE_BONJOUR`)。
|
||||
- `~/.openclaw/openclaw.json` 中的 `gateway.bind` 控制 Gateway 绑定模式。
|
||||
- `~/.openclaw/openclaw.json` 中的 `gateway.bind` 控制 Gateway网关绑定模式。
|
||||
- `OPENCLAW_SSH_PORT` 覆盖 TXT 中广播的 SSH 端口(旧版:`OPENCLAW_SSH_PORT`)。
|
||||
- `OPENCLAW_TAILNET_DNS` 在 TXT 中发布 MagicDNS 提示(旧版:`OPENCLAW_TAILNET_DNS`)。
|
||||
- `OPENCLAW_CLI_PATH` 覆盖广播的 CLI 路径(旧版:`OPENCLAW_CLI_PATH`)。
|
||||
|
|
@ -157,4 +157,4 @@ Bonjour/DNS‑SD 经常将服务实例名称中的字节转义为十进制 `\DDD
|
|||
## 相关文档
|
||||
|
||||
- 发现策略和传输选择:[发现](/gateway/discovery)
|
||||
- 节点配对 + 审批:[Gateway 配对](/gateway/pairing)
|
||||
- 节点配对 + 审批:[Gateway网关配对](/gateway/pairing)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
read_when:
|
||||
- 构建或调试节点客户端(iOS/Android/macOS 节点模式)
|
||||
- 排查配对或桥接认证故障
|
||||
- 审计 Gateway 暴露的节点接口
|
||||
- 审计 Gateway网关暴露的节点接口
|
||||
summary: 桥接协议(旧版节点):TCP JSONL、配对、作用域 RPC
|
||||
title: 桥接协议
|
||||
x-i18n:
|
||||
|
|
@ -16,18 +16,18 @@ x-i18n:
|
|||
|
||||
# 桥接协议(旧版节点传输)
|
||||
|
||||
桥接协议是一种**旧版**节点传输方式(TCP JSONL)。新的节点客户端应改用统一的 Gateway WebSocket 协议。
|
||||
桥接协议是一种**旧版**节点传输方式(TCP JSONL)。新的节点客户端应改用统一的 Gateway网关 WebSocket 协议。
|
||||
|
||||
如果你正在构建操作端或节点客户端,请使用 [Gateway 协议](/gateway/protocol)。
|
||||
如果你正在构建操作端或节点客户端,请使用 [Gateway网关协议](/gateway/protocol)。
|
||||
|
||||
**注意:** 当前版本的 OpenClaw 不再附带 TCP 桥接监听器;本文档仅作历史参考保留。旧版 `bridge.*` 配置键已不再属于配置模式的一部分。
|
||||
|
||||
## 为什么有两种协议
|
||||
|
||||
- **安全边界**:桥接仅暴露一个小型允许列表,而非完整的 Gateway API 接口。
|
||||
- **配对与节点身份**:节点准入由 Gateway 管理,并与每个节点的令牌绑定。
|
||||
- **发现体验**:节点可以通过局域网上的 Bonjour 发现 Gateway,或通过 tailnet 直接连接。
|
||||
- **回环 WS**:完整的 WS 控制平面保持在本地,除非通过 SSH 隧道转发。
|
||||
- **安全边界**:桥接仅暴露一个小型允许列表,而非完整的 Gateway网关 API 接口。
|
||||
- **配对与节点身份**:节点准入由 Gateway网关管理,并与每个节点的令牌绑定。
|
||||
- **发现体验**:节点可以通过局域网上的 Bonjour 发现 Gateway网关,或通过 tailnet 直接连接。
|
||||
- **local loopback WS**:完整的 WS 控制平面保持在本地,除非通过 SSH 隧道转发。
|
||||
|
||||
## 传输方式
|
||||
|
||||
|
|
@ -40,20 +40,20 @@ x-i18n:
|
|||
## 握手与配对
|
||||
|
||||
1. 客户端发送 `hello`,附带节点元数据和令牌(如果已配对)。
|
||||
2. 如果未配对,Gateway 回复 `error`(`NOT_PAIRED`/`UNAUTHORIZED`)。
|
||||
2. 如果未配对,Gateway网关回复 `error`(`NOT_PAIRED`/`UNAUTHORIZED`)。
|
||||
3. 客户端发送 `pair-request`。
|
||||
4. Gateway 等待审批,然后发送 `pair-ok` 和 `hello-ok`。
|
||||
4. Gateway网关等待审批,然后发送 `pair-ok` 和 `hello-ok`。
|
||||
|
||||
`hello-ok` 返回 `serverName`,可能包含 `canvasHostUrl`。
|
||||
|
||||
## 帧类型
|
||||
|
||||
客户端 → Gateway:
|
||||
客户端 → Gateway网关:
|
||||
|
||||
- `req` / `res`:作用域 Gateway RPC(聊天、会话、配置、健康检查、语音唤醒、skills.bins)
|
||||
- `req` / `res`:作用域 Gateway网关 RPC(聊天、会话、配置、健康检查、语音唤醒、skills.bins)
|
||||
- `event`:节点信号(语音转录、智能体请求、聊天订阅、执行生命周期)
|
||||
|
||||
Gateway → 客户端:
|
||||
Gateway网关 → 客户端:
|
||||
|
||||
- `invoke` / `invoke-res`:节点命令(`canvas.*`、`camera.*`、`screen.record`、`location.get`、`sms.send`)
|
||||
- `event`:已订阅会话的聊天更新
|
||||
|
|
@ -63,7 +63,7 @@ Gateway → 客户端:
|
|||
|
||||
## 执行生命周期事件
|
||||
|
||||
节点可以发出 `exec.finished` 或 `exec.denied` 事件以展示 system.run 活动。这些会映射为 Gateway 中的系统事件。(旧版节点可能仍会发出 `exec.started`。)
|
||||
节点可以发出 `exec.finished` 或 `exec.denied` 事件以展示 system.run 活动。这些会映射为 Gateway网关中的系统事件。(旧版节点可能仍会发出 `exec.started`。)
|
||||
|
||||
有效载荷字段(除特别说明外均为可选):
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ Codex CLI 同样开箱即用:
|
|||
openclaw agent --message "hi" --model codex-cli/gpt-5.2-codex
|
||||
```
|
||||
|
||||
如果你的 Gateway 在 launchd/systemd 下运行且 PATH 较精简,只需添加命令路径:
|
||||
如果你的 Gateway网关在 launchd/systemd 下运行且 PATH 较精简,只需添加命令路径:
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@ x-i18n:
|
|||
},
|
||||
},
|
||||
|
||||
// Gateway + 网络
|
||||
// Gateway网关 + 网络
|
||||
gateway: {
|
||||
mode: "local",
|
||||
port: 18789,
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ OpenClaw 从 `~/.openclaw/openclaw.json` 读取可选的 **JSON5** 配置(支
|
|||
## 严格配置验证
|
||||
|
||||
OpenClaw 只接受完全匹配 schema 的配置。
|
||||
未知键、类型错误或无效值会导致 Gateway **拒绝启动**以确保安全。
|
||||
未知键、类型错误或无效值会导致 Gateway网关 **拒绝启动**以确保安全。
|
||||
|
||||
验证失败时:
|
||||
|
||||
- Gateway 不会启动。
|
||||
- Gateway网关不会启动。
|
||||
- 只允许诊断命令(例如:`openclaw doctor`、`openclaw logs`、`openclaw health`、`openclaw status`、`openclaw service`、`openclaw help`)。
|
||||
- 运行 `openclaw doctor` 查看具体问题。
|
||||
- 运行 `openclaw doctor --fix`(或 `--yes`)应用迁移/修复。
|
||||
|
|
@ -43,7 +43,7 @@ Doctor 不会写入任何更改,除非你明确选择了 `--fix`/`--yes`。
|
|||
|
||||
## Schema + UI 提示
|
||||
|
||||
Gateway 通过 `config.schema` 暴露配置的 JSON Schema 表示,供 UI 编辑器使用。
|
||||
Gateway网关通过 `config.schema` 暴露配置的 JSON Schema 表示,供 UI 编辑器使用。
|
||||
控制台 UI 根据此 schema 渲染表单,并提供 **Raw JSON** 编辑器作为应急手段。
|
||||
|
||||
渠道插件和扩展可以为其配置注册 schema + UI 提示,因此渠道设置
|
||||
|
|
@ -53,8 +53,8 @@ Gateway 通过 `config.schema` 暴露配置的 JSON Schema 表示,供 UI 编
|
|||
|
||||
## 应用 + 重启(RPC)
|
||||
|
||||
使用 `config.apply` 在一步中验证 + 写入完整配置并重启 Gateway。
|
||||
它会写入重启哨兵文件,并在 Gateway 恢复后 ping 最后活跃的会话。
|
||||
使用 `config.apply` 在一步中验证 + 写入完整配置并重启 Gateway网关。
|
||||
它会写入重启哨兵文件,并在 Gateway网关恢复后 ping 最后活跃的会话。
|
||||
|
||||
警告:`config.apply` 会替换**整个配置**。如果你只想更改部分键,
|
||||
请使用 `config.patch` 或 `openclaw config set`。请备份 `~/.openclaw/openclaw.json`。
|
||||
|
|
@ -88,7 +88,7 @@ openclaw gateway call config.apply --params '{
|
|||
- `null` 删除键
|
||||
- 数组替换
|
||||
与 `config.apply` 类似,它会验证、写入配置、存储重启哨兵,并调度
|
||||
Gateway 重启(当提供 `sessionKey` 时可选择唤醒)。
|
||||
Gateway网关重启(当提供 `sessionKey` 时可选择唤醒)。
|
||||
|
||||
参数:
|
||||
|
||||
|
|
@ -294,7 +294,7 @@ OpenClaw 从父进程(shell、launchd/systemd、CI 等)读取环境变量。
|
|||
}
|
||||
```
|
||||
|
||||
参见 [/environment](/environment) 了解完整的优先级和来源。
|
||||
参见 [/environment](/environment) 了解全部优先级和来源。
|
||||
|
||||
### `env.shellEnv`(可选)
|
||||
|
||||
|
|
@ -406,7 +406,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
### `agents.list[].identity`
|
||||
|
||||
用于默认值和用户体验的可选每智能体身份标识。由 macOS 上手引导助手写入。
|
||||
用于默认值和用户体验的可选每智能体身份标识。由 macOS 新手引导助手写入。
|
||||
|
||||
如果设置了,OpenClaw 会推导默认值(仅在你未明确设置时):
|
||||
|
||||
|
|
@ -484,7 +484,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
### `channels.whatsapp.dmPolicy`
|
||||
|
||||
控制 WhatsApp 私聊(DM)的处理方式:
|
||||
控制 WhatsApp 私聊(私信)的处理方式:
|
||||
|
||||
- `"pairing"`(默认):未知发送者会收到配对码;所有者必须批准
|
||||
- `"allowlist"`:仅允许 `channels.whatsapp.allowFrom`(或已配对的允许存储)中的发送者
|
||||
|
|
@ -536,7 +536,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
### `channels.whatsapp.accounts`(多账号)
|
||||
|
||||
在一个 Gateway 中运行多个 WhatsApp 账号:
|
||||
在一个 Gateway网关中运行多个 WhatsApp 账号:
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
@ -734,7 +734,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
### 多智能体路由(`agents.list` + `bindings`)
|
||||
|
||||
在一个 Gateway 中运行多个隔离的智能体(独立的工作区、`agentDir`、会话)。
|
||||
在一个 Gateway网关中运行多个隔离的智能体(独立的工作区、`agentDir`、会话)。
|
||||
入站消息通过绑定路由到智能体。
|
||||
|
||||
- `agents.list[]`:每智能体覆盖。
|
||||
|
|
@ -783,7 +783,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
#### 每智能体访问配置(多智能体)
|
||||
|
||||
每个智能体可以携带自己的沙盒 + 工具策略。用于在一个 Gateway 中混合访问级别:
|
||||
每个智能体可以携带自己的沙盒 + 工具策略。用于在一个 Gateway网关中混合访问级别:
|
||||
|
||||
- **完全访问**(个人智能体)
|
||||
- **只读**工具 + 工作区
|
||||
|
|
@ -1011,7 +1011,7 @@ OpenClaw 在以下位置存储**每个智能体的**认证配置文件(OAuth +
|
|||
|
||||
### `web`(WhatsApp Web 渠道运行时)
|
||||
|
||||
WhatsApp 通过 Gateway 的 Web 渠道(Baileys Web)运行。当存在已链接的会话时自动启动。
|
||||
WhatsApp 通过 Gateway网关的 Web 渠道(Baileys Web)运行。当存在已链接的会话时自动启动。
|
||||
设置 `web.enabled: false` 使其默认关闭。
|
||||
|
||||
```json5
|
||||
|
|
@ -1099,7 +1099,7 @@ OpenClaw 仅在存在 `channels.telegram` 配置段时启动 Telegram。机器
|
|||
草稿流式传输说明:
|
||||
|
||||
- 使用 Telegram `sendMessageDraft`(草稿气泡,不是真正的消息)。
|
||||
- 需要**私聊话题**(DM 中的 message_thread_id;机器人已启用话题)。
|
||||
- 需要**私聊话题**(私信 中的 message_thread_id;机器人已启用话题)。
|
||||
- `/reasoning stream` 将推理过程流式传输到草稿中,然后发送最终答案。
|
||||
重试策略默认值和行为记录在[重试策略](/concepts/retry)中。
|
||||
|
||||
|
|
@ -1611,7 +1611,7 @@ WhatsApp 入站前缀通过 `channels.whatsapp.messagePrefix` 配置(已弃用
|
|||
### `talk`
|
||||
|
||||
Talk 模式(macOS/iOS/Android)的默认值。语音 ID 在未设置时回退到 `ELEVENLABS_VOICE_ID` 或 `SAG_VOICE_ID`。
|
||||
`apiKey` 在未设置时回退到 `ELEVENLABS_API_KEY`(或 Gateway 的 shell 配置文件)。
|
||||
`apiKey` 在未设置时回退到 `ELEVENLABS_API_KEY`(或 Gateway网关的 shell 配置文件)。
|
||||
`voiceAliases` 允许 Talk 指令使用友好名称(例如 `"voice":"Clawd"`)。
|
||||
|
||||
```json5
|
||||
|
|
@ -2721,7 +2721,7 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|||
- `per-account-channel-peer`:按账号 + 渠道 + 发送者隔离私聊(推荐用于多账号收件箱)。
|
||||
- `identityLinks`:将规范 id 映射到提供商前缀的对等方,以便在使用 `per-peer`、`per-channel-peer` 或 `per-account-channel-peer` 时同一人跨渠道共享私聊会话。
|
||||
- 示例:`alice: ["telegram:123456789", "discord:987654321012345678"]`。
|
||||
- `reset`:主重置策略。默认为 Gateway 主机上本地时间凌晨 4:00 每日重置。
|
||||
- `reset`:主重置策略。默认为 Gateway网关主机上本地时间凌晨 4:00 每日重置。
|
||||
- `mode`:`daily` 或 `idle`(当存在 `reset` 时默认:`daily`)。
|
||||
- `atHour`:本地小时(0-23)作为每日重置边界。
|
||||
- `idleMinutes`:滑动空闲窗口(分钟)。当 daily + idle 都配置时,先到期的获胜。
|
||||
|
|
@ -2732,23 +2732,23 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|||
- `sendPolicy.default`:无规则匹配时的 `allow` 或 `deny` 回退。
|
||||
- `sendPolicy.rules[]`:按 `channel`、`chatType`(`direct|group|room`)或 `keyPrefix`(例如 `cron:`)匹配。第一个 deny 获胜;否则 allow。
|
||||
|
||||
### `skills`(技能配置)
|
||||
### `skills`(Skills配置)
|
||||
|
||||
控制内置白名单、安装偏好、额外技能文件夹和每技能覆盖。适用于**内置**技能和 `~/.openclaw/skills`(工作区技能在名称冲突时仍然优先)。
|
||||
控制内置白名单、安装偏好、额外 Skills 文件夹和每 Skills 覆盖。适用于**内置**Skills 和 `~/.openclaw/skills`(工作区 Skills 在名称冲突时仍然优先)。
|
||||
|
||||
字段:
|
||||
|
||||
- `allowBundled`:可选的**仅内置**技能白名单。如果设置,仅那些内置技能符合条件(管理/工作区技能不受影响)。
|
||||
- `load.extraDirs`:额外要扫描的技能目录(最低优先级)。
|
||||
- `allowBundled`:可选的**仅内置**Skills 白名单。如果设置,仅那些内置 Skills 符合条件(管理/工作区 Skills 不受影响)。
|
||||
- `load.extraDirs`:额外要扫描的 Skills 目录(最低优先级)。
|
||||
- `install.preferBrew`:可用时优先使用 brew 安装程序(默认:true)。
|
||||
- `install.nodeManager`:node 安装偏好(`npm` | `pnpm` | `yarn`,默认:npm)。
|
||||
- `entries.<skillKey>`:每技能配置覆盖。
|
||||
- `entries.<skillKey>`:每 Skills配置覆盖。
|
||||
|
||||
每技能字段:
|
||||
每 Skills 字段:
|
||||
|
||||
- `enabled`:设为 `false` 禁用技能,即使它是内置/已安装的。
|
||||
- `enabled`:设为 `false` 禁用 Skills,即使它是内置/已安装的。
|
||||
- `env`:为智能体运行注入的环境变量(仅在尚未设置时)。
|
||||
- `apiKey`:对于声明了主环境变量的技能的可选便利字段(例如 `nano-banana-pro` → `GEMINI_API_KEY`)。
|
||||
- `apiKey`:对于声明了主环境变量的 Skills 的可选便利字段(例如 `nano-banana-pro` → `GEMINI_API_KEY`)。
|
||||
|
||||
示例:
|
||||
|
||||
|
|
@ -2779,8 +2779,8 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|||
|
||||
### `plugins`(扩展)
|
||||
|
||||
控制插件发现、允许/拒绝和每插件配置。插件从 `~/.openclaw/extensions`、`<workspace>/.openclaw/extensions` 以及任何 `plugins.load.paths` 条目加载。**配置更改需要重启 Gateway。**
|
||||
参见 [/plugin](/plugin) 了解完整用法。
|
||||
控制插件发现、允许/拒绝和每插件配置。插件从 `~/.openclaw/extensions`、`<workspace>/.openclaw/extensions` 以及任何 `plugins.load.paths` 条目加载。**配置更改需要重启 Gateway网关。**
|
||||
参见 [/plugin](/plugin) 了解全部用法。
|
||||
|
||||
字段:
|
||||
|
||||
|
|
@ -2816,7 +2816,7 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|||
|
||||
### `browser`(OpenClaw 管理的浏览器)
|
||||
|
||||
OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge/Chromium 实例并暴露一个小型回环控制服务。
|
||||
OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge/Chromium 实例并暴露一个小型 local loopback 控制服务。
|
||||
配置文件可以通过 `profiles.<name>.cdpUrl` 指向**远程** Chromium 浏览器。远程配置文件为仅附加模式(start/stop/reset 被禁用)。
|
||||
|
||||
`browser.cdpUrl` 保留用于旧版单配置文件配置,以及作为仅设置 `cdpPort` 的配置文件的基础 scheme/host。
|
||||
|
|
@ -2825,10 +2825,10 @@ OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge
|
|||
|
||||
- enabled:`true`
|
||||
- evaluateEnabled:`true`(设为 `false` 禁用 `act:evaluate` 和 `wait --fn`)
|
||||
- 控制服务:仅回环(端口从 `gateway.port` 派生,默认 `18791`)
|
||||
- 控制服务:仅 local loopback(端口从 `gateway.port` 派生,默认 `18791`)
|
||||
- CDP URL:`http://127.0.0.1:18792`(控制服务 + 1,旧版单配置文件)
|
||||
- 配置文件颜色:`#FF4500`(龙虾橙)
|
||||
- 注意:控制服务器由运行中的 Gateway(OpenClaw.app 菜单栏或 `openclaw gateway`)启动。
|
||||
- 注意:控制服务器由运行中的 Gateway网关(OpenClaw.app 菜单栏或 `openclaw gateway`)启动。
|
||||
- 自动检测顺序:如果为 Chromium 内核则使用默认浏览器;否则 Chrome → Brave → Edge → Chromium → Chrome Canary。
|
||||
|
||||
```json5
|
||||
|
|
@ -2873,9 +2873,9 @@ OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge
|
|||
}
|
||||
```
|
||||
|
||||
### `gateway`(Gateway 服务器模式 + 绑定)
|
||||
### `gateway`(Gateway网关服务器模式 + 绑定)
|
||||
|
||||
使用 `gateway.mode` 明确声明此机器是否应运行 Gateway。
|
||||
使用 `gateway.mode` 明确声明此机器是否应运行 Gateway网关。
|
||||
|
||||
默认值:
|
||||
|
||||
|
|
@ -2913,7 +2913,7 @@ OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge
|
|||
|
||||
信任的代理:
|
||||
|
||||
- `gateway.trustedProxies`:在 Gateway 前面终止 TLS 的反向代理 IP 列表。
|
||||
- `gateway.trustedProxies`:在 Gateway网关前面终止 TLS 的反向代理 IP 列表。
|
||||
- 当连接来自这些 IP 之一时,OpenClaw 使用 `x-forwarded-for`(或 `x-real-ip`)来确定客户端 IP,用于本地配对检查和 HTTP 认证/本地检查。
|
||||
- 仅列出你完全控制的代理,并确保它们**覆盖**传入的 `x-forwarded-for`。
|
||||
|
||||
|
|
@ -2923,8 +2923,8 @@ OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge
|
|||
- `gateway.port` 控制用于 WebSocket + HTTP(控制台 UI、hooks、A2UI)的单一多路复用端口。
|
||||
- OpenAI Chat Completions 端点:**默认禁用**;通过 `gateway.http.endpoints.chatCompletions.enabled: true` 启用。
|
||||
- 优先级:`--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > 默认 `18789`。
|
||||
- 默认需要 Gateway 认证(token/密码或 Tailscale Serve 身份)。非回环绑定需要共享 token/密码。
|
||||
- 上手引导向导默认生成 gateway token(即使在回环上)。
|
||||
- 默认需要 Gateway网关认证(token/密码或 Tailscale Serve 身份)。非 local loopback 绑定需要共享 token/密码。
|
||||
- 新手引导向导默认生成 gateway token(即使在 local loopback 上)。
|
||||
- `gateway.remote.token` **仅**用于远程 CLI 调用;它不启用本地 gateway 认证。`gateway.token` 被忽略。
|
||||
|
||||
认证和 Tailscale:
|
||||
|
|
@ -2934,18 +2934,18 @@ OpenClaw 可以为 OpenClaw 启动一个**专用、隔离的** Chrome/Brave/Edge
|
|||
- 当设置了 `gateway.auth.mode` 时,仅接受该方法(加上可选的 Tailscale 头部)。
|
||||
- `gateway.auth.password` 可在此设置,或通过 `OPENCLAW_GATEWAY_PASSWORD`(推荐)。
|
||||
- `gateway.auth.allowTailscale` 允许 Tailscale Serve 身份头部
|
||||
(`tailscale-user-login`)在请求通过回环到达且带有 `x-forwarded-for`、
|
||||
(`tailscale-user-login`)在请求通过 local loopback 到达且带有 `x-forwarded-for`、
|
||||
`x-forwarded-proto` 和 `x-forwarded-host` 时满足认证。OpenClaw 在接受之前
|
||||
通过 `tailscale whois` 解析 `x-forwarded-for` 地址来验证身份。为 `true` 时,
|
||||
Serve 请求不需要 token/密码;设为 `false` 要求显式凭据。当
|
||||
`tailscale.mode = "serve"` 且认证模式不是 `password` 时默认为 `true`。
|
||||
- `gateway.tailscale.mode: "serve"` 使用 Tailscale Serve(仅 tailnet,回环绑定)。
|
||||
- `gateway.tailscale.mode: "serve"` 使用 Tailscale Serve(仅 tailnet,local loopback 绑定)。
|
||||
- `gateway.tailscale.mode: "funnel"` 公开暴露仪表板;需要认证。
|
||||
- `gateway.tailscale.resetOnExit` 在关闭时重置 Serve/Funnel 配置。
|
||||
|
||||
远程客户端默认值(CLI):
|
||||
|
||||
- `gateway.remote.url` 设置 `gateway.mode = "remote"` 时 CLI 调用的默认 Gateway WebSocket URL。
|
||||
- `gateway.remote.url` 设置 `gateway.mode = "remote"` 时 CLI 调用的默认 Gateway网关 WebSocket URL。
|
||||
- `gateway.remote.transport` 选择 macOS 远程传输(`ssh` 默认,`direct` 用于 ws/wss)。使用 `direct` 时,`gateway.remote.url` 必须为 `ws://` 或 `wss://`。`ws://host` 默认端口 `18789`。
|
||||
- `gateway.remote.token` 提供远程调用的 token(不需要认证时留空)。
|
||||
- `gateway.remote.password` 提供远程调用的密码(不需要认证时留空)。
|
||||
|
|
@ -2986,13 +2986,13 @@ macOS 应用行为:
|
|||
|
||||
### `gateway.reload`(配置热重载)
|
||||
|
||||
Gateway 监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自动应用更改。
|
||||
Gateway网关监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自动应用更改。
|
||||
|
||||
模式:
|
||||
|
||||
- `hybrid`(默认):安全更改热应用;关键更改重启 Gateway。
|
||||
- `hybrid`(默认):安全更改热应用;关键更改重启 Gateway网关。
|
||||
- `hot`:仅应用热安全更改;需要重启时记录日志。
|
||||
- `restart`:任何配置更改都重启 Gateway。
|
||||
- `restart`:任何配置更改都重启 Gateway网关。
|
||||
- `off`:禁用热重载。
|
||||
|
||||
```json5
|
||||
|
|
@ -3012,7 +3012,7 @@ Gateway 监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自
|
|||
|
||||
- `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)
|
||||
|
||||
热应用(无需完全重启 Gateway):
|
||||
热应用(无需完全重启 Gateway网关):
|
||||
|
||||
- `hooks`(webhook 认证/路径/映射)+ `hooks.gmail`(Gmail 监视器重启)
|
||||
- `browser`(浏览器控制服务器重启)
|
||||
|
|
@ -3022,7 +3022,7 @@ Gateway 监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自
|
|||
- `telegram`、`discord`、`signal`、`imessage`(渠道重启)
|
||||
- `agent`、`models`、`routing`、`messages`、`session`、`whatsapp`、`logging`、`skills`、`ui`、`talk`、`identity`、`wizard`(动态读取)
|
||||
|
||||
需要完全重启 Gateway:
|
||||
需要完全重启 Gateway网关:
|
||||
|
||||
- `gateway`(端口/绑定/认证/控制台 UI/tailscale)
|
||||
- `bridge`(旧版)
|
||||
|
|
@ -3033,7 +3033,7 @@ Gateway 监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自
|
|||
|
||||
### 多实例隔离
|
||||
|
||||
要在一台主机上运行多个 Gateway(用于冗余或救援机器人),请隔离每个实例的状态 + 配置并使用唯一端口:
|
||||
要在一台主机上运行多个 Gateway网关(用于冗余或救援机器人),请隔离每个实例的状态 + 配置并使用唯一端口:
|
||||
|
||||
- `OPENCLAW_CONFIG_PATH`(每实例配置)
|
||||
- `OPENCLAW_STATE_DIR`(会话/凭据)
|
||||
|
|
@ -3045,8 +3045,8 @@ Gateway 监视 `~/.openclaw/openclaw.json`(或 `OPENCLAW_CONFIG_PATH`)并自
|
|||
- `openclaw --dev …` → 使用 `~/.openclaw-dev` + 端口从基础 `19001` 偏移
|
||||
- `openclaw --profile <name> …` → 使用 `~/.openclaw-<name>`(端口通过配置/环境变量/标志)
|
||||
|
||||
参见 [Gateway 运维手册](/gateway) 了解派生的端口映射(gateway/browser/canvas)。
|
||||
参见[多 Gateway](/gateway/multiple-gateways) 了解浏览器/CDP 端口隔离细节。
|
||||
参见 [Gateway网关运维手册](/gateway) 了解派生的端口映射(gateway/browser/canvas)。
|
||||
参见[多 Gateway网关](/gateway/multiple-gateways) 了解浏览器/CDP 端口隔离细节。
|
||||
|
||||
示例:
|
||||
|
||||
|
|
@ -3056,9 +3056,9 @@ OPENCLAW_STATE_DIR=~/.openclaw-a \
|
|||
openclaw gateway --port 19001
|
||||
```
|
||||
|
||||
### `hooks`(Gateway webhook)
|
||||
### `hooks`(Gateway网关 webhook)
|
||||
|
||||
在 Gateway HTTP 服务器上启用简单的 HTTP webhook 端点。
|
||||
在 Gateway网关 HTTP 服务器上启用简单的 HTTP webhook 端点。
|
||||
|
||||
默认值:
|
||||
|
||||
|
|
@ -3151,12 +3151,12 @@ Gmail hook 的模型覆盖:
|
|||
- 启动时,如果配置的模型不在模型目录或白名单中,会发出警告。
|
||||
- `hooks.gmail.thinking` 设置 Gmail hook 的默认思考级别,被每 hook 的 `thinking` 覆盖。
|
||||
|
||||
Gateway 自动启动:
|
||||
Gateway网关自动启动:
|
||||
|
||||
- 如果 `hooks.enabled=true` 且 `hooks.gmail.account` 已设置,Gateway 在启动时
|
||||
- 如果 `hooks.enabled=true` 且 `hooks.gmail.account` 已设置,Gateway网关在启动时
|
||||
启动 `gog gmail watch serve` 并自动续期监视。
|
||||
- 设置 `OPENCLAW_SKIP_GMAIL_WATCHER=1` 禁用自动启动(用于手动运行)。
|
||||
- 避免在 Gateway 旁边单独运行 `gog gmail watch serve`;它会
|
||||
- 避免在 Gateway网关旁边单独运行 `gog gmail watch serve`;它会
|
||||
因 `listen tcp 127.0.0.1:8788: bind: address already in use` 而失败。
|
||||
|
||||
注意:当 `tailscale.mode` 开启时,OpenClaw 将 `serve.path` 默认为 `/`,以便
|
||||
|
|
@ -3166,11 +3166,11 @@ Tailscale 可以正确代理 `/gmail-pubsub`(它会去除设置的路径前缀
|
|||
|
||||
### `canvasHost`(LAN/tailnet Canvas 文件服务器 + 实时重载)
|
||||
|
||||
Gateway 通过 HTTP 提供 HTML/CSS/JS 目录服务,以便 iOS/Android 节点可以简单地 `canvas.navigate` 到它。
|
||||
Gateway网关通过 HTTP 提供 HTML/CSS/JS 目录服务,以便 iOS/Android 节点可以简单地 `canvas.navigate` 到它。
|
||||
|
||||
默认根目录:`~/.openclaw/workspace/canvas`
|
||||
默认端口:`18793`(选择此端口以避免 OpenClaw 浏览器 CDP 端口 `18792`)
|
||||
服务器监听 **Gateway 绑定主机**(LAN 或 Tailnet),以便节点可以访问。
|
||||
服务器监听 **Gateway网关绑定主机**(LAN 或 Tailnet),以便节点可以访问。
|
||||
|
||||
服务器:
|
||||
|
||||
|
|
@ -3195,7 +3195,7 @@ Gateway 通过 HTTP 提供 HTML/CSS/JS 目录服务,以便 iOS/Android 节点
|
|||
}
|
||||
```
|
||||
|
||||
`canvasHost.*` 的更改需要重启 Gateway(配置重载会触发重启)。
|
||||
`canvasHost.*` 的更改需要重启 Gateway网关(配置重载会触发重启)。
|
||||
|
||||
禁用方式:
|
||||
|
||||
|
|
@ -3205,11 +3205,11 @@ Gateway 通过 HTTP 提供 HTML/CSS/JS 目录服务,以便 iOS/Android 节点
|
|||
### `bridge`(旧版 TCP 桥接,已移除)
|
||||
|
||||
当前版本不再包含 TCP 桥接监听器;`bridge.*` 配置键会被忽略。
|
||||
节点通过 Gateway WebSocket 连接。此部分仅保留供历史参考。
|
||||
节点通过 Gateway网关 WebSocket 连接。此部分仅保留供历史参考。
|
||||
|
||||
旧版行为:
|
||||
|
||||
- Gateway 可以为节点(iOS/Android)暴露简单的 TCP 桥接,通常在端口 `18790`。
|
||||
- Gateway网关可以为节点(iOS/Android)暴露简单的 TCP 桥接,通常在端口 `18790`。
|
||||
|
||||
默认值:
|
||||
|
||||
|
|
@ -3231,7 +3231,7 @@ TLS:
|
|||
- `bridge.tls.certPath` / `bridge.tls.keyPath`:桥接证书 + 私钥的 PEM 路径。
|
||||
- `bridge.tls.caPath`:可选的 PEM CA 捆绑包(自定义根证书或未来的 mTLS)。
|
||||
|
||||
启用 TLS 后,Gateway 在发现 TXT 记录中通告 `bridgeTls=1` 和 `bridgeTlsSha256`,以便节点可以固定证书。如果尚未存储指纹,手动连接使用首次信任。
|
||||
启用 TLS 后,Gateway网关在发现 TXT 记录中通告 `bridgeTls=1` 和 `bridgeTlsSha256`,以便节点可以固定证书。如果尚未存储指纹,手动连接使用首次信任。
|
||||
自动生成的证书需要 PATH 中有 `openssl`;如果生成失败,桥接不会启动。
|
||||
|
||||
```json5
|
||||
|
|
@ -3267,14 +3267,14 @@ TLS:
|
|||
|
||||
### `discovery.wideArea`(广域 Bonjour / 单播 DNS‑SD)
|
||||
|
||||
启用后,Gateway 在 `~/.openclaw/dns/` 下使用配置的发现域(示例:`openclaw.internal.`)为 `_openclaw-gw._tcp` 写入单播 DNS-SD 区域。
|
||||
启用后,Gateway网关在 `~/.openclaw/dns/` 下使用配置的发现域(示例:`openclaw.internal.`)为 `_openclaw-gw._tcp` 写入单播 DNS-SD 区域。
|
||||
|
||||
要使 iOS/Android 跨网络发现(跨地域访问),请配合以下使用:
|
||||
|
||||
- 在 Gateway 主机上运行 DNS 服务器,为你选择的域名提供服务(推荐 CoreDNS)
|
||||
- Tailscale **split DNS**,使客户端通过 Gateway DNS 服务器解析该域名
|
||||
- 在 Gateway网关主机上运行 DNS 服务器,为你选择的域名提供服务(推荐 CoreDNS)
|
||||
- Tailscale **split DNS**,使客户端通过 Gateway网关 DNS 服务器解析该域名
|
||||
|
||||
一次性设置助手(Gateway 主机):
|
||||
一次性设置助手(Gateway网关主机):
|
||||
|
||||
```bash
|
||||
openclaw dns setup --apply
|
||||
|
|
@ -3313,9 +3313,9 @@ openclaw dns setup --apply
|
|||
| `{{SenderE164}}` | 发送者电话号码(尽力而为) |
|
||||
| `{{Provider}}` | 提供商提示(whatsapp | telegram | discord | googlechat | slack | signal | imessage | msteams | webchat | …) |
|
||||
|
||||
## Cron(Gateway 调度器)
|
||||
## Cron(Gateway网关调度器)
|
||||
|
||||
Cron 是 Gateway 自有的唤醒和定时任务调度器。参见 [Cron 任务](/automation/cron-jobs) 了解功能概述和 CLI 示例。
|
||||
Cron 是 Gateway网关自有的唤醒和定时任务调度器。参见 [Cron 任务](/automation/cron-jobs) 了解功能概述和 CLI 示例。
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ read_when:
|
|||
- 实现或更改 Bonjour 发现/广播功能
|
||||
- 调整远程连接模式(直连 vs SSH)
|
||||
- 为远程节点设计节点发现 + 配对方案
|
||||
summary: 节点发现与传输(Bonjour、Tailscale、SSH)用于查找 Gateway
|
||||
summary: 节点发现与传输(Bonjour、Tailscale、SSH)用于查找 Gateway网关
|
||||
title: 发现与传输
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:25:57Z"
|
||||
|
|
@ -18,36 +18,36 @@ x-i18n:
|
|||
|
||||
OpenClaw 有两个表面上看起来相似但实际上不同的问题:
|
||||
|
||||
1. **操作者远程控制**:macOS 菜单栏应用控制运行在其他位置的 Gateway。
|
||||
2. **节点配对**:iOS/Android(以及未来的节点)找到 Gateway 并安全配对。
|
||||
1. **操作者远程控制**:macOS 菜单栏应用控制运行在其他位置的 Gateway网关。
|
||||
2. **节点配对**:iOS/Android(以及未来的节点)找到 Gateway网关并安全配对。
|
||||
|
||||
设计目标是将所有网络发现/广播保留在 **Node Gateway**(`openclaw gateway`)中,让客户端(Mac 应用、iOS)作为消费者。
|
||||
设计目标是将所有网络发现/广播保留在 **Node Gateway网关**(`openclaw gateway`)中,让客户端(Mac 应用、iOS)作为消费者。
|
||||
|
||||
## 术语
|
||||
|
||||
- **Gateway**:一个长期运行的 Gateway 进程,拥有状态(会话、配对、节点注册表)并运行渠道。大多数配置每台主机使用一个;也可以进行隔离的多 Gateway 设置。
|
||||
- **Gateway WS(控制平面)**:默认位于 `127.0.0.1:18789` 的 WebSocket 端点;可通过 `gateway.bind` 绑定到局域网/Tailnet。
|
||||
- **直连 WS 传输**:面向局域网/Tailnet 的 Gateway WS 端点(无 SSH)。
|
||||
- **Gateway网关**:一个长期运行的 Gateway网关进程,拥有状态(会话、配对、节点注册表)并运行渠道。大多数配置每台主机使用一个;也可以进行隔离的多 Gateway网关设置。
|
||||
- **Gateway网关 WS(控制平面)**:默认位于 `127.0.0.1:18789` 的 WebSocket 端点;可通过 `gateway.bind` 绑定到局域网/Tailnet。
|
||||
- **直连 WS 传输**:面向局域网/Tailnet 的 Gateway网关 WS 端点(无 SSH)。
|
||||
- **SSH 传输(回退)**:通过 SSH 转发 `127.0.0.1:18789` 实现远程控制。
|
||||
- **旧版 TCP 桥接(已弃用/移除)**:旧的节点传输方式(参见 [桥接协议](/gateway/bridge-protocol));不再用于发现广播。
|
||||
|
||||
协议详情:
|
||||
|
||||
- [Gateway 协议](/gateway/protocol)
|
||||
- [Gateway网关协议](/gateway/protocol)
|
||||
- [桥接协议(旧版)](/gateway/bridge-protocol)
|
||||
|
||||
## 为什么同时保留"直连"和 SSH
|
||||
|
||||
- **直连 WS** 在同一网络和 Tailnet 内提供最佳用户体验:
|
||||
- 通过 Bonjour 在局域网上自动发现
|
||||
- 配对令牌 + ACL 由 Gateway 管理
|
||||
- 配对令牌 + ACL 由 Gateway网关管理
|
||||
- 不需要 shell 访问;协议接口可以保持精简且可审计
|
||||
- **SSH** 仍然是通用的回退方案:
|
||||
- 在任何有 SSH 访问的地方都可以工作(甚至跨不相关的网络)
|
||||
- 不受组播/mDNS 问题影响
|
||||
- 除 SSH 外不需要新的入站端口
|
||||
|
||||
## 发现输入(客户端如何获知 Gateway 位置)
|
||||
## 发现输入(客户端如何获知 Gateway网关位置)
|
||||
|
||||
### 1) Bonjour / mDNS(仅限局域网)
|
||||
|
||||
|
|
@ -55,20 +55,20 @@ Bonjour 是尽力而为的机制,无法跨网络。它仅用于"同一局域
|
|||
|
||||
目标方向:
|
||||
|
||||
- **Gateway** 通过 Bonjour 广播其 WS 端点。
|
||||
- 客户端浏览并显示"选择 Gateway"列表,然后存储所选端点。
|
||||
- **Gateway网关** 通过 Bonjour 广播其 WS 端点。
|
||||
- 客户端浏览并显示"选择 Gateway网关"列表,然后存储所选端点。
|
||||
|
||||
故障排除和信标详情:[Bonjour](/gateway/bonjour)。
|
||||
|
||||
#### 服务信标详情
|
||||
|
||||
- 服务类型:
|
||||
- `_openclaw-gw._tcp`(Gateway 传输信标)
|
||||
- `_openclaw-gw._tcp`(Gateway网关传输信标)
|
||||
- TXT 键(非机密):
|
||||
- `role=gateway`
|
||||
- `lanHost=<主机名>.local`
|
||||
- `sshPort=22`(或实际广播的端口)
|
||||
- `gatewayPort=18789`(Gateway WS + HTTP)
|
||||
- `gatewayPort=18789`(Gateway网关 WS + HTTP)
|
||||
- `gatewayTls=1`(仅在启用 TLS 时)
|
||||
- `gatewayTlsSha256=<sha256>`(仅在启用 TLS 且指纹可用时)
|
||||
- `canvasPort=18793`(默认 canvas 主机端口;服务于 `/__openclaw__/canvas/`)
|
||||
|
|
@ -78,7 +78,7 @@ Bonjour 是尽力而为的机制,无法跨网络。它仅用于"同一局域
|
|||
禁用/覆盖:
|
||||
|
||||
- `OPENCLAW_DISABLE_BONJOUR=1` 禁用广播。
|
||||
- `~/.openclaw/openclaw.json` 中的 `gateway.bind` 控制 Gateway 绑定模式。
|
||||
- `~/.openclaw/openclaw.json` 中的 `gateway.bind` 控制 Gateway网关绑定模式。
|
||||
- `OPENCLAW_SSH_PORT` 覆盖 TXT 中广播的 SSH 端口(默认为 22)。
|
||||
- `OPENCLAW_TAILNET_DNS` 发布 `tailnetDns` 提示(MagicDNS)。
|
||||
- `OPENCLAW_CLI_PATH` 覆盖广播的 CLI 路径。
|
||||
|
|
@ -89,11 +89,11 @@ Bonjour 是尽力而为的机制,无法跨网络。它仅用于"同一局域
|
|||
|
||||
- Tailscale MagicDNS 名称(首选)或稳定的 Tailnet IP。
|
||||
|
||||
如果 Gateway 能检测到自己运行在 Tailscale 下,它会将 `tailnetDns` 作为可选提示发布给客户端(包括广域信标)。
|
||||
如果 Gateway网关能检测到自己运行在 Tailscale 下,它会将 `tailnetDns` 作为可选提示发布给客户端(包括广域信标)。
|
||||
|
||||
### 3) 手动 / SSH 目标
|
||||
|
||||
当没有直接路由(或直连被禁用)时,客户端始终可以通过 SSH 转发回环 Gateway 端口进行连接。
|
||||
当没有直接路由(或直连被禁用)时,客户端始终可以通过 SSH 转发 local loopback Gateway网关端口进行连接。
|
||||
|
||||
参见 [远程访问](/gateway/remote)。
|
||||
|
||||
|
|
@ -102,22 +102,22 @@ Bonjour 是尽力而为的机制,无法跨网络。它仅用于"同一局域
|
|||
推荐的客户端行为:
|
||||
|
||||
1. 如果已配置并可达已配对的直连端点,则使用它。
|
||||
2. 否则,如果 Bonjour 在局域网上发现了 Gateway,提供一键"使用此 Gateway"选项并将其保存为直连端点。
|
||||
2. 否则,如果 Bonjour 在局域网上发现了 Gateway网关,提供一键"使用此 Gateway网关"选项并将其保存为直连端点。
|
||||
3. 否则,如果配置了 Tailnet DNS/IP,尝试直连。
|
||||
4. 否则,回退到 SSH。
|
||||
|
||||
## 配对 + 认证(直连传输)
|
||||
|
||||
Gateway 是节点/客户端准入的权威来源。
|
||||
Gateway网关是节点/客户端准入的权威来源。
|
||||
|
||||
- 配对请求在 Gateway 中创建/批准/拒绝(参见 [Gateway 配对](/gateway/pairing))。
|
||||
- Gateway 强制执行:
|
||||
- 配对请求在 Gateway网关中创建/批准/拒绝(参见 [Gateway网关配对](/gateway/pairing))。
|
||||
- Gateway网关强制执行:
|
||||
- 认证(令牌 / 密钥对)
|
||||
- 权限范围/ACL(Gateway 不是对所有方法的原始代理)
|
||||
- 权限范围/ACL(Gateway网关不是对所有方法的原始代理)
|
||||
- 速率限制
|
||||
|
||||
## 各组件职责
|
||||
|
||||
- **Gateway**:广播发现信标,管理配对决策,并托管 WS 端点。
|
||||
- **macOS 应用**:帮助您选择 Gateway,显示配对提示,仅将 SSH 作为回退方案。
|
||||
- **iOS/Android 节点**:将 Bonjour 浏览作为便捷方式,连接到已配对的 Gateway WS。
|
||||
- **Gateway网关**:广播发现信标,管理配对决策,并托管 WS 端点。
|
||||
- **macOS 应用**:帮助你选择 Gateway网关,显示配对提示,仅将 SSH 作为回退方案。
|
||||
- **iOS/Android 节点**:将 Bonjour 浏览作为便捷方式,连接到已配对的 Gateway网关 WS。
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ openclaw doctor --non-interactive
|
|||
openclaw doctor --deep
|
||||
```
|
||||
|
||||
扫描系统服务以查找额外的 Gateway 安装(launchd/systemd/schtasks)。
|
||||
扫描系统服务以查找额外的 Gateway网关安装(launchd/systemd/schtasks)。
|
||||
|
||||
如果你想在写入前查看更改,请先打开配置文件:
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ cat ~/.openclaw/openclaw.json
|
|||
- 可选的 git 安装预检更新(仅交互模式)。
|
||||
- UI 协议新鲜度检查(当协议 schema 更新时重建控制 UI)。
|
||||
- 健康检查 + 重启提示。
|
||||
- 技能状态摘要(可用/缺失/受阻)。
|
||||
- Skills 状态摘要(可用/缺失/受阻)。
|
||||
- 遗留值的配置规范化。
|
||||
- OpenCode Zen 提供商覆盖警告(`models.providers.opencode`)。
|
||||
- 遗留磁盘状态迁移(会话/智能体目录/WhatsApp 认证)。
|
||||
|
|
@ -76,14 +76,14 @@ cat ~/.openclaw/openclaw.json
|
|||
- 模型认证健康:检查 OAuth 过期、可刷新即将过期的令牌、报告认证配置的冷却/禁用状态。
|
||||
- 额外工作区目录检测(`~/openclaw`)。
|
||||
- 启用沙箱时的沙箱镜像修复。
|
||||
- 遗留服务迁移和额外 Gateway 检测。
|
||||
- Gateway 运行时检查(服务已安装但未运行;缓存的 launchd 标签)。
|
||||
- 渠道状态警告(从运行中的 Gateway 探测)。
|
||||
- 遗留服务迁移和额外 Gateway网关检测。
|
||||
- Gateway网关运行时检查(服务已安装但未运行;缓存的 launchd 标签)。
|
||||
- 渠道状态警告(从运行中的 Gateway网关探测)。
|
||||
- Supervisor 配置审计(launchd/systemd/schtasks)及可选修复。
|
||||
- Gateway 运行时最佳实践检查(Node vs Bun、版本管理器路径)。
|
||||
- Gateway 端口冲突诊断(默认 `18789`)。
|
||||
- 开放 DM 策略的安全警告。
|
||||
- 未设置 `gateway.auth.token` 时的 Gateway 认证警告(本地模式;提供令牌生成)。
|
||||
- Gateway网关运行时最佳实践检查(Node vs Bun、版本管理器路径)。
|
||||
- Gateway网关端口冲突诊断(默认 `18789`)。
|
||||
- 开放 私信 策略的安全警告。
|
||||
- 未设置 `gateway.auth.token` 时的 Gateway网关认证警告(本地模式;提供令牌生成)。
|
||||
- Linux 上的 systemd linger 检查。
|
||||
- 源码安装检查(pnpm workspace 不匹配、缺失 UI 资源、缺失 tsx 二进制文件)。
|
||||
- 写入更新后的配置 + 向导元数据。
|
||||
|
|
@ -108,7 +108,7 @@ Doctor 将:
|
|||
- 显示它应用的迁移。
|
||||
- 使用更新后的 schema 重写 `~/.openclaw/openclaw.json`。
|
||||
|
||||
Gateway 在启动时检测到遗留配置格式时也会自动运行 doctor 迁移,因此过时的配置无需手动干预即可修复。
|
||||
Gateway网关在启动时检测到遗留配置格式时也会自动运行 doctor 迁移,因此过时的配置无需手动干预即可修复。
|
||||
|
||||
当前迁移:
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ Doctor 可以将旧版磁盘布局迁移到当前结构:
|
|||
- 从遗留的 `~/.openclaw/credentials/*.json`(`oauth.json` 除外)
|
||||
- 到 `~/.openclaw/credentials/whatsapp/<accountId>/...`(默认账户 ID:`default`)
|
||||
|
||||
这些迁移尽力执行且幂等;当 doctor 保留任何遗留文件夹作为备份时会发出警告。Gateway/CLI 在启动时也会自动迁移遗留会话 + 智能体目录,使历史/认证/模型落入每个智能体的路径中,无需手动运行 doctor。WhatsApp 认证仅通过 `openclaw doctor` 进行迁移。
|
||||
这些迁移尽力执行且幂等;当 doctor 保留任何遗留文件夹作为备份时会发出警告。Gateway网关/CLI 在启动时也会自动迁移遗留会话 + 智能体目录,使历史/认证/模型落入每个智能体的路径中,无需手动运行 doctor。WhatsApp 认证仅通过 `openclaw doctor` 进行迁移。
|
||||
|
||||
### 4) 状态完整性检查(会话持久化、路由和安全性)
|
||||
|
||||
|
|
@ -177,33 +177,33 @@ Doctor 还会报告由于以下原因暂时不可用的认证配置:
|
|||
|
||||
当启用沙箱时,doctor 检查 Docker 镜像,并在当前镜像缺失时提供构建或切换到遗留名称的选项。
|
||||
|
||||
### 8) Gateway 服务迁移和清理提示
|
||||
### 8) Gateway网关服务迁移和清理提示
|
||||
|
||||
Doctor 检测遗留 Gateway 服务(launchd/systemd/schtasks),并提供删除它们并使用当前 Gateway 端口安装 OpenClaw 服务的选项。它还可以扫描额外的类 Gateway 服务并打印清理提示。以配置文件命名的 OpenClaw Gateway 服务被视为一等公民,不会被标记为"额外"。
|
||||
Doctor 检测遗留 Gateway网关服务(launchd/systemd/schtasks),并提供删除它们并使用当前 Gateway网关端口安装 OpenClaw 服务的选项。它还可以扫描额外的类 Gateway网关服务并打印清理提示。以配置文件命名的 OpenClaw Gateway网关服务被视为一等公民,不会被标记为"额外"。
|
||||
|
||||
### 9) 安全警告
|
||||
|
||||
当提供商对 DM 开放且没有允许列表时,或当策略以危险方式配置时,doctor 会发出警告。
|
||||
当提供商对 私信 开放且没有允许列表时,或当策略以危险方式配置时,doctor 会发出警告。
|
||||
|
||||
### 10) systemd linger(Linux)
|
||||
|
||||
如果作为 systemd 用户服务运行,doctor 确保 linger 已启用,以便 Gateway 在注销后保持运行。
|
||||
如果作为 systemd 用户服务运行,doctor 确保 linger 已启用,以便 Gateway网关在注销后保持运行。
|
||||
|
||||
### 11) 技能状态
|
||||
### 11) Skills 状态
|
||||
|
||||
Doctor 打印当前工作区可用/缺失/受阻技能的快速摘要。
|
||||
Doctor 打印当前工作区可用/缺失/受阻 Skills 的快速摘要。
|
||||
|
||||
### 12) Gateway 认证检查(本地令牌)
|
||||
### 12) Gateway网关认证检查(本地令牌)
|
||||
|
||||
当本地 Gateway 缺少 `gateway.auth` 时,doctor 发出警告并提供生成令牌的选项。使用 `openclaw doctor --generate-gateway-token` 在自动化中强制创建令牌。
|
||||
当本地 Gateway网关缺少 `gateway.auth` 时,doctor 发出警告并提供生成令牌的选项。使用 `openclaw doctor --generate-gateway-token` 在自动化中强制创建令牌。
|
||||
|
||||
### 13) Gateway 健康检查 + 重启
|
||||
### 13) Gateway网关健康检查 + 重启
|
||||
|
||||
Doctor 运行健康检查,并在 Gateway 看起来不健康时提供重启选项。
|
||||
Doctor 运行健康检查,并在 Gateway网关看起来不健康时提供重启选项。
|
||||
|
||||
### 14) 渠道状态警告
|
||||
|
||||
如果 Gateway 健康,doctor 运行渠道状态探测并报告警告及建议的修复方案。
|
||||
如果 Gateway网关健康,doctor 运行渠道状态探测并报告警告及建议的修复方案。
|
||||
|
||||
### 15) Supervisor 配置审计 + 修复
|
||||
|
||||
|
|
@ -217,13 +217,13 @@ Doctor 检查已安装的 supervisor 配置(launchd/systemd/schtasks)是否
|
|||
- `openclaw doctor --repair --force` 覆盖自定义 supervisor 配置。
|
||||
- 你始终可以通过 `openclaw gateway install --force` 强制完全重写。
|
||||
|
||||
### 16) Gateway 运行时 + 端口诊断
|
||||
### 16) Gateway网关运行时 + 端口诊断
|
||||
|
||||
Doctor 检查服务运行时(PID、上次退出状态),并在服务已安装但实际未运行时发出警告。它还检查 Gateway 端口(默认 `18789`)上的端口冲突并报告可能的原因(Gateway 已在运行、SSH 隧道)。
|
||||
Doctor 检查服务运行时(PID、上次退出状态),并在服务已安装但实际未运行时发出警告。它还检查 Gateway网关端口(默认 `18789`)上的端口冲突并报告可能的原因(Gateway网关已在运行、SSH 隧道)。
|
||||
|
||||
### 17) Gateway 运行时最佳实践
|
||||
### 17) Gateway网关运行时最佳实践
|
||||
|
||||
当 Gateway 服务运行在 Bun 或版本管理器管理的 Node 路径(`nvm`、`fnm`、`volta`、`asdf` 等)上时,doctor 会发出警告。WhatsApp + Telegram 渠道需要 Node,而版本管理器路径在升级后可能会失效,因为服务不会加载你的 shell 初始化文件。Doctor 会在系统 Node 安装可用时提供迁移选项(Homebrew/apt/choco)。
|
||||
当 Gateway网关服务运行在 Bun 或版本管理器管理的 Node 路径(`nvm`、`fnm`、`volta`、`asdf` 等)上时,doctor 会发出警告。WhatsApp + Telegram 渠道需要 Node,而版本管理器路径在升级后可能会失效,因为服务不会加载你的 shell 初始化文件。Doctor 会在系统 Node 安装可用时提供迁移选项(Homebrew/apt/choco)。
|
||||
|
||||
### 18) 配置写入 + 向导元数据
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
read_when:
|
||||
- 运行或调试 Gateway 进程时
|
||||
- 运行或调试 Gateway网关进程时
|
||||
- 调查单实例强制机制时
|
||||
summary: Gateway 单例守卫:通过 WebSocket 监听器绑定实现
|
||||
title: Gateway 锁
|
||||
summary: Gateway网关单例守卫:通过 WebSocket 监听器绑定实现
|
||||
title: Gateway网关锁
|
||||
x-i18n:
|
||||
generated_at: "2026-02-01T20:25:58Z"
|
||||
model: claude-opus-4-5
|
||||
|
|
@ -13,29 +13,29 @@ x-i18n:
|
|||
workflow: 14
|
||||
---
|
||||
|
||||
# Gateway 锁
|
||||
# Gateway网关锁
|
||||
|
||||
最后更新:2025-12-11
|
||||
|
||||
## 原因
|
||||
|
||||
- 确保同一主机上每个基础端口只运行一个 Gateway 实例;额外的 Gateway 必须使用隔离的配置文件和唯一端口。
|
||||
- 确保同一主机上每个基础端口只运行一个 Gateway网关实例;额外的 Gateway网关必须使用隔离的配置文件和唯一端口。
|
||||
- 在崩溃/SIGKILL 后不会留下过期的锁文件。
|
||||
- 当控制端口已被占用时,快速失败并给出清晰的错误信息。
|
||||
|
||||
## 机制
|
||||
|
||||
- Gateway 在启动时立即通过独占 TCP 监听器绑定 WebSocket 监听器(默认 `ws://127.0.0.1:18789`)。
|
||||
- 如果绑定失败并返回 `EADDRINUSE`,启动时将抛出 `GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`。
|
||||
- Gateway网关在启动时立即通过独占 TCP 监听器绑定 WebSocket 监听器(默认 `ws://127.0.0.1:18789`)。
|
||||
- 如果绑定失败并返回 `EADDRINUSE`,启动时将抛出 `Gateway网关LockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`。
|
||||
- 操作系统会在进程以任何方式退出时自动释放监听器,包括崩溃和 SIGKILL——无需单独的锁文件或清理步骤。
|
||||
- 关闭时,Gateway 会关闭 WebSocket 服务器和底层 HTTP 服务器以及时释放端口。
|
||||
- 关闭时,Gateway网关会关闭 WebSocket 服务器和底层 HTTP 服务器以及时释放端口。
|
||||
|
||||
## 错误表现
|
||||
|
||||
- 如果另一个进程持有该端口,启动时将抛出 `GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`。
|
||||
- 其他绑定失败将表现为 `GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …")`。
|
||||
- 如果另一个进程持有该端口,启动时将抛出 `Gateway网关LockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`。
|
||||
- 其他绑定失败将表现为 `Gateway网关LockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …")`。
|
||||
|
||||
## 运维说明
|
||||
|
||||
- 如果端口被*其他*进程占用,错误信息相同;请释放该端口或使用 `openclaw gateway --port <port>` 选择另一个端口。
|
||||
- macOS 应用在启动 Gateway 之前仍会维护自己的轻量级 PID 守卫;运行时锁由 WebSocket 绑定强制执行。
|
||||
- macOS 应用在启动 Gateway网关之前仍会维护自己的轻量级 PID 守卫;运行时锁由 WebSocket 绑定强制执行。
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue