配置 OpenClaw
OpenClaw 会从~/.openclaw/openclaw.json 读取一个可选的 JSON5 配置文件。
如果文件不存在,OpenClaw 将使用安全默认值。添加配置的常见原因包括:
- 连接渠道并控制谁可以给机器人发消息
- 设置模型、工具、沙箱环境或自动化(定时任务、钩子)
- 调整会话、媒体、网络或 UI
最小配置
编辑配置的方式
- 交互式向导
- 命令行
- 控制面板 UI
- 直接编辑
严格校验
校验失败时:- Gateway 不启动
- 仅诊断命令可用(
openclaw doctor、openclaw logs、openclaw health、openclaw status) - 运行
openclaw doctor查看具体问题 - 运行
openclaw doctor --fix(或--yes)自动修复
常见配置任务
设置渠道
每个渠道都有自己的配置节,位于channels.<provider> 下。所有渠道共享相同的私信(DM)策略模式:
- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Google Chat —
channels.googlechat - Mattermost —
channels.mattermost - MS Teams —
channels.msteams
选择并配置模型
设置主模型及可选的备用模型:agents.defaults.models定义模型目录并作为/model的白名单- 模型引用格式为
provider/model(如anthropic/claude-opus-4-6) agents.defaults.imageMaxDimensionPx控制转录/工具图像的缩放(默认1200)
控制谁可以给机器人发消息
私信访问通过渠道的dmPolicy 控制:
"pairing"(默认):未知发送者获得一次性配对码用于批准"allowlist":仅允许allowFrom中的发送者(或配对的允许存储)"open":允许所有入站私信(需设为allowFrom: ["*"])"disabled":忽略所有私信
groupPolicy + groupAllowFrom 或渠道特定的允许列表。
配置会话与重置
会话控制对话连续性和隔离:dmScope:main(共享) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings:线程绑定的全局默认,会话路由
启用沙箱环境
在隔离的 Docker 容器中运行代理会话:请先构建镜像:
scripts/sandbox-setup.sh设置心跳(周期性签到)
every:时间间隔字符串(如30m、2h),设置0m禁用target:last|whatsapp|telegram|discord|none
配置定时任务
配置多代理路由
运行多个隔离代理,使用独立的工作区和会话:配置热重载
Gateway 会监视~/.openclaw/openclaw.json 并自动应用更改 — 大多数设置无需手动重启。
重载模式
| 模式 | 行为 |
|---|---|
hybrid(默认) | 安全更改即时热应用。关键信息变更自动重启。 |
hot | 仅热应用安全更改。需要重启时记录警告,由您负责重启。 |
restart | 任何配置变更(安全或非安全)均重启 Gateway。 |
off | 关闭文件监视。变更仅在下次手动重启时生效。 |
哪些更改热应用,哪些需要重启
大部分字段可热应用且无停机。hybrid 模式会自动处理需要重启的更改。
| 分类 | 字段 | 需重启? |
|---|---|---|
| 渠道 | channels.*、web(WhatsApp) | 否 |
| 代理与模型 | agent, agents, models, routing | 否 |
| 自动化 | hooks, cron, agent.heartbeat | 否 |
| 会话与消息 | session, messages | 否 |
| 工具与媒体 | tools, browser, skills, audio, talk | 否 |
| UI 与杂项 | ui, logging, identity, bindings | 否 |
| Gateway 服务器 | gateway.*(端口、绑定、认证、tailscale、TLS、HTTP) | 是 |
| 基础架构 | discovery, canvasHost, plugins | 是 |
gateway.reload 和 gateway.remote 是例外——更改它们不会触发重启。环境变量
OpenClaw 会读取父进程的环境变量,以及:- 当前工作目录下的
.env(如果存在) ~/.openclaw/.env(全局备用)
Shell 环境导入(可选)
如果启用且缺少预期的键,OpenClaw 会运行登录 shell,仅导入缺少的键:OPENCLAW_LOAD_SHELL_ENV=1
配置值中的环境变量替换
在任何配置字符串中,可以用${VAR_NAME} 引用环境变量:
- 仅匹配大写名称:
[A-Z_][A-Z0-9_]* - 缺失或空值在加载时抛错
- 用
$${VAR}转义输出字面量 - 可用于
$include文件中 - 内联替换例子:
"${BASE}/v1"→"https://api.example.com/v1"
拆分配置文件($include)
使用$include 组织大型配置:
- 单文件:替换包含对象
- 文件数组:顺序深度合并(后者覆盖前者)
- 同级键:合并在包含后,覆盖包含值
- 嵌套包含:支持最多 10 层深度
- 相对路径:相对于包含文件解析
- 错误处理:缺少文件、解析错误和循环包含均有清晰报错
下一步
环境变量
了解环境变量加载顺序
更新
保持 OpenClaw 最新