网关配置

配置 🔧

OpenClaw 从 ~/.openclaw/openclaw.json 读取可选的 JSON5 配置(允许注释 + 尾随逗号)。

如果文件缺失,OpenClaw 使用安全的默认值(嵌入式 Pi Agent + 每发送者会话 + 工作空间 ~/.openclaw/workspace)。你通常只需要配置来:

刚接触配置? 查看 [配置示例(../gateway/configuration-examples.html) 指南获取完整示例和详细说明!

严格配置验证

OpenClaw 只接受完全匹配模式的配置。
未知键、格式错误的类型或无效值会导致 Gateway 拒绝启动 以确保安全。

验证失败时:

Doctor 除非你明确选择 --fix/--yes,否则不会写入更改。

模式 + UI 提示

Gateway 通过 config.schema 暴露配置的 JSON Schema 表示供 UI 编辑器使用。
Control UI 从此模式渲染表单,并提供 原始 JSON 编辑器作为逃生舱。

频道插件和扩展可以为它们的配置注册模式 + UI 提示,因此频道设置
在应用中保持模式驱动,无需硬编码表单。

提示(标签、分组、敏感字段)与模式一起提供,因此客户端可以渲染
更好的表单而无需硬编码配置知识。

应用 + 重启(RPC)

使用 config.apply 验证 + 写入完整配置并一步重启 Gateway。
它会写入重启标记并在 Gateway 恢复后 ping 最后一个活动会话。

警告:config.apply 替换整个配置。如果你只想更改几个键,
使用 config.patchopenclaw config set。备份 ~/.openclaw/openclaw.json

参数:

示例(通过 gateway call):

# 获取当前配置哈希
openclaw gateway call config.get --params '{}' # 捕获 payload.hash
# 应用新配置
openclaw gateway call config.apply --params '{
  "raw": "{\\n  agents: { defaults: { workspace: \\"~/.openclaw/workspace\\" } }\\n}\\n",
  "baseHash": "<hash-from-config.get>",
  "sessionKey": "agent:main:whatsapp:dm:+15555550123",
  "restartDelayMs": 1000
}'

部分更新(RPC)

使用 config.patch 将部分更新合并到现有配置而不覆盖
无关的键。它应用 JSON 合并补丁语义:

参数:

示例:

# 获取当前配置哈希
openclaw gateway call config.get --params '{}' # 捕获 payload.hash
# 打补丁更新配置
openclaw gateway call config.patch --params '{
  "raw": "{\\n  channels: { telegram: { groups: { \\"*\\": { requireMention: false } } } }\\n}\\n",
  "baseHash": "<hash-from-config.get>",
  "sessionKey": "agent:main:whatsapp:dm:+15555550123",
  "restartDelayMs": 1000
}'

最小配置(推荐起点)

{
  agents: { defaults: { workspace: "~/.openclaw/workspace" } },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } }
}

用以下命令构建默认镜像:

scripts/sandbox-setup.sh

自聊模式(推荐用于群组控制)

为防止 Bot 响应 WhatsApp 群组中的 @-提及(只响应特定文本触发器):

{
  agents: {
    defaults: { workspace: "~/.openclaw/workspace" },
    list: [
      {
        id: "main",
        groupChat: { mentionPatterns: ["@openclaw", "reisponde"] }
      }
    ]
  },
  channels: {
    whatsapp: {
      // 白名单仅用于私聊;包含你自己的号码启用自聊模式。
      allowFrom: ["+15555550123"],
      groups: { "*": { requireMention: true } }
    }
  }
}

配置包含($include

使用 $include 指令将配置拆分为多个文件。这对于以下情况很有用:

基本用法

// ~/.openclaw/openclaw.json
{
  gateway: { port: 18789 },
  
  // 包含单个文件(替换键的值)
  agents: { "$include": "./agents.json5" },
  
  // 包含多个文件(按顺序深度合并)
  broadcast: { 
    "$include": [
      "./clients/mueller.json5",
      "./clients/schmidt.json5"
    ]
  }
}
// ~/.openclaw/agents.json5
{
  defaults: { sandbox: { mode: "all", scope: "session" } },
  list: [
    { id: "main", workspace: "~/.openclaw/workspace" }
  ]
}

合并行为

// 兄弟键覆盖包含的值
{
  "$include": "./base.json5",   // { a: 1, b: 2 }
  b: 99                          // 结果: { a: 1, b: 99 }
}

嵌套包含

包含的文件本身可以包含 $include 指令(最多 10 层深度):

// clients/mueller.json5
{
  agents: { "$include": "./mueller/agents.json5" },
  broadcast: { "$include": "./mueller/broadcast.json5" }
}