快速答案,以及面向真实设置(本地开发、VPS、多智能体、OAuth/API key、模型故障转移)的更深入故障排除。运行时诊断请参见故障排除。完整配置参考请参见配置。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
最初的六十秒:如果出现故障
-
快速状态(首项检查)
快速本地摘要:OS + 更新、gateway/服务可达性、智能体/会话、提供商配置 + 运行时问题(当 gateway 可达时)。
-
可粘贴报告(可安全共享)
只读诊断,包含日志尾部(令牌已脱敏)。
-
守护进程 + 端口状态
显示 supervisor 运行时与 RPC 可达性、探测目标 URL,以及服务可能使用的配置。
-
深度探测
运行实时 Gateway 网关健康探测,包括受支持时的渠道探测 (需要可达的 Gateway 网关)。参见健康。
-
跟踪最新日志
如果 RPC 不可用,回退到:文件日志与服务日志是分开的;参见日志和故障排除。
-
运行 Doctor(修复)
修复/迁移配置/状态 + 运行健康检查。参见 Doctor。
-
Gateway 网关快照
向正在运行的 Gateway 网关请求完整快照(仅 WS)。参见健康。
快速开始和首次运行设置
首次运行问答 —— 安装、新手引导、凭证路由、订阅、初始失败 —— 位于首次运行常见问题。什么是 OpenClaw?
什么是 OpenClaw?用一段话说明
什么是 OpenClaw?用一段话说明
价值主张
价值主张
- **你的设备,你的数据:**在任意位置运行 Gateway 网关(Mac、Linux、VPS),并将 工作区 + 会话历史保留在本地。
- **真实渠道,而不是 Web 沙箱:**WhatsApp/Telegram/Slack/Discord/Signal/iMessage/等, 以及受支持平台上的移动语音和 Canvas。
- **模型无关:**使用 Anthropic、OpenAI、MiniMax、OpenRouter 等,并支持按智能体路由 和故障转移。
- **仅本地选项:**运行本地模型,因此如果你愿意,所有数据都可以留在你的设备上。
- **多智能体路由:**按渠道、账号或任务分离智能体,每个智能体都有自己的 工作区和默认设置。
- **开源且易于改造:**无需供应商锁定,即可审查、扩展和自托管。
我刚完成设置,应该先做什么?
我刚完成设置,应该先做什么?
- 构建一个网站(WordPress、Shopify 或简单静态站点)。
- 原型设计一个移动应用(大纲、屏幕、API 计划)。
- 整理文件和文件夹(清理、命名、标记)。
- 连接 Gmail,并自动生成摘要或跟进事项。
OpenClaw 最常见的五个日常用例是什么?
OpenClaw 最常见的五个日常用例是什么?
- **个人简报:**汇总你关心的收件箱、日历和新闻。
- **研究和起草:**快速研究、摘要,以及邮件或文档的初稿。
- **提醒和跟进:**由 cron 或 Heartbeat 驱动的提醒和检查清单。
- **浏览器自动化:**填写表单、收集数据,并重复执行 Web 任务。
- **跨设备协作:**从手机发送任务,让 Gateway 网关在服务器上运行它,并在聊天中取回结果。
OpenClaw 能否帮助 SaaS 做潜在客户开发、外联、广告和博客?
OpenClaw 能否帮助 SaaS 做潜在客户开发、外联、广告和博客?
与 Claude Code 相比,OpenClaw 在 Web 开发上有哪些优势?
与 Claude Code 相比,OpenClaw 在 Web 开发上有哪些优势?
- 跨会话的持久记忆 + 工作区
- 多平台访问(WhatsApp、Telegram、TUI、WebChat)
- 工具编排(浏览器、文件、调度、钩子)
- 始终在线的 Gateway 网关(在 VPS 上运行,可从任何地方交互)
- 用于本地浏览器/屏幕/摄像头/执行的 Nodes
Skills 和自动化
如何自定义 Skills 而不让代码仓库保持脏状态?
如何自定义 Skills 而不让代码仓库保持脏状态?
~/.openclaw/skills/<name>/SKILL.md 中(或通过 ~/.openclaw/openclaw.json 中的 skills.load.extraDirs 添加文件夹)。优先级是 <workspace>/skills → <workspace>/.agents/skills → ~/.agents/skills → ~/.openclaw/skills → 内置 → skills.load.extraDirs,因此受管覆盖仍会优先于内置 Skills,而无需触碰 git。如果你需要全局安装该 Skill,但只对某些智能体可见,请将共享副本保留在 ~/.openclaw/skills 中,并使用 agents.defaults.skills 和 agents.list[].skills 控制可见性。只有值得上游合入的编辑才应放在代码仓库中并以 PR 形式提交。我可以从自定义文件夹加载 Skills 吗?
我可以从自定义文件夹加载 Skills 吗?
~/.openclaw/openclaw.json 中的 skills.load.extraDirs 添加额外目录(最低优先级)。默认优先级是 <workspace>/skills → <workspace>/.agents/skills → ~/.agents/skills → ~/.openclaw/skills → 内置 → skills.load.extraDirs。clawhub 默认安装到 ./skills,OpenClaw 会在下一个会话中将其视为 <workspace>/skills。如果该 Skill 只应对某些智能体可见,请搭配使用 agents.defaults.skills 或 agents.list[].skills。如何为不同任务使用不同模型?
如何为不同任务使用不同模型?
机器人在执行重型工作时卡住。如何卸载这些工作?
机器人在执行重型工作时卡住。如何卸载这些工作?
线程绑定的子智能体会话在 Discord 上如何工作?
线程绑定的子智能体会话在 Discord 上如何工作?
- 使用
sessions_spawn和thread: true生成(也可选择使用mode: "session"进行持久后续跟进)。 - 或使用
/focus <target>手动绑定。 - 使用
/agents检查绑定状态。 - 使用
/session idle <duration|off>和/session max-age <duration|off>控制自动取消聚焦。 - 使用
/unfocus分离线程。
- 全局默认值:
session.threadBindings.enabled、session.threadBindings.idleHours、session.threadBindings.maxAgeHours。 - Discord 覆盖:
channels.discord.threadBindings.enabled、channels.discord.threadBindings.idleHours、channels.discord.threadBindings.maxAgeHours。 - 生成时自动绑定:
channels.discord.threadBindings.spawnSessions默认为true;将其设为false可禁用线程绑定会话生成。
子智能体已完成,但完成更新发送到了错误位置或从未发布。我应该检查什么?
子智能体已完成,但完成更新发送到了错误位置或从未发布。我应该检查什么?
- 完成模式子智能体交付会优先使用任何已绑定线程或会话路由(如果存在)。
- 如果完成来源只携带一个渠道,OpenClaw 会回退到请求方会话存储的路由(
lastChannel/lastTo/lastAccountId),这样直接交付仍可成功。 - 如果既没有绑定路由,也没有可用的已存储路由,直接交付可能失败,结果会回退到排队的会话交付,而不是立即发布到聊天。
- 无效或过期的目标仍可能强制回退到队列,或导致最终交付失败。
- 如果子会话最后一条可见的助手回复正好是静默 Token
NO_REPLY/no_reply,或正好是ANNOUNCE_SKIP,OpenClaw 会有意抑制通知,而不是发布过期的较早进度。 - 如果子会话在只有工具调用后超时,通知可以将其压缩为简短的部分进度摘要,而不是重放原始工具输出。
Cron 或提醒没有触发。我应该检查什么?
Cron 或提醒没有触发。我应该检查什么?
Cron 已触发,但没有内容发送到渠道。为什么?
Cron 已触发,但没有内容发送到渠道。为什么?
--no-deliver/delivery.mode: "none"表示不会有预期的 runner 兜底发送。- 缺失或无效的公告目标(
channel/to)表示 runner 已跳过出站投递。 - 渠道认证失败(
unauthorized、Forbidden)表示 runner 曾尝试投递,但凭证阻止了它。 - 静默隔离结果(仅
NO_REPLY/no_reply)会被视为有意不可投递,因此 runner 也会抑制排队的兜底投递。
message
工具直接发送。--announce 只控制 runner
兜底路径,用于智能体尚未发送的最终文本。调试:为什么隔离 cron 运行会切换模型或重试一次?
为什么隔离 cron 运行会切换模型或重试一次?
如何在 Linux 上安装 Skills?
如何在 Linux 上安装 Skills?
openclaw skills 命令,或将 Skills 放入你的工作区。macOS Skills UI 在 Linux 上不可用。
在 https://clawhub.ai 浏览 Skills。openclaw skills install 会写入活动工作区的 skills/
目录。只有在你想发布或同步自己的 Skills 时,才需要安装单独的 clawhub CLI。
若要在多个智能体之间共享安装,请将 Skill 放在
~/.openclaw/skills 下;如果想收窄哪些智能体能看到它,请使用
agents.defaults.skills 或 agents.list[].skills。OpenClaw 能否按计划或在后台持续运行任务?
OpenClaw 能否按计划或在后台持续运行任务?
我能从 Linux 运行仅限 Apple macOS 的 Skills 吗?
我能从 Linux 运行仅限 Apple macOS 的 Skills 吗?
metadata.openclaw.os 加上必需二进制文件约束,并且 Skills 只有在 Gateway 网关主机上符合条件时才会出现在系统提示中。在 Linux 上,仅限 darwin 的 Skills(如 apple-notes、apple-reminders、things-mac)不会加载,除非你覆盖该门控。有三种受支持的模式:选项 A - 在 Mac 上运行 Gateway 网关(最简单)。
在存在 macOS 二进制文件的地方运行 Gateway 网关,然后从 Linux 以远程模式或通过 Tailscale 连接。由于 Gateway 网关主机是 macOS,Skills 会正常加载。选项 B - 使用 macOS 节点(无 SSH)。
在 Linux 上运行 Gateway 网关,配对一个 macOS 节点(菜单栏应用),并在 Mac 上将 Node Run Commands 设为 “Always Ask” 或 “Always Allow”。当节点上存在所需二进制文件时,OpenClaw 可以将仅限 macOS 的 Skills 视为符合条件。智能体会通过 nodes 工具运行这些 Skills。如果你选择 “Always Ask”,在提示中批准 “Always Allow” 会将该命令加入允许列表。选项 C - 通过 SSH 代理 macOS 二进制文件(高级)。
将 Gateway 网关保留在 Linux 上,但让所需 CLI 二进制文件解析为在 Mac 上运行的 SSH 包装器。然后覆盖 Skill 以允许 Linux,使其保持符合条件。-
为二进制文件创建 SSH 包装器(示例:Apple Notes 的
memo): -
将包装器放到 Linux 主机的
PATH中(例如~/bin/memo)。 -
覆盖 Skill 元数据(工作区或
~/.openclaw/skills)以允许 Linux: - 启动新会话,让 Skills 快照刷新。
你们有 Notion 或 HeyGen 集成吗?
你们有 Notion 或 HeyGen 集成吗?
- **自定义 Skill / 插件:**最适合可靠的 API 访问(Notion/HeyGen 都有 API)。
- **浏览器自动化:**无需代码即可工作,但更慢也更脆弱。
- 每个客户一个 Notion 页面(上下文 + 偏好 + 活跃工作)。
- 要求智能体在会话开始时获取该页面。
skills/ 目录。若要在智能体之间共享 Skills,请将它们放在 ~/.openclaw/skills/<name>/SKILL.md。如果只有部分智能体应该看到共享安装,请配置 agents.defaults.skills 或 agents.list[].skills。一些 Skills 预期通过 Homebrew 安装二进制文件;在 Linux 上这意味着 Linuxbrew(见上方 Homebrew Linux 常见问题条目)。参见 Skills、Skills 配置 和 ClawHub。如何让 OpenClaw 使用我现有已登录的 Chrome?
如何让 OpenClaw 使用我现有已登录的 Chrome?
user 浏览器配置文件,它会通过 Chrome DevTools MCP 附加:existing-session / user 的当前限制:- 操作由 ref 驱动,不由 CSS 选择器驱动
- 上传需要
ref/inputRef,并且目前一次支持一个文件 responsebody、PDF 导出、下载拦截和批量操作仍需要托管浏览器或原始 CDP 配置文件
沙箱隔离和记忆
Docker 感觉受限,如何启用完整功能?
Docker 感觉受限,如何启用完整功能?
我能用一个智能体让私信保持个人化,但让群组公开/沙箱隔离吗?
我能用一个智能体让私信保持个人化,但让群组公开/沙箱隔离吗?
agents.defaults.sandbox.mode: "non-main",使群组/渠道会话(非主键)在配置的沙箱后端中运行,而主私信会话保留在主机上。如果你未选择后端,Docker 是默认后端。然后通过 tools.sandbox.tools 限制沙箱隔离会话中可用的工具。设置演练 + 示例配置:群组:个人私信 + 公共群组关键配置参考:Gateway 网关配置如何将主机文件夹绑定进沙箱?
如何将主机文件夹绑定进沙箱?
记忆如何工作?
记忆如何工作?
memory/YYYY-MM-DD.md中的每日笔记MEMORY.md中经过整理的长期笔记(仅主/私有会话)
记忆总是忘事。如何让它记住?
记忆总是忘事。如何让它记住?
记忆会永久保留吗?有什么限制?
记忆会永久保留吗?有什么限制?
语义记忆搜索需要 OpenAI API key 吗?
语义记忆搜索需要 OpenAI API key 吗?
OPENAI_API_KEY 或 models.providers.openai.apiKey)。如果你没有显式设置提供商,OpenClaw 会在能够解析出 API key(认证配置文件、
models.providers.*.apiKey 或环境变量)时自动选择提供商。
如果解析到 OpenAI key,它会优先选择 OpenAI;否则如果解析到 Gemini key,
则选择 Gemini;然后是 Voyage,再然后是 Mistral。如果没有可用的远程 key,
记忆搜索会保持禁用,直到你完成配置。如果你已配置并提供了本地模型路径,
OpenClaw 会优先选择 local。当你显式设置
memorySearch.provider = "ollama" 时支持 Ollama。如果你更想保持本地运行,请设置 memorySearch.provider = "local"(也可选择设置
memorySearch.fallback = "none")。如果你想使用 Gemini embeddings,请设置
memorySearch.provider = "gemini" 并提供 GEMINI_API_KEY(或
memorySearch.remote.apiKey)。我们支持 OpenAI、Gemini、Voyage、Mistral、Ollama 或本地 embedding
模型 - 设置详情请参阅 记忆。文件在磁盘上的位置
OpenClaw 使用的所有数据都会保存在本地吗?
OpenClaw 使用的所有数据都会保存在本地吗?
OpenClaw 将数据存储在哪里?
OpenClaw 将数据存储在哪里?
$OPENCLAW_STATE_DIR 下(默认:~/.openclaw):| 路径 | 用途 |
|---|---|
$OPENCLAW_STATE_DIR/openclaw.json | 主配置(JSON5) |
$OPENCLAW_STATE_DIR/credentials/oauth.json | 旧版 OAuth 导入(首次使用时复制到认证配置文件) |
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth-profiles.json | 认证配置文件(OAuth、API keys,以及可选的 keyRef/tokenRef) |
$OPENCLAW_STATE_DIR/secrets.json | 面向 file SecretRef 提供商的可选文件后端密钥载荷 |
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth.json | 旧版兼容文件(静态 api_key 条目会被清理) |
$OPENCLAW_STATE_DIR/credentials/ | 提供商状态(例如 whatsapp/<accountId>/creds.json) |
$OPENCLAW_STATE_DIR/agents/ | 每个智能体的状态(agentDir + 会话) |
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/ | 对话历史和状态(按智能体) |
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/sessions.json | 会话元数据(按智能体) |
~/.openclaw/agent/*(由 openclaw doctor 迁移)。你的 工作区(AGENTS.md、记忆文件、Skills 等)是独立的,并通过 agents.defaults.workspace 配置(默认:~/.openclaw/workspace)。AGENTS.md / SOUL.md / USER.md / MEMORY.md 应该放在哪里?
AGENTS.md / SOUL.md / USER.md / MEMORY.md 应该放在哪里?
~/.openclaw。- 工作区(按智能体):
AGENTS.md、SOUL.md、IDENTITY.md、USER.md、MEMORY.md、memory/YYYY-MM-DD.md,以及可选的HEARTBEAT.md。 小写的根级memory.md仅作为旧版修复输入;当两个文件都存在时,openclaw doctor --fix可以将它合并到MEMORY.md。 - 状态目录(
~/.openclaw):配置、渠道/提供商状态、认证配置文件、会话、日志, 以及共享 Skills(~/.openclaw/skills)。
~/.openclaw/workspace,可通过以下方式配置:推荐的备份策略
推荐的备份策略
~/.openclaw 下的任何内容(凭据、会话、令牌或加密密钥载荷)。
如果你需要完整恢复,请分别备份工作区和状态目录
(参见上面的迁移问题)。文档:Agent 工作区。如何彻底卸载 OpenClaw?
如何彻底卸载 OpenClaw?
智能体可以在工作区之外工作吗?
智能体可以在工作区之外工作吗?
agents.defaults.sandbox 或按智能体设置沙箱。如果你
想让某个仓库成为默认工作目录,请将该智能体的
workspace 指向仓库根目录。OpenClaw 仓库只是源代码;除非你有意让智能体在其中工作,
否则请将工作区分开。示例(将仓库作为默认 cwd):远程模式:会话存储在哪里?
远程模式:会话存储在哪里?
配置基础
配置是什么格式?在哪里?
配置是什么格式?在哪里?
$OPENCLAW_CONFIG_PATH 读取可选的 JSON5 配置(默认:~/.openclaw/openclaw.json):~/.openclaw/workspace)。我设置了 gateway.bind: "lan"(或 "tailnet"),现在没有监听 / UI 显示未授权
我设置了 gateway.bind: "lan"(或 "tailnet"),现在没有监听 / UI 显示未授权
- 共享密钥认证:令牌或密码
gateway.auth.mode: "trusted-proxy",位于已正确配置的身份感知反向代理之后
gateway.remote.token/.password本身不会启用本地 gateway 认证。- 仅当未设置
gateway.auth.*时,本地调用路径才能使用gateway.remote.*作为回退。 - 对于密码认证,请改为设置
gateway.auth.mode: "password"加gateway.auth.password(或OPENCLAW_GATEWAY_PASSWORD)。 - 如果
gateway.auth.token/gateway.auth.password通过 SecretRef 显式配置但无法解析,解析会失败关闭(不会用远程回退掩盖)。 - 共享密钥 Control UI 设置通过
connect.params.auth.token或connect.params.auth.password(存储在应用/UI 设置中)进行认证。Tailscale Serve 或trusted-proxy等带身份的模式则使用请求头。避免把共享密钥放进 URL。 - 使用
gateway.auth.mode: "trusted-proxy"时,同主机 loopback 反向代理需要显式设置gateway.auth.trustedProxy.allowLoopback = true,并在gateway.trustedProxies中加入 loopback 条目。
为什么现在 localhost 也需要令牌?
为什么现在 localhost 也需要令牌?
gateway.auth.token,因此本地 WS 客户端必须认证。这会阻止其他本地进程调用 Gateway 网关。如果你更喜欢其他认证路径,可以显式选择密码模式(或者,对于身份感知反向代理,选择 trusted-proxy)。如果你确实想开放 loopback,请在配置中显式设置 gateway.auth.mode: "none"。Doctor 可以随时为你生成令牌:openclaw doctor --generate-gateway-token。更改配置后必须重启吗?
更改配置后必须重启吗?
gateway.reload.mode: "hybrid"(默认):安全变更热应用,关键变更重启- 也支持
hot、restart、off
如何禁用有趣的 CLI 标语?
如何禁用有趣的 CLI 标语?
cli.banner.taglineMode:off:隐藏标语文本,但保留横幅标题/版本行。default:每次都使用All your chats, one OpenClaw.。random:轮换有趣/季节性标语(默认行为)。- 如果你完全不想显示横幅,请设置环境变量
OPENCLAW_HIDE_BANNER=1。
如何启用 Web 搜索(和 Web 抓取)?
如何启用 Web 搜索(和 Web 抓取)?
web_fetch 无需 API key 即可工作。web_search 取决于你选择的
提供商:- Brave、Exa、Firecrawl、Gemini、Grok、Kimi、MiniMax Search、Perplexity 和 Tavily 等 API 后端提供商需要它们的常规 API key 设置。
- Ollama Web 搜索无需 key,但它会使用你配置的 Ollama 主机,并且需要
ollama signin。 - DuckDuckGo 无需 key,但它是非官方的基于 HTML 的集成。
- SearXNG 无需 key/可自托管;配置
SEARXNG_BASE_URL或plugins.entries.searxng.config.webSearch.baseUrl。
openclaw configure --section web 并选择一个提供商。
环境变量替代项:- Brave:
BRAVE_API_KEY - Exa:
EXA_API_KEY - Firecrawl:
FIRECRAWL_API_KEY - Gemini:
GEMINI_API_KEY - Grok:
XAI_API_KEY - Kimi:
KIMI_API_KEY或MOONSHOT_API_KEY - MiniMax Search:
MINIMAX_CODE_PLAN_KEY、MINIMAX_CODING_API_KEY或MINIMAX_API_KEY - Perplexity:
PERPLEXITY_API_KEY或OPENROUTER_API_KEY - SearXNG:
SEARXNG_BASE_URL - Tavily:
TAVILY_API_KEY
plugins.entries.<plugin>.config.webSearch.* 下。
旧版 tools.web.search.* 提供商路径仍会暂时加载以保持兼容,但不应再用于新配置。
Firecrawl Web 抓取回退配置位于 plugins.entries.firecrawl.config.webFetch.* 下。注意:- 如果你使用允许列表,请添加
web_search/web_fetch/x_search或group:web。 web_fetch默认启用(除非显式禁用)。- 如果省略
tools.web.fetch.provider,OpenClaw 会从可用凭证中自动检测第一个就绪的抓取回退提供商。目前内置提供商是 Firecrawl。 - 守护进程从
~/.openclaw/.env(或服务环境)读取环境变量。
config.apply 清空了我的配置。如何恢复并避免这种情况?
config.apply 清空了我的配置。如何恢复并避免这种情况?
config.apply 会替换整个配置。如果你发送部分对象,其他所有内容
都会被移除。当前 OpenClaw 会防止许多意外覆盖:- OpenClaw 拥有的配置写入会在写入前验证变更后的完整配置。
- 无效或破坏性的 OpenClaw 拥有的写入会被拒绝,并保存为
openclaw.json.rejected.*。 - 如果直接编辑导致启动或热重载失败,Gateway 网关会故障关闭或跳过重载;它不会重写
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 节点以及用于下钻的直接子项摘要。 - 对部分 RPC 编辑使用
config.patch;仅将config.apply用于完整配置替换。 - 如果你在一次智能体运行中使用仅所有者可用的
gateway工具,它仍会拒绝写入tools.exec.ask/tools.exec.security(包括会规范化到相同受保护 exec 路径的旧版tools.bash.*别名)。
如何运行一个中央 Gateway 网关,并让专用 worker 跨设备工作?
如何运行一个中央 Gateway 网关,并让专用 worker 跨设备工作?
- **Gateway 网关(中央):**拥有渠道(Signal/WhatsApp)、路由和会话。
- **节点(设备):**Mac/iOS/Android 作为外设连接,并暴露本地工具(
system.run、canvas、camera)。 - **智能体(worker):**面向特殊角色的独立大脑/工作区(例如“Hetzner 运维”、“个人数据”)。
- **子智能体:**当你需要并行处理时,从主智能体派生后台工作。
- **TUI:**连接到 Gateway 网关并切换智能体/会话。
OpenClaw 浏览器可以无头运行吗?
OpenClaw 浏览器可以无头运行吗?
false(有头)。无头模式在某些站点上更容易触发反机器人检查。请参阅浏览器。无头模式使用相同的 Chromium 引擎,适用于大多数自动化任务(表单、点击、抓取、登录)。主要区别是:- 没有可见浏览器窗口(如果需要可视信息,请使用截图)。
- 一些站点对无头模式下的自动化更严格(CAPTCHA、反机器人)。 例如,X/Twitter 经常会阻止无头会话。
如何使用 Brave 进行浏览器控制?
如何使用 Brave 进行浏览器控制?
browser.executablePath 设置为你的 Brave 二进制文件(或任何基于 Chromium 的浏览器),然后重启 Gateway 网关。
请查看浏览器中的完整配置示例。远程 Gateway 网关和节点
命令如何在 Telegram、Gateway 网关和节点之间传播?
命令如何在 Telegram、Gateway 网关和节点之间传播?
node.* → 节点 → Gateway 网关 → Telegram节点看不到传入的提供商流量;它们只接收节点 RPC 调用。如果 Gateway 网关托管在远程,我的智能体如何访问我的电脑?
如果 Gateway 网关托管在远程,我的智能体如何访问我的电脑?
node.* 工具(屏幕、相机、系统)。典型设置:- 在常开主机(VPS/家用服务器)上运行 Gateway 网关。
- 将 Gateway 网关主机和你的电脑放在同一个 tailnet 中。
- 确保 Gateway 网关 WS 可访问(tailnet 绑定或 SSH 隧道)。
- 在本地打开 macOS 应用,并以 Remote over SSH 模式(或直接 tailnet) 连接,以便它可以注册为节点。
-
在 Gateway 网关上批准节点:
system.run。只配对
你信任的设备,并查看安全。文档:节点、Gateway 网关协议、macOS 远程模式、安全。Tailscale 已连接但我收不到回复。现在该怎么办?
Tailscale 已连接但我收不到回复。现在该怎么办?
两个 OpenClaw 实例可以相互通信吗(本地 + VPS)?
两个 OpenClaw 实例可以相互通信吗(本地 + VPS)?
openclaw agent --message ... --deliver 调用另一个 Gateway 网关,目标是另一个机器人
监听的聊天。如果其中一个机器人在远程 VPS 上,请通过 SSH/Tailscale 将你的 CLI 指向该远程 Gateway 网关
(参见远程访问)。示例模式(从可以访问目标 Gateway 网关的机器运行):多个智能体需要单独的 VPS 吗?
多个智能体需要单独的 VPS 吗?
相比从 VPS 使用 SSH,在我的个人笔记本上使用节点有好处吗?
相比从 VPS 使用 SSH,在我的个人笔记本上使用节点有好处吗?
- **不需要入站 SSH。**节点会向外连接到 Gateway 网关 WebSocket,并使用设备配对。
- 更安全的执行控制。
system.run受该笔记本上的节点允许列表/批准控制。 - **更多设备工具。**除了
system.run,节点还暴露canvas、camera和screen。 - **本地浏览器自动化。**将 Gateway 网关保留在 VPS 上,但通过笔记本上的节点主机在本地运行 Chrome,或通过 Chrome MCP 附加到主机上的本地 Chrome。
节点会运行 Gateway 网关服务吗?
节点会运行 Gateway 网关服务吗?
gateway、discovery 和 canvasHost 的更改需要完整重启。是否有通过 API / RPC 应用配置的方式?
是否有通过 API / RPC 应用配置的方式?
config.schema.lookup:在写入前检查一个配置子树,包括其浅层 schema 节点、匹配的 UI 提示和直接子项摘要config.get:获取当前快照 + 哈希config.patch:安全的部分更新(多数 RPC 编辑的首选);可行时热重载,需要时重启config.apply:验证 + 替换完整配置;可行时热重载,需要时重启- 仅所有者可用的
gateway运行时工具仍会拒绝重写tools.exec.ask/tools.exec.security;旧版tools.bash.*别名会规范化到相同的受保护 exec 路径
首次安装的最小合理配置
首次安装的最小合理配置
如何在 VPS 上设置 Tailscale,并从我的 Mac 连接?
如何在 VPS 上设置 Tailscale,并从我的 Mac 连接?
-
在 VPS 上安装并登录
-
在你的 Mac 上安装并登录
- 使用 Tailscale 应用,并登录到同一个 tailnet。
-
启用 MagicDNS(推荐)
- 在 Tailscale 管理控制台中启用 MagicDNS,让 VPS 拥有稳定名称。
-
使用 tailnet 主机名
- SSH:
ssh user@your-vps.tailnet-xxxx.ts.net - Gateway 网关 WS:
ws://your-vps.tailnet-xxxx.ts.net:18789
- SSH:
如何将 Mac 节点连接到远程 Gateway 网关(Tailscale Serve)?
如何将 Mac 节点连接到远程 Gateway 网关(Tailscale Serve)?
- 确保 VPS + Mac 位于同一个 tailnet。
- 在远程模式下使用 macOS 应用(SSH 目标可以是 tailnet 主机名)。 该应用会隧道转发 Gateway 网关端口,并作为节点连接。
-
在 Gateway 网关上批准节点:
我应该在第二台笔记本电脑上安装,还是只添加一个节点?
我应该在第二台笔记本电脑上安装,还是只添加一个节点?
环境变量和 .env 加载
OpenClaw 如何加载环境变量?
OpenClaw 如何加载环境变量?
- 当前工作目录中的
.env - 来自
~/.openclaw/.env的全局回退.env(也就是$OPENCLAW_STATE_DIR/.env)
.env 文件都不会覆盖已有的环境变量。你也可以在配置中定义内联环境变量(仅在进程环境中缺失时应用):我通过服务启动了 Gateway 网关,但我的环境变量消失了。现在怎么办?
我通过服务启动了 Gateway 网关,但我的环境变量消失了。现在怎么办?
- 将缺失的键放入
~/.openclaw/.env,这样即使服务没有继承你的 shell 环境,也能读取到它们。 - 启用 shell 导入(选择加入的便捷功能):
OPENCLAW_LOAD_SHELL_ENV=1、OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000。我设置了 COPILOT_GITHUB_TOKEN,但模型状态显示 "Shell env: off."。为什么?
我设置了 COPILOT_GITHUB_TOKEN,但模型状态显示 "Shell env: off."。为什么?
openclaw models status 报告的是是否启用了 shell 环境导入。“Shell env: off”
不表示你的环境变量缺失,只表示 OpenClaw 不会自动加载
你的登录 shell。如果 Gateway 网关作为服务(launchd/systemd)运行,它不会继承你的 shell
环境。用以下任一方式修复:-
将令牌放入
~/.openclaw/.env: -
或启用 shell 导入(
env.shellEnv.enabled: true)。 -
或将其添加到你的配置
env块中(仅在缺失时应用)。
COPILOT_GITHUB_TOKEN 读取(也包括 GH_TOKEN / GITHUB_TOKEN)。
参见 /concepts/model-providers 和 /environment。会话和多个聊天
如何开始一次全新对话?
如何开始一次全新对话?
/new 或 /reset 作为独立消息发送。参见会话管理。如果我从不发送 /new,会话会自动重置吗?
如果我从不发送 /new,会话会自动重置吗?
session.idleMinutes 之后过期,但这项功能默认禁用(默认值为 0)。
将其设置为正值即可启用空闲过期。启用后,空闲期之后的下一条
消息会为该聊天键启动一个新的会话 ID。
这不会删除转录记录,只是启动一个新会话。有没有办法组建一个 OpenClaw 实例团队(一个 CEO 和许多智能体)?
有没有办法组建一个 OpenClaw 实例团队(一个 CEO 和许多智能体)?
为什么上下文会在任务中途被截断?如何防止?
为什么上下文会在任务中途被截断?如何防止?
- 让机器人总结当前状态并写入文件。
- 在长任务前使用
/compact,切换主题时使用/new。 - 将重要上下文保存在工作区中,并让机器人回读。
- 对长时间或并行工作使用子智能体,让主聊天保持更小。
- 如果经常发生这种情况,请选择上下文窗口更大的模型。
如何完全重置 OpenClaw 但保留安装?
如何完全重置 OpenClaw 但保留安装?
- 如果新手引导发现已有配置,也会提供重置。参见新手引导(CLI)。
- 如果你使用了配置档(
--profile/OPENCLAW_PROFILE),请重置每个状态目录(默认是~/.openclaw-<profile>)。 - 开发重置:
openclaw gateway --dev --reset(仅开发用途;会清除开发配置 + 凭证 + 会话 + 工作区)。
我遇到 "context too large" 错误,该如何重置或压缩?
我遇到 "context too large" 错误,该如何重置或压缩?
为什么我会看到 "LLM request rejected: messages.content.tool_use.input field required"?
为什么我会看到 "LLM request rejected: messages.content.tool_use.input field required"?
input 的 tool_use 块。它通常表示会话历史陈旧或损坏(常见于长线程
或工具/架构变更之后)。修复:使用 /new(独立消息)启动新会话。为什么我每 30 分钟会收到 heartbeat 消息?
为什么我每 30 分钟会收到 heartbeat 消息?
HEARTBEAT.md 存在但实际上为空(只有空行和 markdown
标题,例如 # Heading),OpenClaw 会跳过 heartbeat 运行以节省 API 调用。
如果该文件缺失,heartbeat 仍会运行,由模型决定要做什么。每个智能体覆盖使用 agents.list[].heartbeat。文档:Heartbeat。我需要向 WhatsApp 群组添加一个“机器人账号”吗?
我需要向 WhatsApp 群组添加一个“机器人账号”吗?
groupPolicy: "allowlist")。如果你希望只有你能够触发群组回复:如何获取 WhatsApp 群组的 JID?
如何获取 WhatsApp 群组的 JID?
为什么 OpenClaw 在群组中不回复?
为什么 OpenClaw 在群组中不回复?
我可以创建多少个工作区和智能体?
我可以创建多少个工作区和智能体?
- 磁盘增长: 会话 + 转录记录位于
~/.openclaw/agents/<agentId>/sessions/下。 - 令牌成本: 更多智能体意味着更多并发模型使用。
- 运维开销: 每个智能体的认证配置档、工作区和渠道路由。
- 每个智能体保留一个活跃工作区(
agents.defaults.workspace)。 - 如果磁盘增长,请裁剪旧会话(删除 JSONL 或存储条目)。
- 使用
openclaw doctor发现零散工作区和配置档不匹配。
我可以同时运行多个机器人或聊天(Slack)吗?应该如何设置?
我可以同时运行多个机器人或聊天(Slack)吗?应该如何设置?
- 常驻 Gateway 网关主机(VPS/Mac mini)。
- 每个角色一个智能体(绑定)。
- Slack 渠道绑定到这些智能体。
- 需要时通过 Chrome MCP 或节点使用本地浏览器。
模型、故障转移和认证配置
模型问答 —— 默认值、选择、别名、切换、故障转移、认证配置 —— 见 Models 常见问题。Gateway 网关:端口、“已在运行”和远程模式
Gateway 网关使用哪个端口?
Gateway 网关使用哪个端口?
gateway.port 控制用于 WebSocket + HTTP(Control UI、钩子等)的单个复用端口。优先级:为什么 openclaw gateway status 显示 "Runtime: running",但显示 "Connectivity probe: failed"?
为什么 openclaw gateway status 显示 "Runtime: running",但显示 "Connectivity probe: failed"?
openclaw gateway status,并信任这些行:Probe target:(探测实际使用的 URL)Listening:(端口上实际绑定的内容)Last gateway error:(进程存活但端口未监听时的常见根因)
为什么 openclaw gateway status 显示的 "Config (cli)" 和 "Config (service)" 不同?
为什么 openclaw gateway status 显示的 "Config (cli)" 和 "Config (service)" 不同?
--profile / OPENCLAW_STATE_DIR 不匹配)。修复:--profile / 环境中运行该命令。"another gateway instance is already listening" 是什么意思?
"another gateway instance is already listening" 是什么意思?
ws://127.0.0.1:18789)。如果绑定因 EADDRINUSE 失败,它会抛出 GatewayLockError,表示另一个实例已在监听。修复:停止另一个实例、释放端口,或使用 openclaw gateway --port <port> 运行。如何以远程模式运行 OpenClaw(客户端连接到其他位置的 Gateway 网关)?
如何以远程模式运行 OpenClaw(客户端连接到其他位置的 Gateway 网关)?
gateway.mode: "remote" 并指向远程 WebSocket URL,可选地使用共享密钥远程凭证:openclaw gateway仅在gateway.mode为local时启动(或你传入覆盖标志时)。- macOS 应用会监视配置文件,并在这些值变化时实时切换模式。
gateway.remote.token/.password只是客户端侧远程凭证;它们本身不会启用本地 Gateway 网关认证。
Control UI 显示 "unauthorized"(或持续重新连接)。现在怎么办?
Control UI 显示 "unauthorized"(或持续重新连接)。现在怎么办?
我设置了 gateway.bind tailnet,但它无法绑定,且没有任何监听
我设置了 gateway.bind tailnet,但它无法绑定,且没有任何监听
tailnet 绑定会从你的网络接口中选择一个 Tailscale IP(100.64.0.0/10)。如果该机器不在 Tailscale 上(或接口已关闭),就没有可绑定的内容。修复:- 在该主机上启动 Tailscale(使其拥有 100.x 地址),或
- 切换到
gateway.bind: "loopback"/"lan"。
tailnet 是显式的。auto 偏好 loopback;当你需要仅 tailnet 绑定时,请使用 gateway.bind: "tailnet"。我可以在同一主机上运行多个 Gateway 网关吗?
我可以在同一主机上运行多个 Gateway 网关吗?
OPENCLAW_CONFIG_PATH(每个实例的配置)OPENCLAW_STATE_DIR(每个实例的状态)agents.defaults.workspace(工作区隔离)gateway.port(唯一端口)
- 每个实例使用
openclaw --profile <name> ...(自动创建~/.openclaw-<name>)。 - 在每个 profile 配置中设置唯一的
gateway.port(或为手动运行传入--port)。 - 安装每个 profile 的服务:
openclaw --profile <name> gateway install。
ai.openclaw.<profile>;旧版 com.openclaw.*、openclaw-gateway-<profile>.service、OpenClaw Gateway (<profile>))。
完整指南:多个 Gateway 网关。"invalid handshake" / 代码 1008 是什么意思?
"invalid handshake" / 代码 1008 是什么意思?
connect 帧。如果收到其他任何内容,它会以 代码 1008(策略违规)
关闭连接。常见原因:- 你在浏览器中打开了 HTTP URL(
http://...),而不是使用 WS 客户端。 - 你使用了错误的端口或路径。
- 代理或隧道剥离了认证标头,或发送了非 Gateway 网关请求。
- 使用 WS URL:
ws://<host>:18789(如果是 HTTPS,则使用wss://...)。 - 不要在普通浏览器标签页中打开 WS 端口。
- 如果已启用认证,请在
connect帧中包含令牌/密码。
日志和调试
日志在哪里?
日志在哪里?
logging.file 设置稳定路径。文件日志级别由 logging.level 控制。控制台详细程度由 --verbose 和 logging.consoleLevel 控制。最快跟踪日志:- macOS:
$OPENCLAW_STATE_DIR/logs/gateway.log和gateway.err.log(默认:~/.openclaw/logs/...;profiles 使用~/.openclaw-<profile>/logs/...) - Linux:
journalctl --user -u openclaw-gateway[-<profile>].service -n 200 --no-pager - Windows:
schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST
如何启动/停止/重启 Gateway 网关服务?
如何启动/停止/重启 Gateway 网关服务?
我在 Windows 上关闭了终端——如何重启 OpenClaw?
我在 Windows 上关闭了终端——如何重启 OpenClaw?
Gateway 网关已启动,但回复一直没有到达。我应该检查什么?
Gateway 网关已启动,但回复一直没有到达。我应该检查什么?
"Disconnected from gateway: no reason"——现在怎么办?
"Disconnected from gateway: no reason"——现在怎么办?
Telegram setMyCommands 失败。我应该检查什么?
Telegram setMyCommands 失败。我应该检查什么?
BOT_COMMANDS_TOO_MUCH:Telegram 菜单条目过多。OpenClaw 已经会裁剪到 Telegram 限制并用更少的命令重试,但仍需要删除一些菜单条目。减少插件/skill/自定义命令,或者如果你不需要菜单,请禁用channels.telegram.commands.native。TypeError: fetch failed、Network request for 'setMyCommands' failed!或类似网络错误:如果你在 VPS 上或位于代理后面,请确认允许出站 HTTPS,并且 DNS 能够解析api.telegram.org。
TUI 没有显示输出。我应该检查什么?
TUI 没有显示输出。我应该检查什么?
如何彻底停止然后启动 Gateway 网关?
如何彻底停止然后启动 Gateway 网关?
像给五岁孩子解释:openclaw gateway restart 与 openclaw gateway
像给五岁孩子解释:openclaw gateway restart 与 openclaw gateway
openclaw gateway restart:重启后台服务(launchd/systemd)。openclaw gateway:在此终端会话中前台运行 Gateway 网关。
openclaw gateway。出现故障时最快获取更多详细信息的方法
出现故障时最快获取更多详细信息的方法
--verbose 启动 Gateway 网关,以获得更多控制台细节。然后检查日志文件中的渠道认证、模型路由和 RPC 错误。媒体和附件
我的 skill 生成了图片/PDF,但没有发送任何内容
我的 skill 生成了图片/PDF,但没有发送任何内容
MEDIA:<path-or-url>(单独成行)。请参阅 OpenClaw assistant 设置和智能体发送。CLI 发送:- 目标渠道支持出站媒体,并且未被允许列表阻止。
- 文件在提供商的大小限制内(图片会被缩放到最大 2048px)。
tools.fs.workspaceOnly=true会将本地路径发送限制在工作区、临时/媒体存储以及通过沙箱验证的文件内。tools.fs.workspaceOnly=false允许MEDIA:发送智能体已经能读取的主机本地文件,但仅限媒体和安全文档类型(图片、音频、视频、PDF 和 Office 文档)。纯文本和类似密钥的文件仍会被阻止。
安全和访问控制
将 OpenClaw 暴露给入站私信是否安全?
将 OpenClaw 暴露给入站私信是否安全?
- 支持私信的渠道上的默认行为是配对:
- 未知发送者会收到配对码;机器人不会处理他们的消息。
- 使用以下命令批准:
openclaw pairing approve --channel <channel> [--account <id>] <code> - 待处理请求上限为每个渠道 3 个;如果没有收到代码,请检查
openclaw pairing list --channel <channel> [--account <id>]。
- 公开开放私信需要明确选择加入(
dmPolicy: "open"和允许列表"*")。
openclaw doctor 以暴露有风险的私信策略。提示注入只需要担心公共机器人吗?
提示注入只需要担心公共机器人吗?
- 使用只读或禁用工具的“reader”智能体来总结不受信任的内容
- 对启用工具的智能体关闭
web_search/web_fetch/browser - 也将解码后的文件/文档文本视为不受信任:OpenResponses
input_file和媒体附件提取都会用 明确的外部内容边界标记包裹提取文本,而不是传递原始文件文本 - 沙箱隔离和严格的工具允许列表
我的机器人是否应该有自己的电子邮件、GitHub 账号或电话号码?
我的机器人是否应该有自己的电子邮件、GitHub 账号或电话号码?
我可以让它自主处理我的短信吗?这样安全吗?
我可以让它自主处理我的短信吗?这样安全吗?
- 将私信保持在配对模式或严格的允许列表中。
- 如果你希望它代表你发消息,请使用单独的号码或账号。
- 让它先起草,然后发送前批准。
我可以为个人 assistant 任务使用更便宜的模型吗?
我可以为个人 assistant 任务使用更便宜的模型吗?
我在 Telegram 中运行了 /start,但没有收到配对码
我在 Telegram 中运行了 /start,但没有收到配对码
dmPolicy: "pairing" 已启用时,才会发送配对码。/start 本身不会生成代码。检查待处理请求:dmPolicy: "open"。WhatsApp:它会给我的联系人发消息吗?配对如何工作?
WhatsApp:它会给我的联系人发消息吗?配对如何工作?
channels.whatsapp.selfChatMode。聊天命令、中止任务,以及“它停不下来”
如何阻止内部系统消息显示在聊天中?
如何阻止内部系统消息显示在聊天中?
如何停止/取消正在运行的任务?
如何停止/取消正在运行的任务?
/ 开头的独立消息发送,但少数快捷方式(如 /status)也可供允许列表中的发送者在行内使用。如何从 Telegram 发送 Discord 消息?("Cross-context messaging denied")
如何从 Telegram 发送 Discord 消息?("Cross-context messaging denied")
为什么机器人感觉像是“忽略”快速连续的消息?
为什么机器人感觉像是“忽略”快速连续的消息?
/queue 更改模式:steer- 将所有待处理 Steering 排入当前运行中的下一个模型边界queue- 旧版逐条 Steeringfollowup- 逐条运行消息collect- 批处理消息并只回复一次steer-backlog- 立即 steer,然后处理积压消息interrupt- 中止当前运行并重新开始
steer。你可以为 followup 模式添加 debounce:0.5s cap:25 drop:summarize 等选项。参见命令队列和Steering queue。杂项
Anthropic 使用 API key 时的默认模型是什么?
Anthropic 使用 API key 时的默认模型是什么?
ANTHROPIC_API_KEY(或在认证配置文件中存储 Anthropic API key)会启用身份认证,但实际的默认模型取决于你在 agents.defaults.model.primary 中配置的内容(例如 anthropic/claude-sonnet-4-6 或 anthropic/claude-opus-4-6)。如果你看到 No credentials found for profile "anthropic:default",这表示 Gateway 网关无法在当前运行的智能体预期的 auth-profiles.json 中找到 Anthropic 凭据。仍然卡住?在 Discord 提问,或发起 GitHub 讨论。
相关内容
- 首次运行常见问题 — 安装、新手引导、身份认证、订阅、早期故障
- Models 常见问题 — 模型选择、故障转移、认证配置文件
- 故障排除 — 按症状优先的分诊