乐于分享
好东西不私藏

OpenClaw-Onboard引导与配置全解

OpenClaw-Onboard引导与配置全解

本节目标:把 openclaw onboard 这个魔法盒子打开,搞清楚它生成的 openclaw.json 每个字段是干啥的。读完你就脱离向导,手动改任何配置——这是从”按钮用户”升级到”配置玩家”的关键一步。


一、为什么要懂配置文件

onboard 像一个开盒按钮——按一下,所有东西帮你装好。但它有三个限制:

  1. 1. 它问的问题有限——很多高级配置(沙箱细节、Skill 策略、模型路由)它不问
  2. 2. 改配置每次都重跑向导?太累——比如想换个 API Key,要重新走一遍
  3. 3. 没法版本控制——团队/多机器同步配置全靠手动复制

懂 openclaw.json 之后:

你能干的事            ❌ 不懂配置时           ✅ 懂配置后─────────────       ───────────────         ───────────────换个模型              重跑 onboard           改一行加个工作空间          重跑 onboard           写 5 行 JSON迁到新机器            重新装一遍             scp 一个文件团队共享配置          没法                   git 提交配置临时禁用一个 Skill    UI 点击或重跑          改一个字段

二、Onboard 到底做了什么

让我们解剖这个命令:

openclaw onboard

它干了 6 件事:

┌───────────────────────────────────────────────┐│  1. 检测系统(macOS/Linux/Windows、Node 版本)    ││  2. 让你选模型 + 输 API Key                     ││  3. 启动并(可选)装为 daemon 系统服务              ││  4. 创建第一个 Workspace                        ││  5. 引导你绑第一个 Channel                       ││  6. 把以上全部写入 ~/.openclaw/openclaw.json     │└───────────────────────────────────────────────┘

第 6 步是关键——所有的引导结果最终落到一个 JSON 文件


三、openclaw.json 在哪儿

macOS / Linux:   ~/.openclaw/openclaw.jsonWindows (WSL2):  ~/.openclaw/openclaw.json (在 Linux 子系统里)Windows (原生):  %USERPROFILE%\.openclaw\openclaw.jsonDocker:          /data/openclaw.json (你挂载的卷里)
# 看一眼cat ~/.openclaw/openclaw.json | head -50

四、openclaw.json 全字段拆解

下面是一个完整示例(标注每个字段的作用):

{  // ─── 1. 顶层元数据 ───  "version": "2026.4.14",            // 配置文件 schema 版本,自动写入  "instance_id": "ic_8f3a...",       // 这台 OpenClaw 实例的唯一 ID  // ─── 2. Gateway 网关配置 ───  "gateway": {    "host": "127.0.0.1",             // 监听地址。改 0.0.0.0 才能远程访问    "port": 7777,                    // 端口    "daemon":true,                  // 是否作为系统服务运行    "log_level": "info",             // debug / info / warn / error    "data_dir": "~/.openclaw/data",  // 数据目录(SQLite 库、缓存等)    "rpc": {      "auth_required":true,         // 远程调用是否需鉴权      "tokens": ["rpc_xxxxxx"]       // RPC 访问 Token 列表    }  },  // ─── 3. 模型配置 ───  "providers": {    "anthropic": {      "api_key": "sk-ant-xxxxxx",    // ⚠️ 别推到 git      "base_url": "https://api.anthropic.com",      "models": ["claude-sonnet-4-6", "claude-opus-4-7", "claude-haiku-4-5"]    },    "openai": {      "api_key": "sk-xxxxxx",      "base_url": "https://api.openai.com/v1"    },    "moonshot": {      "api_key": "sk-xxxxxx",      "base_url": "https://api.moonshot.cn/v1",      "models": ["kimi-k2.5", "kimi-k2"]    }  },  // ─── 4. Workspaces 工作空间 ───  "workspaces": {    "personal": {      "description": "个人助理",      "model": {        "provider": "anthropic",        "name": "claude-sonnet-4-6",        "temperature": 0.7,        "max_tokens": 4096      },      "system_prompt": "你是 Molty,一只生活在用户电脑里的友善 AI 助手……",      "memory": {        "scope": "channel",          // channel / workspace / global        "ttl_days": 30,              // 短期记忆保留天数        "long_term_max": 1000        // 长期记忆条目上限      },      "skills": {        "filesystem": { "policy": "approve" },        "shell":      { "policy": "approve" },        "http":       { "policy": "trust"   },        "web":        { "policy": "trust"   },        "memory":     { "policy": "trust"   },        "cron":       { "policy": "approve" }      },      "channels": ["telegram-personal", "whatsapp-personal"],      "sandbox": {        "type": "docker",            // docker / ssh / openshell / none        "image": "openclaw/sandbox:latest",        "timeout_seconds": 300,        "memory_limit_mb": 512,        "cpu_quota": "1.0",        "network": "restricted"      // restricted / open / none      }    },    "coder": {      "description": "编程助手",      "model": {        "provider": "anthropic",        "name": "claude-opus-4-7",        "temperature": 0.2,        "max_tokens": 8192      },      "system_prompt": "你是一个资深工程师助手……",      "memory": { "scope": "workspace", "ttl_days": 90 },      "skills": {        "filesystem": { "policy": "approve" },        "shell":      { "policy": "approve" },        "git":        { "policy": "trust"   },        "github":     { "policy": "approve" },        "docker":     { "policy": "approve" }      },      "channels": ["slack-team", "webchat"],      "sandbox": {        "type": "docker",        "image": "openclaw/sandbox-coder:latest",        "mounts": [          { "source": "~/code", "target": "/workspace", "readonly":false }        ]      }    }  },  // ─── 5. Channels 渠道 ───  "channels": {    "telegram-personal": {      "type": "telegram",      "bot_token": "1234567890:AAH-xxxxxx",      "allowed_user_ids": [87654321, 12345678],      "default_workspace": "personal"    },    "whatsapp-personal": {      "type": "whatsapp",      "auth_method": "qr",      "session_path": "~/.openclaw/wa-session",      "allowed_phones": ["+1xxxxxxxxxx"],      "default_workspace": "personal"    },    "slack-team": {      "type": "slack",      "bot_token": "xoxb-xxxxxxxx",      "app_token": "xapp-xxxxxxxx",      "allowed_user_ids": ["U12345678"],      "default_workspace": "coder"    },    "webchat": {      "type": "webchat",      "url_prefix": "/chat",      "auth": "basic",      "username": "you",      "password_hash": "$2b$10$xxxxxxxx",      "default_workspace": "coder"    }  },  // ─── 6. Cron 任务 ───  "cron": {    "tasks": [      {        "id": "crn_001",        "name": "water-and-sleep",        "schedule": "0 23 * * *",       // cron 表达式        "workspace": "personal",        "channel": "telegram-personal",        "prompt": "现在 23 点了,提醒用户喝水睡觉。",        "enabled":true      }    ]  },  // ─── 7. 全局选项 ───  "global": {    "default_workspace": "personal",    "default_channel": "telegram-personal",    "telemetry":false,                  // 不向官方上报使用数据    "auto_update": "stable",             // stable / beta / dev / off    "notifications": {      "approval_pending": "desktop",     // 桌面 / 邮件 / 自家渠道      "errors": "telegram-personal"    }  }}

五、核心字段深挖

5.1 model 部分

"model": {  "provider": "anthropic",  "name": "claude-sonnet-4-6",  "temperature": 0.7,  "max_tokens": 4096}
字段
作用
推荐值
provider
哪家模型(对应 providers 里的 key)
anthropic

 最稳
name
具体模型
见下表
temperature
创造力(0=死板, 1=随性)
助理 0.5–0.7,代码 0.2–0.3
max_tokens
单次最大输出
4096 通常够用

模型选型速查:

┌──────────────────────┬─────────────────────────┐│  场景                 │  推荐模型                │├──────────────────────┼─────────────────────────┤│  日常助理             │  claude-sonnet-4-6      ││  深度思考 / 写代码     │  claude-opus-4-7        ││  量大、便宜、快        │  claude-haiku-4-5       ││  国内、长上下文        │  kimi-k2.5              ││  国内、最便宜          │  deepseek-chat          ││  完全本地、隐私敏感     │  ollama/qwen2.5:32b     │└──────────────────────┴─────────────────────────┘

5.2 memory 部分

"memory": {  "scope": "channel",  "ttl_days": 30,  "long_term_max": 1000}

scope 是关键:

channel    │ 每个渠道独立记忆(默认)           │ 你 Telegram 跟 Slack 互不知道           │workspace  │ 同一个工作空间下所有渠道共享           │ 适合"个人统一助理"           │global     │ 所有工作空间所有渠道共享           │ 一般不推荐,容易串味

5.3 skills 部分

"skills": {  "filesystem": { "policy": "approve" },  "filesystem.read": { "policy": "trust" },     // 子动作覆盖  "filesystem.delete": { "policy": "approve" }}

policy 的三种值:

approve  │ 每次执行前发批准请求(Telegram 推一条按钮)trust    │ 自动执行,事后通知block    │ 完全禁止执行

子动作可以覆盖:filesystem 整体设 trust,但 filesystem.delete 单独设 approve

5.4 sandbox 部分

"sandbox": {  "type": "docker",  "image": "openclaw/sandbox:latest",  "timeout_seconds": 300,  "memory_limit_mb": 512,  "cpu_quota": "1.0",  "network": "restricted",  "mounts": [    { "source": "~/code", "target": "/workspace", "readonly":false }  ]}
type:  docker      │ 最强隔离,要装 Docker  ssh         │ 在另一台机器跑(用户名/host 配在另一处)  openshell   │ 用户态隔离,起得快但弱  none        │ ❌ 不要选,Skill 直接在主系统跑network:  open        │ 完全联网  restricted  │ 只允许白名单域名  none        │ 完全离线

六、改配置的常见场景

场景 1:换 API Key

❌ 重跑 onboard。

✅ 直接改:

$EDITOR ~/.openclaw/openclaw.json# 找到 providers.anthropic.api_key, 改掉openclaw daemon restart

或:

openclaw config set providers.anthropic.api_key "sk-ant-newkey"

场景 2:同时支持 Claude 和 Kimi(灵活切换)

加一段:

"providers": {  "anthropic": { "api_key": "sk-ant-..." },  "moonshot":  { "api_key": "sk-...", "base_url": "https://api.moonshot.cn/v1" }}

然后给某个 Workspace 用 Kimi:

"workspaces": {  "family": {    "model": {      "provider": "moonshot",      "name": "kimi-k2.5"    }  }}

场景 3:把 Gateway 暴露到公网(谨慎)

"gateway": {  "host": "0.0.0.0",        // 监听所有网卡  "port": 7777,  "rpc": {    "auth_required":true,   // ⚠️ 绝对要 true    "tokens": ["rpc_xxxxx"]  }}

至少同时要做:防火墙限 IP、用 Cloudflare Tunnel / Tailscale,而不是裸暴露(详见主线 4)。

场景 4:临时禁用某个 Channel

不想删,只是暂时不用:

"channels": {  "slack-team": {    "type": "slack",    "enabled":false,      // 加这一行    ...  }}

或:

openclaw channel disable slack-team

场景 5:多机同步配置

最佳实践:配置和秘密分离

~/.openclaw/openclaw.json       ← 配置主体,可放 git~/.openclaw/secrets.env         ← API Key 等秘密,只本地

openclaw.json 用 ${ENV_VAR} 占位:

"providers": {  "anthropic": {    "api_key": "${ANTHROPIC_API_KEY}"  }}

secrets.env:

ANTHROPIC_API_KEY=sk-ant-xxxxTELEGRAM_BOT_TOKEN=12345:AAH-xxxx

openclaw daemon 启动前 source 一下 secrets.env,或者写到 systemd unit / launchd plist 的 EnvironmentFile

这样:

git add openclaw.json     ✅ 安全git add secrets.env       ❌ 千万别echo "secrets.env" >> .gitignore

七、配置版本管理

把 openclaw.json 提交到一个私有 git 仓库:

cd ~/.openclawgit initgit add openclaw.jsonecho "secrets.env" > .gitignoreecho "data/" >> .gitignore           # 别提交数据echo "*.session" >> .gitignore       # 别提交 WhatsApp 会话git commit -m "init"

好处:

  • • 你改坏了能回滚
  • • 多机用同一份配置
  • • 看 diff 知道你改了啥

🦞 强烈建议:每次大改前先 commit 一次。OpenClaw 自身没有”配置回滚”,git 是你最后的安全网。


八、命令行 vs 直接改文件 vs Web UI

┌───────────────┬────────────┬────────────────────┐│  方式          │ 优点       │ 缺点                │├───────────────┼────────────┼────────────────────┤│openclaw config│ 安全、自带   │ 复杂结构没法改       ││ set/get       │ 校验        │                    │├───────────────┼────────────┼────────────────────┤│ 直接改 json    │ 灵活,看 diff│ 容易写错,要懂结构     │├───────────────┼────────────┼────────────────────┤│ Web 控制台     │ 友好、可视化 │ 不支持所有字段       │└───────────────┴────────────┴────────────────────┘

推荐组合:

  • • 日常小改 → CLI
  • • 大动结构(加 Workspace、Sandbox)→ 直接改 JSON
  • • 看运行状态 → Web UI

九、改完配置后,什么时候要重启?

不同字段对重启的要求不一样:

不需要重启(改了立刻生效):  cron.tasks  workspaces.*.system_prompt  workspaces.*.memory.long_term_max  channels.*.allowed_user_ids需要重启 daemon:  gateway.*  providers.*  workspaces.*.model  sandbox.*需要 channel reload:  channels.* (除 allowed_user_ids 外)
# 通用做法openclaw daemon reload     # 软重载,不断连接openclaw daemon restart    # 硬重启,所有连接重连

十、本课知识地图

┌────────────────────────────────────────────────┐│         第 03 课·配置全解 知识地图                ││                                                ││  路径:                                          ││    ~/.openclaw/openclaw.json (主配置)           ││    ~/.openclaw/secrets.env  (秘密,不进 git)     ││                                                ││  七大顶层字段:                                   ││    1. version + instance_id                    ││    2. gateway       (host/port/daemon)         ││    3. providers     (各家 API Key)              ││    4. workspaces    (脑子 + 提示词 + 技能)       ││    5. channels      (嘴和耳朵)                  ││    6. cron          (定时任务)                  ││    7. global        (默认值 / telemetry)        ││                                                ││  三种配置方式:                                   ││    ├── openclaw config set/get(日常小改)        ││    ├── 直接改 JSON(大改)                        ││    └── Web UI(可视化、查状态)                    ││                                                ││  改完的处理:                                    ││    立刻生效 / daemon reload / daemon restart    ││                                                ││  最佳实践:                                      ││    ├── 配置和秘密分离                            ││    ├── 用 git 管理配置                          ││    ├── 大改前先 commit                          ││    └── 千万别把 secrets 推到公开仓库              │└────────────────────────────────────────────────┘

十一、扩展学习资源

必读

  • • OpenClaw 官方·配置参考[1] — 字段权威定义
  • • 本教程·附录·配置文件参考[2] — 字段速查表
  • • 本教程·第 13 课·沙箱与安全[3] — sandbox 字段深挖

推荐

  • • Apifox·配置图文[4] — 截图详细
  • • awesome-openclaw-tutorial · 配置实战[5]

动手实践

  • • 把你的 openclaw.json 提交到一个私有 git 仓库
  • • 把 API Key 抽到 secrets.env,跑通 ${ENV_VAR} 替换
  • • 创建第二个 Workspace,用不同模型 + 不同 system prompt
  • • 改一次 sandbox.network 为 restricted,试试 web skill 还能不能爬

下一篇章预告:[渠道接入] — 微信、QQ、钉钉、企业微信、飞书五个国内主战场,每个的合规注意事项和实操步骤。

引用链接

[1] OpenClaw 官方·配置参考: https://docs.openclaw.ai/zh-CN[2] 本教程·附录·配置文件参考: ../附录/配置文件参考.md[3] 本教程·第 13 课·沙箱与安全: ./13-沙箱与安全.md[4] Apifox·配置图文: https://apifox.com/apiskills/openclaw-installation-and-usage-guide/[5] awesome-openclaw-tutorial · 配置实战: https://github.com/xianyu110/awesome-openclaw-tutorial