OpenClaw 会从Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json 读取可选的 配置。
活动配置路径必须是常规文件。符号链接的 openclaw.json
布局不支持 OpenClaw 所有的写入;原子写入可能会替换
该路径,而不是保留符号链接。如果你将配置放在默认状态目录之外,
请将 OPENCLAW_CONFIG_PATH 直接指向真实文件。
如果文件缺失,OpenClaw 会使用安全默认值。添加配置的常见原因:
- 连接渠道并控制谁可以向机器人发消息
- 设置模型、工具、沙箱隔离或自动化(cron、钩子)
- 调整会话、媒体、网络或 UI
config.schema.lookup 获取精确的字段级
文档。将此页面用于面向任务的指导,并将
配置参考 用于更全面的
字段映射和默认值。
最小配置
编辑配置
- Interactive wizard
- CLI (one-liners)
- Control UI
- Direct edit
严格验证
openclaw config schema 会打印控制 UI
和验证使用的规范 JSON Schema。config.schema.lookup 会获取单个按路径限定的节点以及
子项摘要,供下钻工具使用。字段 title/description 文档元数据
会贯穿嵌套对象、通配符(*)、数组项([])以及 anyOf/
oneOf/allOf 分支。加载清单注册表后,运行时插件和渠道架构会合并进来。
验证失败时:
- Gateway 网关不会启动
- 只有诊断命令可用(
openclaw doctor、openclaw logs、openclaw health、openclaw status) - 运行
openclaw doctor查看确切问题 - 运行
openclaw doctor --fix(或--yes)应用修复
openclaw.json
验证失败(包括插件本地验证),Gateway 网关启动会失败,或
重载会被跳过,而当前运行时会保留最后接受的配置。
运行 openclaw doctor --fix(或 --yes)来修复带前缀/被覆盖的配置,或
恢复最后已知良好副本。当候选配置包含已脱敏的密钥占位符(例如 ***)时,
会跳过提升为最后已知良好副本。
常见任务
Set up a channel (WhatsApp, Telegram, Discord, etc.)
Set up a channel (WhatsApp, Telegram, Discord, etc.)
每个渠道在
channels.<provider> 下都有自己的配置部分。请查看对应渠道页面了解设置步骤:- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
Choose and configure models
Choose and configure models
设置主模型和可选后备模型:
agents.defaults.models定义模型目录,并充当/model的允许列表;provider/*条目会将/model、/models和模型选择器过滤为选定的提供商,同时仍使用动态模型发现。- 使用
openclaw config set agents.defaults.models '<json>' --strict-json --merge添加允许列表条目,而不会移除现有模型。除非传入--replace,否则会移除条目的普通替换会被拒绝。 - 模型引用使用
provider/model格式(例如anthropic/claude-opus-4-6)。 agents.defaults.imageMaxDimensionPx控制记录/工具图像缩小(默认1200);较低值通常会减少大量截图运行中的视觉 token 使用量。- 请查看 Models CLI,了解如何在聊天中切换模型;查看模型故障转移,了解凭证轮换和后备行为。
- 对于自定义/自托管提供商,请查看参考中的自定义提供商。
Control who can message the bot
Control who can message the bot
私信访问通过每个渠道的
dmPolicy 控制:"pairing"(默认):未知发送者会收到一次性配对码以供批准"allowlist":仅允许allowFrom(或已配对允许存储)中的发送者"open":允许所有入站私信(需要allowFrom: ["*"])"disabled":忽略所有私信
groupPolicy + groupAllowFrom 或渠道专用允许列表。查看完整参考,了解每个渠道的详细信息。Set up group chat mention gating
Set up group chat mention gating
群组消息默认要求提及。按智能体配置触发模式,并将可见房间回复保持在默认消息工具路径上,除非你有意使用旧版自动最终回复:
- 元数据提及:原生 @ 提及(WhatsApp 点按提及、Telegram @bot 等)
- 文本模式:
mentionPatterns中的安全正则模式 - 可见回复:
messages.visibleReplies可以全局要求通过消息工具发送;messages.groupChat.visibleReplies会为群组/渠道覆盖该设置。 - 查看完整参考,了解可见回复模式、每渠道覆盖项和自聊模式。
Restrict skills per agent
Restrict skills per agent
Tune gateway channel health monitoring
Tune gateway channel health monitoring
Tune gateway WebSocket handshake timeout
Tune gateway WebSocket handshake timeout
在负载较高或低功耗主机上,给本地客户端更多时间完成认证前 WebSocket 握手:
- 默认值为
15000毫秒。 OPENCLAW_HANDSHAKE_TIMEOUT_MS对一次性服务或 shell 覆盖仍然优先生效。- 优先修复启动/事件循环停顿;此旋钮适用于健康但预热期间较慢的主机。
Configure sessions and resets
Configure sessions and resets
启用沙箱隔离
启用沙箱隔离
为官方 iOS 构建启用基于中继的推送
为官方 iOS 构建启用基于中继的推送
基于中继的推送在 等效 CLI:这会执行以下操作:
openclaw.json 中配置。在 Gateway 网关配置中设置:- 让 Gateway 网关通过外部中继发送
push.test、唤醒轻推和重连唤醒。 - 使用已配对 iOS 应用转发的、限定到注册范围的发送授权。Gateway 网关不需要部署范围的中继令牌。
- 将每个基于中继的注册绑定到 iOS 应用配对的 Gateway 网关身份,因此另一个 Gateway 网关无法复用已存储的注册。
- 让本地/手动 iOS 构建继续使用直接 APNs。基于中继的发送仅适用于通过中继注册的官方分发构建。
- 必须匹配烘焙到官方/TestFlight iOS 构建中的中继基础 URL,确保注册和发送流量到达同一中继部署。
- 安装使用相同中继基础 URL 编译的官方/TestFlight iOS 构建。
- 在 Gateway 网关上配置
gateway.push.apns.relay.baseUrl。 - 将 iOS 应用与 Gateway 网关配对,并让节点会话和操作者会话都连接。
- iOS 应用获取 Gateway 网关身份,使用 App Attest 加应用收据向中继注册,然后将基于中继的
push.apns.register载荷发布到已配对的 Gateway 网关。 - Gateway 网关存储中继句柄和发送授权,然后将它们用于
push.test、唤醒轻推和重连唤醒。
- 如果你将 iOS 应用切换到不同的 Gateway 网关,请重新连接应用,使其能够发布绑定到该 Gateway 网关的新中继注册。
- 如果你发布指向不同中继部署的新 iOS 构建,应用会刷新其缓存的中继注册,而不是复用旧的中继来源。
OPENCLAW_APNS_RELAY_BASE_URL和OPENCLAW_APNS_RELAY_TIMEOUT_MS仍可作为临时环境变量覆盖使用。OPENCLAW_APNS_RELAY_ALLOW_HTTP=true仍是仅限 loopback 的开发逃生口;不要在配置中持久保存 HTTP 中继 URL。
设置 Heartbeat(定期签到)
设置 Heartbeat(定期签到)
every:时长字符串(30m、2h)。设置为0m可禁用。target:last|none|<channel-id>(例如discord、matrix、telegram或whatsapp)directPolicy:用于私信风格 Heartbeat 目标的allow(默认)或block- 请参阅 Heartbeat获取完整指南。
配置 cron 作业
配置 cron 作业
sessionRetention:从sessions.json中剪除已完成的隔离运行会话(默认24h;设置为false可禁用)。runLog:按大小和保留行数剪除cron/runs/<jobId>.jsonl。- 请参阅 Cron 作业获取功能概览和 CLI 示例。
设置 webhook(hooks)
设置 webhook(hooks)
在 Gateway 网关上启用 HTTP webhook 端点:安全说明:
- 将所有 hook/webhook 载荷内容视为不可信输入。
- 使用专用的
hooks.token;不要复用共享 Gateway 网关令牌。 - Hook 认证仅支持标头(
Authorization: Bearer ...或x-openclaw-token);查询字符串令牌会被拒绝。 hooks.path不能是/;请将 webhook 入口保持在专用子路径上,例如/hooks。- 除非进行严格限定范围的调试,否则保持禁用不安全内容绕过标志(
hooks.gmail.allowUnsafeExternalContent、hooks.mappings[].allowUnsafeExternalContent)。 - 如果启用
hooks.allowRequestSessionKey,还应设置hooks.allowedSessionKeyPrefixes以约束调用方选择的会话键。 - 对于由 hook 驱动的智能体,优先使用强大的现代模型档位和严格的工具策略(例如仅限消息发送,并在可行时加上沙箱隔离)。
将配置拆分到多个文件($include)
将配置拆分到多个文件($include)
使用
$include 来组织大型配置:- 单个文件:替换包含它的对象
- 文件数组:按顺序深度合并(后者优先)
- 同级键:在 include 之后合并(覆盖已 include 的值)
- 嵌套 include:最多支持 10 层深度
- 相对路径:相对于执行 include 的文件解析
- OpenClaw 拥有的写入:当一次写入只改变一个由单文件 include 支持的顶级分区时,例如
plugins: { $include: "./plugins.json5" },OpenClaw 会更新该被 include 的文件,并保持openclaw.json不变 - 不支持的写透:根 include、include 数组以及带有同级覆盖的 include 会对 OpenClaw 拥有的写入失败关闭,而不是展平配置
- 限制范围:
$include路径必须解析到保存openclaw.json的目录下。若要在机器或用户之间共享目录树,请将OPENCLAW_INCLUDE_ROOTS设置为额外目录的路径列表(POSIX 上为:,Windows 上为;),include 可以引用这些目录。符号链接会被解析并重新检查,因此即使某路径在词法上位于配置目录中,但真实目标逃离了每个允许的根,也仍会被拒绝。 - 错误处理:对缺失文件、解析错误和循环 include 给出清晰错误
配置热重载
Gateway 网关会监视~/.openclaw/openclaw.json 并自动应用更改 - 大多数设置无需手动重启。
直接文件编辑在通过验证前会被视为不可信。监视器会等待编辑器临时写入/重命名抖动稳定,读取最终文件,并拒绝无效的外部编辑且不重写 openclaw.json。OpenClaw 拥有的配置写入在写入前使用同一个 schema 门禁;破坏性覆盖(例如丢弃 gateway.mode 或将文件缩小超过一半)会被拒绝,并另存为 .rejected.* 以供检查。
如果看到 config reload skipped (invalid config),或启动报告 Invalid config,请检查配置,运行 openclaw config validate,然后运行 openclaw doctor --fix 进行修复。请参阅 Gateway 网关故障排除查看清单。
重载模式
| 模式 | 行为 |
|---|---|
hybrid(默认) | 立即热应用安全更改。对关键更改自动重启。 |
hot | 仅热应用安全更改。当需要重启时记录警告 - 由你处理。 |
restart | 任何配置更改都会重启 Gateway 网关,无论是否安全。 |
off | 禁用文件监视。更改会在下次手动重启时生效。 |
哪些会热应用,哪些需要重启
大多数字段都可以无停机热应用。在hybrid 模式下,需要重启的更改会自动处理。
| 类别 | 字段 | 需要重启? |
|---|---|---|
| 渠道 | channels.*、web(WhatsApp)- 所有内置和插件渠道 | 否 |
| 智能体和模型 | agent、agents、models、routing | 否 |
| 自动化 | hooks、cron、agent.heartbeat | 否 |
| 会话和消息 | session、messages | 否 |
| 工具和媒体 | tools、browser、skills、mcp、audio、talk | 否 |
| UI 和其他 | ui、logging、identity、bindings | 否 |
| Gateway 网关服务器 | gateway.*(端口、绑定、认证、tailscale、TLS、HTTP) | 是 |
| 基础设施 | discovery、plugins | 是 |
gateway.reload 和 gateway.remote 是例外 - 更改它们不会触发重启。重载规划
当你编辑通过$include 引用的源文件时,OpenClaw 会根据源文件编写的布局来规划重载,而不是根据扁平化的内存视图。
这样可以让热重载决策(热应用或重启)保持可预测,即使单个顶级小节位于它自己的被包含文件中,例如
plugins: { $include: "./plugins.json5" }。如果源布局存在歧义,重载规划会以失败关闭的方式处理。
配置 RPC(程序化更新)
对于通过 Gateway 网关 API 写入配置的工具,优先使用此流程:config.schema.lookup用于检查一个子树(浅层 schema 节点 + 子项摘要)config.get用于获取当前快照以及hashconfig.patch用于部分更新(JSON merge patch:对象合并,null删除,数组替换)- 只有在你打算替换整个配置时才使用
config.apply update.run用于显式自更新并重启;当重启后的会话需要运行一个后续轮次时,请包含continuationMessageupdate.status用于检查最新的更新重启哨兵,并在重启后验证正在运行的版本
config.schema.lookup 作为获取精确字段级文档和约束的第一站。当它们需要更完整的配置映射、默认值或指向专用子系统参考的链接时,请使用 配置参考。
控制平面写入(
config.apply、config.patch、update.run)按每个 deviceId+clientIp 每 60 秒 3 个请求进行限速。重启请求会合并,然后在重启周期之间强制执行 30 秒冷却时间。
update.status 是只读的,但限定为管理员范围,因为重启哨兵可能包含更新步骤摘要和命令输出尾部。config.apply 和 config.patch 都接受 raw、baseHash、sessionKey、note 和 restartDelayMs。当配置已存在时,这两个方法都需要 baseHash。
环境变量
OpenClaw 会从父进程以及以下来源读取环境变量:- 当前工作目录中的
.env(如果存在) ~/.openclaw/.env(全局后备)
Shell 环境导入(可选)
Shell 环境导入(可选)
如果启用且预期键名未设置,OpenClaw 会运行你的登录 shell,并只导入缺失的键名:等效环境变量:
OPENCLAW_LOAD_SHELL_ENV=1配置值中的环境变量替换
配置值中的环境变量替换
在任意配置字符串值中使用 规则:
${VAR_NAME} 引用环境变量:- 只匹配大写名称:
[A-Z_][A-Z0-9_]* - 缺失或为空的变量会在加载时抛出错误
- 使用
$${VAR}转义以输出字面值 - 可在
$include文件中使用 - 内联替换:
"${BASE}/v1"→"https://api.example.com/v1"
密钥引用(env、file、exec)
密钥引用(env、file、exec)
对于支持 SecretRef 对象的字段,你可以使用:SecretRef 详细信息(包括用于
env/file/exec 的 secrets.providers)位于 密钥管理。
支持的凭证路径列在 SecretRef 凭证范围 中。完整参考
有关完整的逐字段参考,请参阅 配置参考。相关:配置示例 · 配置参考 · Doctor