快速入门
最小(docker run)
docker run -d \
--name openclaw \
-p 8080:8080 \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e AUTH_PASSWORD=changeme \
-e OPENCLAW_GATEWAY_TOKEN=my-secret-token \
-v openclaw-data:/data \
coollabsio/openclaw:latest
-
ANTHROPIC_API_KEY— 任何受支持的提供商密钥均可使用(OpenAI、Gemini 等) -
AUTH_PASSWORD— 使用 HTTP 基本身份验证保护 Web UI(用户默认使用admin,可通过覆盖AUTH_USERNAME) -
OPENCLAW_GATEWAY_TOKEN— 内部 API 令牌;如果省略则自动生成,但为了获得稳定的 API 访问权限,请显式设置。 -
/data— 重启后仍能保留状态、配置和工作区
完整配置(docker-compose)
包括持久存储、浏览器边车(CDP + VNC)和 webhook 钩子。参见docker-compose.yml。
docker compose up -d
开始之后:
-
OpenClaw 用户界面— localhost:8080(登录名:您的
AUTH_USERNAME/AUTH_PASSWORD) -
浏览器桌面— localhost:8080/browser/(login: your
AUTH_USERNAME/ browserPASSWORD) — 使用此方法登录需要身份验证的网站(OAuth、双因素身份验证、验证码)。Openclaw 通过 CDP 重用会话。
建筑学
┌─────────────────────────────────────────────┐
│ Docker container (coollabsio/openclaw) │
│ │
│ Baked in: Linuxbrew, Go, uv, build-essential│
│ Persistent volume: /data │
│ ├── .openclaw/ (state & config) │
│ └── workspace/ (user projects) │
│ │
│ ┌──────────┐ :8080 ┌────────────────┐ │
│ │ nginx │ ──────→ │ openclaw │ │
│ │ (basic │ proxy │ gateway │ │
│ │ auth) │ :18789 │ :18789 │ │
│ └──────────┘ └────────────────┘ │
│ │
│ entrypoint.sh │
│ 1. run custom init script (optional) │
│ 2. configure.js (env vars → json) │
│ 3. nginx (background) │
│ 4. exec openclaw gateway │
└─────────────────────────────────────────────┘
双层 Docker 构建:
-
基础镜像(
Dockerfile.base)— 从源代码构建 openclaw。已标记coollabsio/openclaw-base:<version>。 -
最终镜像(
Dockerfile)— 基于基础镜像,添加了nginx和env-to-config脚本。已标记coollabsio/openclaw:<version>。
文件
.github/workflows/auto-update.yml — cron every 6h, check openclaw releases, build+push
.github/workflows/build.yml — CI on push/PR (build only, no push)
Dockerfile.base — multi-stage: build openclaw from source → slim runtime
Dockerfile — FROM base, add nginx + config scripts + entrypoint
scripts/configure.js — reads env vars, writes/patches openclaw.json
scripts/entrypoint.sh — container entrypoint: configure → nginx → gateway
scripts/smoke.js — smoke test (openclaw --version)
nginx/default.conf — reverse proxy :8080 → :18789, optional basic auth
.dockerignore — standard ignores
.env.example — env var reference
auto-update.yml 工作流程
Jobs:
1. check-release — fetch latest openclaw/openclaw release, skip if image exists
2. build-base — matrix amd64/arm64, build Dockerfile.base, push per-arch
3. merge-base-manifest — merge into coollabsio/openclaw-base:<ver> + :latest
4. build-final — matrix amd64/arm64, build Dockerfile, push per-arch
5. merge-final-manifest — merge into coollabsio/openclaw:<ver> + :latest
触发器:schedule: '0 */6 * * *'+ workflow_dispatch(版本、强制重建、跳过最新标签)。
需要密钥(仓库设置)
-
DOCKERHUB_USERNAME— Docker Hub 用户名 -
DOCKERHUB_TOKEN— Docker Hub 访问令牌 -
GITHUB_TOKEN— 由 GitHub Actions 自动提供
环境变量
人工智能提供商(至少需要一家)
| 多变的 | 描述 |
|---|---|
ANTHROPIC_API_KEY |
Anthropic API 密钥。用于配置 Claude 模型(Opus 4.5、Sonnet 4.5、Haiku 4.5)。如果存在,则设置为主要密钥。 |
OPENAI_API_KEY |
OpenAI API 密钥。用于配置 GPT 模型(5.2、5、4.5-预览版)。如果没有 Anthropic 密钥,则使用此主密钥。 |
OPENROUTER_API_KEY |
OpenRouter API 密钥。如果没有 Anthropologie/OpenAI 密钥,则使用主密钥。 |
GEMINI_API_KEY |
Google Gemini API 密钥。如果未设置其他提供商密钥,则为主要密钥。 |
XAI_API_KEY |
xAI API 密钥。用于配置 Grok 模型。 |
GROQ_API_KEY |
Groq API 密钥。用于在 Groq 硬件上配置 Llama 模型。 |
MISTRAL_API_KEY |
Mistral API 密钥。用于配置 Mistral Large 及其他型号。 |
CEREBRAS_API_KEY |
Cerebras API 密钥。用于在 Cerebras 硬件上配置 Llama 模型。 |
VENICE_API_KEY |
Venice AI API 密钥(兼容 OpenAI)。配置 Llama 3.3 70B。 |
MOONSHOT_API_KEY |
Moonshot API 密钥(兼容 OpenAI)。用于配置 Kimi K2.5。 |
KIMI_API_KEY |
Kimi Coding API密钥(兼容Anthropic)。用于配置K2P5。 |
MINIMAX_API_KEY |
MiniMax API 密钥(兼容 Anthropic)。用于配置 MiniMax M2.1。 |
ZAI_API_KEY |
ZAI API密钥。用于配置GLM模型。 |
AI_GATEWAY_API_KEY |
Vercel AI 网关 API 密钥。 |
OPENCODE_API_KEY |
OpenCode API 密钥。也接受为OPENCODE_ZEN_API_KEY. |
SYNTHETIC_API_KEY |
合成 API 密钥(与人类学兼容)。 |
COPILOT_GITHUB_TOKEN |
GitHub Copilot 令牌。通过 GitHub 配置 Claude 模型。 |
XIAOMI_API_KEY |
小米 MiMo API 密钥(兼容 Anthropico)。配置 MiMo v2 闪存。 |
可以同时设置多个提供商。主要模型的优先级:Anthropic > OpenAI > OpenRouter > Gemini > OpenCode > GitHub Copilot > xAI > Groq > Mistral > Cerebras > Venice > Moonshot > Kimi > MiniMax > Synthetic > ZAI > AI Gateway > Xiaomi > Bedrock > Ollama。
openclaw.json如果删除了提供程序环境变量,则下次启动时会从该提供程序部分中清除该变量。
Deepgram(音频转录,可选)
| 多变的 | 描述 |
|---|---|
DEEPGRAM_API_KEY |
Deepgram API密钥。可通过Nova 3型号启用音频转录。 |
Amazon Bedrock(使用 AWS 凭证链)
| 多变的 | 默认 | 描述 |
|---|---|---|
AWS_ACCESS_KEY_ID |
AWS 访问密钥。两者AWS_ACCESS_KEY_ID都是AWS_SECRET_ACCESS_KEY必需的。 |
|
AWS_SECRET_ACCESS_KEY |
AWS 密钥。 | |
AWS_REGION |
us-east-1 |
Bedrock 运行时端点的 AWS 区域。 |
AWS_SESSION_TOKEN |
用于临时凭据的可选会话令牌。 | |
BEDROCK_PROVIDER_FILTER |
["anthropic"] |
按提供商筛选基岩模型发现(JSON 数组或逗号分隔字符串)。 |
Ollama(本地模型,无需 API 密钥)
| 多变的 | 描述 |
|---|---|
OLLAMA_BASE_URL |
Ollama 服务器 URL(例如host.docker.internal:11434)。设置后启用 Ollama 提供程序。 |
模型选择
| 多变的 | 描述 |
|---|---|
OPENCLAW_PRIMARY_MODEL |
覆盖自动选择的主模型。格式:(provider/model-id例如anthropic/claude-sonnet-4-5-20250929)。 |
HTTP 基本身份验证(推荐)
| 多变的 | 默认 | 描述 |
|---|---|---|
AUTH_PASSWORD |
(没有任何) | 如果设置,nginx 将对除 hooks 路径(启用 hooks 时)之外的所有路由强制执行 HTTP 基本身份验证/healthz。如果未设置,则不进行身份验证——网关开放。 |
AUTH_USERNAME |
admin |
用于基本身份验证的用户名。 |
网关
| 多变的 | 默认 | 描述 |
|---|---|---|
OPENCLAW_GATEWAY_TOKEN |
(自动生成) | <STATE_DIR>/gateway.token用于网关认证的 Bearer 令牌。如果未设置,则自动生成并持久保存。 |
OPENCLAW_GATEWAY_PORT |
18789 |
网关绑定的内部端口。 |
OPENCLAW_GATEWAY_BIND |
loopback |
网关绑定模式。loopback= 仅限 127.0.0.1(nginx 代理 LAN 流量)。= lan0.0.0.0(直接访问,绕过 nginx 身份验证)。另见:tailnet,,auto。custom |
OPENCLAW_STATE_DIR |
/data/.openclaw |
持久状态目录。在此处挂载卷。 |
OPENCLAW_WORKSPACE_DIR |
/data/workspace |
openclaw 项目的工作区目录。 |
OPENCLAW_CONFIG_PATH |
<STATE_DIR>/openclaw.json |
覆盖配置文件路径。 |
OPENCLAW_CUSTOM_CONFIG |
/app/config/openclaw.json |
用户提供的自定义 JSON 配置路径。环境变量覆盖其上。 |
钩子(webhook 自动化,可选)
| 多变的 | 默认 | 描述 |
|---|---|---|
HOOKS_ENABLED |
设置为true启用 webhook hooks 端点。 |
|
HOOKS_TOKEN |
用于钩子请求身份验证的共享密钥。启用钩子时,OpenClaw 需要此密钥。 | |
HOOKS_PATH |
/hooks |
钩子端点的路径前缀(/hooks/wake,,/hooks/agent等等)。 |
启用钩子并AUTH_PASSWORD进行相应设置后,钩子路径会自动绕过 HTTP 基本身份验证。Openclaw 会使用钩子令牌来验证请求。文档:docs.openclaw.ai/automation/webhook
浏览器工具(远程 CDP 边车,可选)
| 多变的 | 默认 | 描述 |
|---|---|---|
BROWSER_CDP_URL |
指向浏览器边车的远程 CDP URL(例如browser:9222)。激活浏览器工具需要此 URL。 | |
BROWSER_EVALUATE_ENABLED |
false |
允许通过浏览器操作在页面上下文中执行 JavaScript 代码。 |
BROWSER_SNAPSHOT_MODE |
默认快照模式(例如efficient)。 |
|
BROWSER_REMOTE_TIMEOUT_MS |
1500 |
远程 CDP 连接的 HTTP 超时时间(毫秒)。 |
BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS |
3000 |
远程 CDP 的 WebSocket 握手超时时间(毫秒)。 |
BROWSER_DEFAULT_PROFILE |
覆盖默认浏览器配置文件名称。 |
需要一个通过 Docker 网络连接的独立浏览器容器。推荐配置:(kasmweb/chrome通过 noVNC 启用完整版 Chrome 桌面:6901,并启用 CDP :9222)。文档:docs.openclaw.ai/tools/browser
浏览器登录(VNC sidecar)
对于需要身份验证的网站,请使用此功能kasmweb/chrome以便您可以通过基于 Web 的桌面手动登录。Openclaw 会通过 CDP 重用已验证的会话。
-
打开
https://<host>:6901——通过 noVNC 实现完整的 Chrome 桌面 -
导航至目标网站,手动登录(处理验证码、双因素身份验证、OAuth)
-
会话在挂载的卷中会在重启后保留。
-
设置
BROWSER_CDP_URL=http://browser:9222— openclaw 通过 CDP 连接
在边车容器的配置文件目录下挂载一个持久卷,/home/kasm-user以便 cookie 和会话在容器重启后仍然有效。边车容器可能需要CHROME_ARGS=--remote-debugging-port=9222 --remote-debugging-address=0.0.0.0暴露 CDP。文档:docs.openclaw.ai/tools/browser-login
通道(可选)
| 多变的 | 默认 | 描述 |
|---|---|---|
TELEGRAM_BOT_TOKEN |
来自 BotFather 的 Telegram 机器人令牌。 | |
TELEGRAM_DM_POLICY |
pairing |
DM访问策略:pairing,,,或allowlist。opendisabled |
TELEGRAM_ALLOW_FROM |
以逗号分隔的用户 ID/用户名允许列表。当需要时dmPolicy=allowlist(dmPolicy=open使用*)。 |
|
TELEGRAM_GROUP_POLICY |
allowlist |
组访问策略:open,,allowlist或disabled。 |
TELEGRAM_GROUP_ALLOW_FROM |
以逗号分隔的群组发件人允许列表(用户 ID/用户名)。 | |
TELEGRAM_REPLY_TO_MODE |
first |
回复主题:off,,first或all。 |
TELEGRAM_CHUNK_MODE |
length |
出站拆分模式:length或newline(段落边界)。 |
TELEGRAM_TEXT_CHUNK_LIMIT |
4000 |
出站文本块大小(字符)。 |
TELEGRAM_STREAM_MODE |
partial |
草稿流:off,,partial或block。 |
TELEGRAM_LINK_PREVIEW |
true |
切换外发邮件的链接预览。 |
TELEGRAM_MEDIA_MAX_MB |
5 |
入站/出站媒体流量上限(MB)。 |
TELEGRAM_REACTION_NOTIFICATIONS |
own |
哪些反应会触发事件:off,,own或all。 |
TELEGRAM_REACTION_LEVEL |
minimal |
代理反应能力:off,,,或。ackminimalextensive |
TELEGRAM_INLINE_BUTTONS |
allowlist |
内联按钮功能:off,,,,或。dmgroupallallowlist |
TELEGRAM_ACTIONS_REACTIONS |
true |
Gate Telegram 工具反应。 |
TELEGRAM_ACTIONS_STICKER |
false |
Gate Telegram贴纸发送/搜索操作。 |
TELEGRAM_PROXY |
Bot API 调用的代理 URL(SOCKS/HTTP)。 | |
TELEGRAM_WEBHOOK_URL |
启用带有公共端点 URL 的 webhook 模式。 | |
TELEGRAM_WEBHOOK_SECRET |
Webook 密钥(可选)。 | |
TELEGRAM_WEBHOOK_PATH |
/telegram-webhook |
本地 webhook 路径,用于接收更新。 |
TELEGRAM_MESSAGE_PREFIX |
添加到入站消息前的前缀。 | |
DISCORD_BOT_TOKEN |
Discord 机器人令牌。在 Discord 开发者门户中启用消息内容意图。 | |
DISCORD_DM_POLICY |
pairing |
DM访问策略:pairing,,,或allowlist。opendisabled |
DISCORD_DM_ALLOW_FROM |
以逗号分隔的私信用户 ID/名称。 | |
DISCORD_GROUP_POLICY |
allowlist |
公会访问政策:open,,allowlist或disabled。 |
DISCORD_REPLY_TO_MODE |
off |
回复主题:off,,first或all。 |
DISCORD_CHUNK_MODE |
length |
出站拆分模式:length或newline。 |
DISCORD_TEXT_CHUNK_LIMIT |
2000 |
出站文本块大小(字符)。 |
DISCORD_MAX_LINES_PER_MESSAGE |
17 |
每条消息的软线路限制。 |
DISCORD_MEDIA_MAX_MB |
8 |
入站媒体流量上限(MB)。 |
DISCORD_HISTORY_LIMIT |
20 |
以下是公会最近的消息,供您参考。 |
DISCORD_DM_HISTORY_LIMIT |
每个用户的私信历史记录数量有限制。 | |
DISCORD_REACTION_NOTIFICATIONS |
own |
哪些反应会触发事件:off,,,或。ownallallowlist |
DISCORD_ALLOW_BOTS |
false |
处理来自其他机器人的消息。 |
DISCORD_MESSAGE_PREFIX |
添加到入站消息前的前缀。 | |
DISCORD_ACTIONS_REACTIONS |
true |
门反应动作。 |
DISCORD_ACTIONS_STICKERS |
true |
寄送门贴纸。 |
DISCORD_ACTIONS_EMOJI_UPLOADS |
true |
上传大门表情符号。 |
DISCORD_ACTIONS_STICKER_UPLOADS |
true |
上传登机口贴纸。 |
DISCORD_ACTIONS_POLLS |
true |
创建投票站。 |
DISCORD_ACTIONS_PERMISSIONS |
true |
网关通道权限编辑。 |
DISCORD_ACTIONS_MESSAGES |
true |
门禁消息读取/发送/编辑/删除。 |
DISCORD_ACTIONS_THREADS |
true |
门线程操作。 |
DISCORD_ACTIONS_PINS |
true |
门引脚/引脚断开操作。 |
DISCORD_ACTIONS_SEARCH |
true |
网关消息搜索。 |
DISCORD_ACTIONS_MEMBER_INFO |
true |
门卫成员查询。 |
DISCORD_ACTIONS_ROLE_INFO |
true |
登机口角色列表。 |
DISCORD_ACTIONS_CHANNEL_INFO |
true |
门通道信息。 |
DISCORD_ACTIONS_CHANNELS |
true |
门通道管理。 |
DISCORD_ACTIONS_VOICE_STATUS |
true |
门语音状态。 |
DISCORD_ACTIONS_EVENTS |
true |
门禁活动管理。 |
DISCORD_ACTIONS_ROLES |
false |
门禁角色添加/移除。 |
DISCORD_ACTIONS_MODERATION |
false |
门禁超时/踢出/封禁。 |
SLACK_BOT_TOKEN |
Slack 机器人令牌(xoxb-...)。Slack 需要机器人令牌和应用程序令牌。 |
|
SLACK_APP_TOKEN |
Slack 应用令牌(xapp-...)。 |
|
SLACK_USER_TOKEN |
Slack 用户令牌(xoxp-...)。可选,用于用户级 API 调用。 |
|
SLACK_SIGNING_SECRET |
用于HTTP模式验证的签名密钥。 | |
SLACK_MODE |
socket |
连接模式:socket或http。 |
SLACK_WEBHOOK_PATH |
/slack/events |
HTTP 模式下的 Webhook 路径。 |
SLACK_DM_POLICY |
pairing |
DM 访问策略:pairing或open。 |
SLACK_DM_ALLOW_FROM |
以逗号分隔的私信允许列表中的用户 ID/句柄。 | |
SLACK_GROUP_POLICY |
open |
通道访问策略:open,,allowlist或disabled。 |
SLACK_REPLY_TO_MODE |
off |
回复主题:off,,first或all。 |
SLACK_REACTION_NOTIFICATIONS |
own |
哪些反应会触发事件:off,,own或all。 |
SLACK_CHUNK_MODE |
newline |
出站拆分模式。 |
SLACK_TEXT_CHUNK_LIMIT |
4000 |
出站文本块大小(字符)。 |
SLACK_MEDIA_MAX_MB |
20 |
入站媒体流量上限(MB)。 |
SLACK_HISTORY_LIMIT |
50 |
近期频道消息,供参考。 |
SLACK_ALLOW_BOTS |
false |
处理来自其他机器人的消息。 |
SLACK_MESSAGE_PREFIX |
添加到入站消息前的前缀。 | |
SLACK_ACTIONS_REACTIONS |
true |
门反应动作。 |
SLACK_ACTIONS_MESSAGES |
true |
门禁消息读取/发送/编辑/删除。 |
SLACK_ACTIONS_PINS |
true |
门引脚/引脚断开操作。 |
SLACK_ACTIONS_MEMBER_INFO |
true |
门卫成员查询。 |
SLACK_ACTIONS_EMOJI_LIST |
true |
检索大门表情符号列表。 |
WHATSAPP_ENABLED |
启用此选项true可开启 WhatsApp 频道。运行时使用二维码/配对码进行身份验证。 |
|
WHATSAPP_DM_POLICY |
pairing |
DM访问策略:pairing,,,或allowlist。opendisabled |
WHATSAPP_ALLOW_FROM |
DM 允许列表中的逗号分隔的 E.164 电话号码。 | |
WHATSAPP_SELF_CHAT_MODE |
false |
使用您的个人 WhatsApp 号码运行时启用此功能。 |
WHATSAPP_GROUP_POLICY |
allowlist |
组访问策略:open,,disabled或allowlist。 |
WHATSAPP_GROUP_ALLOW_FROM |
以逗号分隔的 E.164 电话号码,用于群组发件人允许列表。 | |
WHATSAPP_MEDIA_MAX_MB |
50 |
入站媒体存储上限(MB)。 |
WHATSAPP_HISTORY_LIMIT |
50 |
插入最近未处理的消息以提供群组上下文。 |
WHATSAPP_DM_HISTORY_LIMIT |
DM历史记录限制以用户回合数为单位。 | |
WHATSAPP_SEND_READ_RECEIPTS |
true |
收到邮件后发送已读回执(蓝色勾号)。 |
WHATSAPP_ACK_REACTION_EMOJI |
消息接收时发送表情符号(例如👀)。省略此操作将禁用此功能。 |
|
WHATSAPP_ACK_REACTION_DIRECT |
true |
在私信聊天中发送确认回复。 |
WHATSAPP_ACK_REACTION_GROUP |
mentions |
群体反应行为:always,,mentions或never。 |
WHATSAPP_MESSAGE_PREFIX |
入站消息前缀。 | |
WHATSAPP_ACTIONS_REACTIONS |
true |
启用 WhatsApp 表情工具。 |
如果移除某个频道的环境变量,则下次启动时该频道的配置将被清除。WhatsApp 环境变量会完全覆盖任何现有的 WhatsApp 配置(不会与自定义 JSON 合并)。
提供程序覆盖(可选)
| 多变的 | 描述 |
|---|---|
AI_GATEWAY_BASE_URL |
AI网关(例如Cloudflare AI网关)的自定义基本URL。根据URL后缀应用于匹配的提供商。 |
ANTHROPIC_BASE_URL |
具体来说,覆盖 Anthropic API 的基本 URL。 |
MOONSHOT_BASE_URL |
覆盖 Moonshot API 基本 URL。默认值:api.moonshot.ai/v1。 |
KIMI_BASE_URL |
覆盖 Kimi Coding API 基本 URL。默认值:api.moonshot.ai/anthropic。 |
额外系统软件包(可选)
| 多变的 | 描述 |
|---|---|
OPENCLAW_DOCKER_APT_PACKAGES |
以空格分隔的 apt 软件包列表,用于在容器启动时安装(例如ffmpeg build-essential)。软件包会在 OpenClaw 启动前安装,并在每次容器重启时重新安装。 |
Linuxbrew(已集成到镜像中)
基础镜像已内置常用技能依赖关系:
-
**Linuxbrew——**开箱即用
/home/linuxbrew/.linuxbrew但需要brew改进的技能 -
Go——
/usr/local/go用于 Go 语言相关的技能和工具 -
uv — 适用于 Python 技能的快速 Python 包管理器
-
build-essential、git、curl — 常见的构建依赖项
注意:运行时安装的软件包(例如通过 `apt install` brew install)是容器文件系统的一部分,不会在容器重建后保留。要永久添加软件包,请自定义 `apt install`Dockerfile.base或使用OPENCLAW_DOCKER_APT_PACKAGESapt-available 提供的等效软件包。
自定义初始化脚本(可选)
| 多变的 | 默认 | 描述 |
|---|---|---|
OPENCLAW_DOCKER_INIT_SCRIPT |
(没有任何) | 每次容器启动时,在 OpenClaw 启动之前运行的脚本。必须是可执行且幂等的。 |
港口
| 多变的 | 默认 | 描述 |
|---|---|---|
PORT |
8080 |
nginx 监听的外部端口。 |
Coolify特有(由Coolify自动设置)
| 多变的 | 描述 |
|---|---|
COOLIFY_FQDN |
由 Coolify 分配的公共 FQDN。 |
COOLIFY_URL |
Coolify 控制面板网址。 |
COOLIFY_BRANCH |
Git分支已部署。 |
自定义 JSON 配置(Docker 挂载)
对于过于复杂的设置(例如channels.*.groups,代理默认值、插件配置),无法使用扁平化的环境变量,请将自定义 JSON 文件挂载到容器中:
docker run -v ./my-openclaw.json:/app/config/openclaw.json ...
OPENCLAW_CUSTOM_CONFIG如有需要,可使用环境变量覆盖挂载路径。
三层合并顺序(configure.js):
-
自定义 JSON(
/app/config/openclaw.json)— 基础层 -
持久化状态(
<STATE_DIR>/openclaw.json)— 保留先前运行的运行时更改 -
环境变量——始终优先应用。
数组会被替换,而不是连接。提供商 API 密钥始终从环境变量中读取,绝不会从 JSON 中读取。
注意: WhatsApp 是一个特例——当使用 WhatsApp 时WHATSAPP_ENABLED=true,环境变量会完全覆盖 WhatsApp 配置块(自定义的 JSON WhatsApp 键将被丢弃)。对于所有其他渠道,自定义的 JSON 键将被保留,环境变量会叠加在其上。
笔记
-
Openclaw 使用 CalVer
v2026.1.29(大致每日发布版本)。通过 GitHub Releases API 检测到。 -
使用原生
ubuntu-24.04-arm运行器进行 arm64 构建(与 coollabsio/pocketbase 模式相同)。 -
配置由环境驱动:设置环境变量 → 重启容器 → 配置自动更新。