配置基础
配置基础¶
配置文件是什么格式?它在哪里?
OpenClaw 从 $OPENCLAW_CONFIG_PATH(默认:~/.openclaw/openclaw.json)读取可选的 JSON5 配置。如果文件不存在,则使用较为安全的默认值,包括默认工作区 ~/.openclaw/workspace。
我设置了 gateway.bind: 'lan'(或 'tailnet'),但现在没有监听 / UI 显示未授权
非回环绑定需要有效的网关认证路径:共享密钥认证(token 或密码),或位于正确配置且可识别身份的反向代理之后的 gateway.auth.mode: "trusted-proxy"。
gateway.remote.token/.password本身不会启用本地网关认证;本地调用路径仅在gateway.auth.*未设置时,才能将gateway.remote.*用作回退。- 对于密码认证,设置
gateway.auth.mode: "password"以及gateway.auth.password(或OPENCLAW_GATEWAY_PASSWORD)。 - 如果通过 SecretRef 显式配置了
gateway.auth.token/.password但无法解析,则解析会以失败关闭(不会有远程回退遮蔽)。 - 共享密钥的 Control UI 设置通过
connect.params.auth.token或connect.params.auth.password(存储在应用/UI 设置中)进行认证。Tailscale Serve 或trusted-proxy等携带身份的模式改用请求头——避免将共享密钥放在 URL 中。 - 使用
gateway.auth.mode: "trusted-proxy"时,同主机回环反向代理需要显式设置gateway.auth.trustedProxy.allowLoopback = true,并在gateway.trustedProxies中添加回环条目。
为什么现在在 localhost 上需要 token?
OpenClaw 默认强制执行网关认证,包括回环地址。如果未配置显式认证路径,启动时会解析为 token 模式,并为该次启动生成一个仅运行时有效的 token,因此本地 WS 客户端必须进行认证。这会阻止其他本地进程调用 Gateway。
在全新的回环启动中,Gateway 会在 /readyz 之前准备好标准的同用户 CLI 设备凭据,因此普通的 openclaw CLI 调用无需持久化生成的 token 即可完成认证。其他客户端仍需要显式共享密钥或已批准的设备配对。
当客户端需要在重启后保持稳定密钥时,请显式配置 gateway.auth.token、gateway.auth.password、OPENCLAW_GATEWAY_TOKEN 或 OPENCLAW_GATEWAY_PASSWORD。你也可以选择密码模式,或为可识别身份的反向代理选择 trusted-proxy。如需开放回环,请显式设置 gateway.auth.mode: "none"。openclaw doctor --generate-gateway-token 可随时生成 token。
更改配置后是否需要重启?
Gateway 会监听配置并支持热重载:gateway.reload.mode: "hybrid"(默认)会热应用安全更改,并在关键更改时重启。off 会禁用配置重载;之前的 hot 和 restart 模式已退役。大多数 tools.*、agents.* 策略、session.* 和 messages.* 更改会立即生效,完全无需重载操作;gateway.* 的绑定/端口更改需要重启。
如何启用网页搜索(以及网页抓取)?
web_fetch 无需 API 密钥即可工作。web_search 取决于你选择的提供商:
| 提供商 | 免密钥 | 环境变量 |
|---|---|---|
| Brave | 否 | BRAVE_API_KEY |
| DuckDuckGo | 是(非官方,基于 HTML) | - |
| Exa | 否 | EXA_API_KEY |
| Firecrawl | 否 | FIRECRAWL_API_KEY |
| Gemini | 否 | GEMINI_API_KEY |
| Grok | 否(xAI OAuth 或密钥) | XAI_API_KEY |
| Kimi | 否 | KIMI_API_KEY 或 MOONSHOT_API_KEY |
| MiniMax Search | 否 | MINIMAX_CODE_PLAN_KEY、MINIMAX_CODING_API_KEY 或 MINIMAX_API_KEY |
| Ollama Web Search | 本地:是(需要 ollama signin);托管:否 |
托管:OLLAMA_API_KEY |
| Perplexity | 否 | PERPLEXITY_API_KEY 或 OPENROUTER_API_KEY |
| SearXNG | 是(自托管) | SEARXNG_BASE_URL |
| Tavily | 否 | TAVILY_API_KEY |
Grok 还可以复用来自模型认证的 xAI OAuth(openclaw onboard --auth-choice xai-oauth)。
推荐:运行 openclaw configure --section web 并选择一个提供商。
{
plugins: {
entries: {
brave: {
config: {
webSearch: {
apiKey: "BRAVE_API_KEY_HERE",
},
},
},
},
},
tools: {
web: {
search: {
enabled: true,
provider: "brave",
maxResults: 5,
},
fetch: {
enabled: true,
provider: "firecrawl", // optional; omit for auto-detect
},
},
},
}
特定提供商的网页搜索配置位于 plugins.entries.<plugin>.config.webSearch.* 下。旧的 tools.web.search.* 提供商路径出于兼容性仍会加载,但不应用于新配置。Firecrawl 的网页抓取回退配置位于 plugins.entries.firecrawl.config.webFetch.* 下。
- 允许列表:添加
web_search/web_fetch/x_search,或使用group:web一次性启用全部三项。 web_fetch默认启用。- 如果省略
tools.web.fetch.provider,OpenClaw 会根据可用凭据自动检测第一个可用的抓取回退提供商;官方 Firecrawl 插件即提供该回退。 - 守护进程从
~/.openclaw/.env(或服务环境)读取环境变量。
文档:Web 工具。
config.apply 清空了我的配置。如何恢复并避免这种情况?
config.apply 会替换整个配置;如果传入的是部分对象,则会移除所有其他配置。
当前的 OpenClaw 能保护大多数意外覆盖:
- OpenClaw 自身的配置写入会在写入前校验变更后的完整配置。
- 无效或破坏性的 OpenClaw 自身写入会被拒绝,并保存为
openclaw.json.rejected.*。 - 当整体结果校验通过时,启动过程可以在符合条件的单文件配置中迁移确定性的旧版键,并将之前的配置保留在
.bak轮换中。其他无效编辑会导致启动失败关闭;热重载会跳过无效编辑,而不重写openclaw.json。 openclaw doctor --fix负责该启动迁移之外的修复,可以恢复上次已知的良好配置,并将被拒绝的文件保存为openclaw.json.clobbered.*。
恢复:
- 检查 `openclaw logs --follow` 输出中是否有 `Invalid config at`、`Config write rejected:` 或 `config reload skipped (invalid config)`。
- 检查活动配置旁边最新的 `openclaw.json.clobbered.*` 或 `openclaw.json.rejected.*` 文件。
- 运行 `openclaw config validate` 和 `openclaw doctor --fix`。
- 使用 `openclaw config set` 或 `config.patch` 仅复制回所需的键。
- 如果没有最后已知良好或被拒绝的配置负载:从备份恢复,或重新运行 `openclaw doctor` 并重新配置渠道/模型。
- 意外丢失:请提交 bug,附上最后已知的配置或备份。本地编码智能体通常可以根据日志或历史记录重建可用的配置。
避免方法:使用 `openclaw config set` 进行小幅修改,使用 `openclaw configure` 进行交互式编辑,使用 `config.schema.lookup` 检查不熟悉的路径(返回浅层 schema 节点及直接子项摘要),并使用 `config.patch` 进行部分 RPC 编辑——将 `config.apply` 保留用于完整配置替换。面向智能体的 `gateway` 运行时工具拒绝通过旧版 `tools.bash.*` 别名重写 `tools.exec.ask` / `tools.exec.security`。
文档:[Config](../../cli/config.md)、[Configure](../../cli/configure.md)、[网关故障排查](../../gateway/troubleshooting.md#gateway-rejected-invalid-config)、[Doctor](../../gateway/doctor.md)。
如何跨设备运行中心网关与专用 Worker?
常见模式:一个网关(例如 Raspberry Pi)加上节点和智能体。
- 网关(中心):拥有渠道(Signal/WhatsApp)、路由、会话。
- 节点(设备):Mac/iOS/Android 作为外设连接,并暴露本地工具,如
system.run和camera;Mac 还可以在原生面板中展示托管的 widget。 - 智能体(Worker):为特殊角色(例如运维 vs 个人数据)提供独立的“大脑”/工作区。
- 子智能体:从主智能体派生出后台工作以实现并行处理。
- TUI:连接到网关并切换智能体/会话。
OpenClaw 浏览器可以无头运行吗?
可以:
{
browser: { headless: true },
agents: {
defaults: {
sandbox: { browser: { headless: true } },
},
},
}
默认值为 false(有头模式)。无头模式在某些网站上更有可能触发反机器人检查(X/Twitter 经常屏蔽无头会话)。它使用相同的 Chromium 引擎,适用于大多数自动化任务;主要区别是没有可见的浏览器窗口(如需视觉效果,请使用截图)。参见 浏览器。
如何将 Brave 用于浏览器控制?
将 browser.executablePath 设置为你 Brave 可执行文件的路径(或任何基于 Chromium 的浏览器),然后重启网关。参见 浏览器。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw