# 故障排除 🔧 当 OpenClaw 表现异常时,这里是如何修复它的方法。 如果您只是想要一个快速分类方案,请从 FAQ 的 [前 60 秒](/help/faq#first-60-seconds-if-somethings-broken) 开始。本页面深入探讨运行时故障和诊断。 特定提供者的快捷方式:[/channels/troubleshooting](/channels/troubleshooting) ## 状态和诊断 快速分类命令(按顺序): | 命令 | 告诉你什么 | 何时使用 | |---|---|---| | `openclaw-cn status` | 本地摘要:操作系统 + 更新,网关可达性/模式,服务,代理/会话,提供者配置状态 | 首次检查,快速概览 | | `openclaw-cn status --all` | 完整本地诊断(只读,可粘贴,相对安全)包括日志尾部 | 当您需要分享调试报告时 | | `openclaw-cn status --deep` | 运行网关健康检查(包括提供者探测;需要可访问的网关) | 当"已配置"不等于"正在工作"时 | | `openclaw-cn gateway probe` | 网关发现 + 可达性(本地 + 远程目标) | 当您怀疑您正在探测错误的网关时 | | `openclaw-cn channels status --probe` | 向运行的网关询问通道状态(并可选地进行探测) | 当网关可访问但通道表现异常时 | | `openclaw-cn gateway status` | 监督者状态(launchd/systemd/schtasks),运行时 PID/退出,最后的网关错误 | 当服务"看起来已加载"但没有运行任何东西时 | | `openclaw-cn logs --follow` | 实时日志(运行时问题的最佳信号) | 当您需要实际失败原因时 | **分享输出:** 优先使用 `openclaw-cn status --all`(它会编辑令牌)。如果您粘贴 `openclaw-cn status`,请考虑先设置 `OPENCLAW_SHOW_SECRETS=0`(令牌预览)。 另请参阅:[健康检查](/gateway/health) 和 [日志](/logging)。 ## 常见问题 ### 未找到提供者 "anthropic" 的 API 密钥 这意味着 **代理的身份验证存储为空** 或缺少 Anthropic 凭据。 身份验证是 **按代理** 的,所以新代理不会继承主代理的密钥。 修复选项: - 重新运行入门设置并为该代理选择 **Anthropic**。 - 或在 **网关主机** 上粘贴一个设置令牌: ```bash openclaw-cn models auth setup-token --provider anthropic ``` - 或从主代理目录复制 `auth-profiles.json` 到新代理目录。 验证: ```bash openclaw-cn models status ``` ### OAuth 令牌刷新失败(Anthropic Claude 订阅) 这意味着存储的 Anthropic OAuth 令牌已过期且刷新失败。 如果您使用的是 Claude 订阅(没有 API 密钥),最可靠的修复方法是 切换到 **Claude Code 设置令牌** 或在 **网关主机** 上重新同步 Claude Code CLI OAuth。 **推荐(设置令牌):** ```bash # 在网关主机上运行(运行 Claude Code CLI) openclaw-cn models auth setup-token --provider anthropic openclaw-cn models status ``` 如果您在其他地方生成了令牌: ```bash openclaw-cn models auth paste-token --provider anthropic openclaw-cn models status ``` **如果您希望保持 OAuth 重用:** 在网关主机上使用 Claude Code CLI 登录,然后运行 `openclaw-cn models status` 将刷新的令牌同步到 OpenClaw 的身份验证存储中。 更多详细信息:[Anthropic](/providers/anthropic) 和 [OAuth](/concepts/oauth)。 ### 控制 UI 在 HTTP 上失败("需要设备身份" / "连接失败") 如果您通过普通 HTTP 打开仪表板(例如 `http://\:18789/` 或 `http://\:18789/`),浏览器在 **非安全上下文** 中运行并 阻止 WebCrypto,因此无法生成设备身份。 **修复:** - 优先通过 [Tailscale Serve](/gateway/tailscale) 使用 HTTPS。 - 或在网关主机上本地打开:`http://127.0.0.1:18789/`。 - 如果您必须保持在 HTTP 上,请启用 `gateway.controlUi.allowInsecureAuth: true` 并 使用网关令牌(仅令牌;无设备身份/配对)。参见 [控制 UI](/web/control-ui#insecure-http)。 ### Web UI 显示 "disconnected (1008): pairing required" 错误 当您访问 Web UI 时,可能会遇到以下错误: ``` disconnected (1008): pairing required ``` 这个错误通常出现在 **容器化部署**(Docker、Kubernetes)中。 **详细说明和解决方案:** 见 [配对要求故障排除](/gateway/pairing-required-troubleshooting) **快速修复(Docker):** ```bash docker compose run --rm openclaw-cn-cli config set gateway.controlUi.allowInsecureAuth true docker compose restart openclaw-cn-gateway ``` **快速修复(本地):** ```bash openclaw-cn config set gateway.controlUi.allowInsecureAuth true openclaw-cn gateway restart ``` ### Web UI 显示 "disconnected (1006): no reason" 错误 {#web-ui-1006-no-reason} 当您访问 Web 网关管理页面时,可能会遇到以下错误: ``` disconnected (1006): no reason ``` **问题原因:** WebSocket 错误码 1006 表示“异常关闭”,连接在没有收到正常关闭帧的情况下断开。 常见原因包括: 1. **浏览器缓存旧 token**:更新版本后,浏览器 localStorage 中的旧设备认证数据与新版网关不兼容 2. **网关进程崩溃/重启**:网关突然退出,没有机会发送正常的关闭帧(常见于 Docker 部署) 3. **网络中断**:容器网络问题、反向代理超时或资源限制导致连接被强制断开 --- #### 场景 1:更新后首次连接失败 如果您刚更新了 OpenClaw 版本,最可能的原因是浏览器缓存了旧的设备认证数据。 **解决方案:** **方法 1:清除浏览器本地存储(推荐)**
Chrome 1. 按 `F12` 打开开发者工具 2. 点击 **Application**(应用)选项卡 3. 左侧展开 **Local Storage** 4. 找到 `http://127.0.0.1:18789` 或您的网关地址 5. 右键删除以下条目: - `OpenClaw-device-identity-v1` - `OpenClaw.device.auth.v1` 6. 刷新页面
Firefox 1. 按 `F12` 打开开发者工具 2. 点击 **存储**(Storage)选项卡 3. 左侧展开 **本地存储**(Local Storage) 4. 找到并删除 `OpenClaw` 相关条目 5. 刷新页面
Safari 1. 菜单栏 → 开发 → 显示 Web 检查器 2. 点击 **存储**(Storage)选项卡 3. 左侧展开 **本地存储** 4. 找到并删除 `OpenClaw` 相关条目 5. 刷新页面
Edge 1. 按 `F12` 打开开发者工具 2. 点击 **应用程序**(Application)选项卡 3. 左侧展开 **本地存储**(Local Storage) 4. 找到并删除 `OpenClaw` 相关条目 5. 刷新页面
**方法 2:使用无痕/隐私模式** 在新的无痕浏览窗口打开 Web UI,这样会使用全新的本地存储。 - Chrome:`Ctrl+Shift+N`(Windows/Linux)或 `Cmd+Shift+N`(macOS) - Firefox:`Ctrl+Shift+P`(Windows/Linux)或 `Cmd+Shift+P`(macOS) - Safari:文件 → 新建私密窗口 **方法 3:清除站点数据(快捷方式)** `Ctrl+Shift+Delete`(Windows/Linux)或 `Cmd+Shift+Delete`(macOS),然后: - 时间范围选择“全部时间” - 仅勾选“Cookie 和站点数据” - 点击清除 --- #### 场景 2:Docker 部署中频繁出现 1006 错误 {#docker-1006-frequent} 如果您使用 Docker 部署,且 **清除浏览器缓存后仍然经常遇到 1006 错误**,问题很可能是网关进程不稳定。 **诊断步骤:** **步骤 1:检查容器状态和重启次数** ```bash # 查看容器状态 docker compose ps # 查看容器重启次数 docker inspect openclaw-cn-gateway --format='{{.RestartCount}}' # 如果重启次数 > 0,说明容器曾经崩溃过 ``` **步骤 2:查看容器日志** ```bash # 查看最近日志 docker compose logs -f openclaw-cn-gateway --tail 100 # 检查是否有错误或崩溃信息 docker compose logs openclaw-cn-gateway 2>&1 | grep -i "error\|crash\|killed\|oom\|fatal" ``` **步骤 3:检查资源使用** ```bash # 查看容器资源使用 docker stats openclaw-cn-gateway --no-stream # 检查是否接近内存限制 ``` **常见原因和解决方案:** | 症状 | 可能原因 | 解决方案 | |------|---------|---------| | 容器频繁重启 | 内存不足 (OOM) | 增加 Docker 内存限制,或优化配置减少内存使用 | | 日志中有 `SIGKILL` 或 `killed` | 资源限制触发 | 检查 `docker-compose.yml` 中的 `mem_limit` 设置 | | 日志中有 `ECONNRESET` | 网络问题 | 检查 Docker 网络配置和防火墙规则 | | 无明显错误但连接断开 | 空闲超时 | 见下方"反向代理配置"部分 | **修复建议:** **1. 增加容器资源限制(如果使用了限制)** 在 `docker-compose.yml` 中调整: ```yaml services: openclaw-cn-gateway: # ... 其他配置 ... deploy: resources: limits: memory: 1G # 适当增加内存限制 ``` **2. 确保数据卷正确挂载** ```bash # 检查数据目录是否存在且有正确权限 ls -la ${OPENCLAW_CONFIG_DIR:-./data/.openclaw} # 确保容器内用户有写入权限 docker compose exec openclaw-cn-gateway ls -la /home/node/.openclaw ``` **3. 检查网关健康状态** ```bash # 在容器内运行健康检查 docker compose exec openclaw-cn-gateway node dist/index.js health --json ``` --- #### 场景 3:使用反向代理时的 1006 错误 如果您在 Nginx、Caddy 或 Traefik 等反向代理后面运行网关,WebSocket 连接可能因代理配置不当而断开。 **Nginx 配置示例:** ```nginx location / { proxy_pass http://127.0.0.1:18789; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 关键:增加超时时间防止空闲断开 proxy_read_timeout 86400s; proxy_send_timeout 86400s; } ``` **Caddy 配置示例:** ```caddyfile your-domain.com { reverse_proxy localhost:18789 { # WebSocket 支持是自动的 # 但可以显式设置超时 transport http { read_timeout 0 } } } ``` **检查要点:** - 确保代理正确传递 WebSocket 升级头(`Upgrade` 和 `Connection`) - 将空闲超时设置为较长时间或禁用 - 确保 `X-Forwarded-*` 头正确传递 --- **预防建议:** - 每次大版本更新后,如果遇到连接问题,优先尝试清除浏览器本地存储 - Docker 部署时,建议启用容器日志持久化,便于排查问题 - 使用反向代理时,确保 WebSocket 配置正确 ### CI Secrets Scan 失败 这意味着 `detect-secrets` 找到了基准线中尚未包含的新候选项目。 请遵循 [秘密扫描](/gateway/security#secret-scanning-detect-secrets)。 ### 服务已安装但没有运行 如果网关服务已安装但进程立即退出,服务 可能显示为"已加载"但实际上没有运行任何东西。 **检查:** ```bash openclaw-cn gateway status openclaw-cn doctor ``` Doctor/服务将显示运行时状态(PID/上次退出)和日志提示。 **日志:** - 优先使用:`openclaw-cn logs --follow` - 文件日志(始终):`/tmp/openclaw/openclaw-YYYY-MM-DD.log`(或您配置的 `logging.file`) - macOS LaunchAgent(如果已安装):`$OPENCLAW_STATE_DIR/logs/gateway.log` 和 `gateway.err.log` - Linux systemd(如果已安装):`journalctl --user -u OpenClaw-gateway[-\].service -n 200 --no-pager` - Windows:`schtasks /Query /TN "OpenClaw Gateway (\)" /V /FO LIST` **启用更多日志记录:** - 提高文件日志详细程度(持久化 JSONL): ```json { "logging": { "level": "debug" } } ``` - 提高控制台详细程度(仅 TTY 输出): ```json { "logging": { "consoleLevel": "debug", "consoleStyle": "pretty" } } ``` - 快速提示:`--verbose` 仅影响 **控制台** 输出。文件日志仍由 `logging.level` 控制。 有关格式、配置和访问的完整概述,请参见 [/logging](/logging)。 ### "网关启动被阻止:设置 gateway.mode=local" 这意味着配置存在但 `gateway.mode` 未设置(或不是 `local`),所以 网关拒绝启动。 **修复(推荐):** - 运行向导并将网关运行模式设置为 **本地**: ```bash openclaw-cn configure ``` - 或直接设置: ```bash openclaw-cn config set gateway.mode local ``` **如果您打算运行远程网关:** - 设置远程 URL 并保持 `gateway.mode=remote`: ```bash openclaw-cn config set gateway.mode remote openclaw-cn config set gateway.remote.url "wss://gateway.example.com" ``` **仅临时/开发:** 传递 `--allow-unconfigured` 以在没有 `gateway.mode=local` 的情况下启动网关。 **还没有配置文件?** 运行 `openclaw-cn setup` 创建起始配置,然后重新运行 网关。 ### 服务环境(PATH + 运行时) 网关服务使用 **最小 PATH** 运行,以避免 shell/manager 杂乱: - macOS: `/opt/homebrew/bin`, `/usr/local/bin`, `/usr/bin`, `/bin` - Linux: `/usr/local/bin`, `/usr/bin`, `/bin` 这有意排除版本管理器(nvm/fnm/volta/asdf)和包 管理器(pnpm/npm),因为服务不加载您的 shell 初始化。运行时 变量如 `DISPLAY` 应该位于 `~/.openclaw/.env` 中(由 网关早期加载)。 在 `host=gateway` 上运行的 Exec 将您的登录 shell `PATH` 合并到 exec 环境中, 所以缺少工具通常意味着您的 shell 初始化没有导出它们(或设置 `tools.exec.pathPrepend`)。参见 [/tools/exec](/tools/exec)。 WhatsApp + Telegram 通道需要 **Node**;Bun 不受支持。如果您的 服务是使用 Bun 或版本管理的 Node 路径安装的,请运行 `openclaw-cn doctor` 迁移到系统 Node 安装。 ### 技能在沙盒中缺少 API 密钥 **症状:** 技能在主机上工作但在沙盒中因缺少 API 密钥而失败。 **原因:** 沙盒化的 exec 在 Docker 内部运行,**不**继承主机的 `process.env`。 **修复:** - 设置 `agents.defaults.sandbox.docker.env`(或按代理 `agents.list[].sandbox.docker.env`) - 或将密钥嵌入到您的自定义沙盒镜像中 - 然后运行 `openclaw-cn sandbox recreate --agent \`(或 `--all`) ### 服务运行但端口未监听 如果服务报告 **运行中** 但在网关端口上没有任何监听, 网关可能拒绝绑定。 **"运行中"在此处的含义** - `运行时:运行中` 意味着您的监督程序(launchd/systemd/schtasks)认为进程是活动的。 - `RPC 探测` 意味着 CLI 实际上可以连接到网关 WebSocket 并调用 `status`。 - 始终信任 `探测目标:` + `配置(服务):` 作为 "我们实际上尝试了什么?" 的行。 **检查:** - 对于 `openclaw-cn gateway` 和服务,`gateway.mode` 必须是 `local`。 - 如果您设置了 `gateway.mode=remote`,**CLI 默认** 为远程 URL。服务仍可能在本地运行,但您的 CLI 可能正在探测错误的位置。使用 `openclaw-cn gateway status` 查看服务解析的端口 + 探测目标(或传递 `--url`)。 - 当服务看起来在运行但端口已关闭时,`openclaw-cn gateway status` 和 `openclaw-cn doctor` 会从日志中显示 **最后的网关错误**。 - 非回环绑定(`lan`/`tailnet`/`custom`,或当回环不可用时的 `auto`)需要认证: `gateway.auth.token`(或 `OPENCLAW_GATEWAY_TOKEN`)。 - `gateway.remote.token` 仅用于远程 CLI 调用;它 **不** 启用本地认证。 - `gateway.token` 被忽略;使用 `gateway.auth.token`。 **如果 `openclaw-cn gateway status` 显示配置不匹配** - `配置(cli):...` 和 `配置(服务):...` 通常应该匹配。 - 如果它们不匹配,您几乎肯定是在编辑一个配置,而服务正在运行另一个配置。 - 修复:从您希望服务使用的相同 `--profile` / `OPENCLAW_STATE_DIR` 重新运行 `openclaw-cn gateway install --force`。 **如果 `openclaw-cn gateway status` 报告服务配置问题** - 监督程序配置(launchd/systemd/schtasks)缺少当前默认值。 - 修复:运行 `openclaw-cn doctor` 更新它(或 `openclaw-cn gateway install --force` 进行完全重写)。 **如果 `最后网关错误:` 提到 "拒绝绑定 … 没有认证"** - 您将 `gateway.bind` 设置为非回环模式(`lan`/`tailnet`/`custom`,或当回环不可用时的 `auto`)但没有启用认证。 - 修复:设置 `gateway.auth.mode` + `gateway.auth.token`(或导出 `OPENCLAW_GATEWAY_TOKEN`)并重启服务。 **如果 `openclaw-cn gateway status` 显示 `bind=tailnet` 但未找到 tailnet 接口** - 网关尝试绑定到 Tailscale IP (100.64.0.0/10) 但在主机上未检测到任何。 - 修复:在该机器上启动 Tailscale(或将 `gateway.bind` 更改为 `loopback`/`lan`)。 **如果 `探测注释:` 说探测使用回环** - 这对 `bind=lan` 是预期的:网关监听 `0.0.0.0`(所有接口),而回环仍应能本地连接。 - 对于远程客户端,使用真实的局域网 IP(不是 `0.0.0.0`)加上端口,并确保已配置认证。 ### 地址已在使用(端口 18789) 这意味着网关端口上已有其他程序在监听。 **检查:** ```bash openclaw-cn gateway status ``` 它将显示监听器和可能的原因(网关已在运行,SSH 隧道)。 如有需要,停止服务或选择不同的端口。 ### 检测到额外工作空间文件夹 如果您从旧版本升级,磁盘上可能仍有 `~/openclawot`。 多个工作空间目录可能导致混乱的认证或状态漂移,因为 只有一个工作空间处于活动状态。 **修复:** 保留单个活动工作空间并归档/删除其余的。参见 [代理工作空间](/concepts/agent-workspace#extra-workspace-folders)。 ### 主聊天在沙盒工作空间中运行 症状:`pwd` 或文件工具显示 `~/.openclaw/sandboxes/...` 即使您 期望的是主机工作空间。 **原因:** `agents.defaults.sandbox.mode: "non-main"` 基于 `session.mainKey`(默认为 `"main"`)。 群组/频道会话使用自己的键,因此它们被视为非主要会话并 获得沙盒工作空间。 **修复选项:** - 如果您希望代理使用主机工作空间:设置 `agents.list[].sandbox.mode: "off"`。 - 如果您希望在沙盒内访问主机工作空间:为该代理设置 `workspaceAccess: "rw"`。 ### "代理被中止" 代理在响应过程中被中断。 **原因:** - 用户发送了 `stop`、`abort`、`esc`、`wait` 或 `exit` - 超时超过 - 进程崩溃 **修复:** 只需发送另一条消息。会话将继续。 ### "代理回复前失败:未知模型:anthropic/claude-haiku-3-5" openclaw-cn 故意拒绝 **较旧/不安全的模型**(特别是那些更容易 受到提示注入攻击的模型)。如果您看到此错误,则表示该模型名称已 不再受支持。 **修复:** - 为提供者选择一个 **最新** 模型并更新您的配置或模型别名。 - 如果您不确定哪些模型可用,请运行 `openclaw-cn models list` 或 `openclaw-cn models scan` 并选择一个受支持的模型。 - 检查网关日志以了解详细的失败原因。 另请参阅:[模型 CLI](/cli/models) 和 [模型提供者](/concepts/model-providers)。 ### Messages Not Triggering **检查 1:** 发送者是否在允许列表中? ```bash openclaw-cn status ``` 在输出中查找 `AllowFrom: ...`。 **检查 2:** 对于群聊,是否需要提及? ```bash # 消息必须匹配 mentionPatterns 或明确提及;默认值位于通道组/公会中。 # 多代理:`agents.list[].groupChat.mentionPatterns` 覆盖全局模式。 grep -n "agents\|groupChat\|mentionPatterns\|channels\.whatsapp\.groups\|channels\.telegram\.groups\|channels\.imessage\.groups\|channels\.discord\.guilds" \ "${OPENCLAW_CONFIG_PATH:-$HOME/.openclaw/openclaw.json}" ``` **检查 3:** 检查日志 ```bash openclaw-cn logs --follow # 或如果您想要快速过滤: tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | grep "blocked|skip|unauthorized" ``` ### 配对码未到达 如果 `dmPolicy` 是 `pairing`,未知发送者应该收到一个代码,在获得批准之前他们的消息会被忽略。 **检查 1:** 是否有待处理的请求正在等待? ```bash openclaw-cn pairing list ``` 待处理的 DM 配对请求默认限制为每个通道 **3 个**。如果列表已满,新请求不会生成代码,直到其中一个被批准或过期。 **检查 2:** 请求是否已创建但没有发送回复? ```bash openclaw-cn logs --follow | grep "pairing request" ``` **检查 3:** 确认该通道的 `dmPolicy` 不是 `open`/`allowlist`。 ### 图片 + 提及不起作用 已知问题:当您仅发送带有提及的消息(没有其他文本)时,WhatsApp 有时不包含提及元数据。 **解决方法:** 添加一些带提及的文本: - ❌ `@clawd` + 图片 - ✅ `@clawd check this` + 图片 ### 会话未恢复 **检查 1:** 会话文件是否存在? ```bash ls -la ~/.openclaw/agents//sessions/ ``` **检查 2:** 重置窗口是否太短? ```json { "session": { "reset": { "mode": "daily", "atHour": 4, "idleMinutes": 10080 // 7 天 } } } ``` **检查 3:** 是否有人发送了 `/new`、`/reset` 或重置触发器? ### 代理超时 默认超时时间为 30 分钟。对于长时间任务: ```json { "reply": { "timeoutSeconds": 3600 // 1 小时 } } ``` 或者使用 `process` 工具在后台运行长时间命令。 ### WhatsApp 断开连接 ``` # 检查本地状态(凭据,会话,排队事件) openclaw-cn status # 探测运行中的网关 + 通道(WA 连接 + Telegram + Discord API) openclaw-cn status --deep # 查看最近的连接事件 openclaw-cn logs --limit 200 | grep "connection\|disconnect\|logout" ``` **修复:** 一旦网关运行通常会自动重新连接。如果您卡住了,请重启网关进程(无论您如何监督它),或手动运行详细输出: ```bash openclaw-cn gateway --verbose ``` 如果您已登出/取消链接: ```bash openclaw-cn channels logout trash "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/credentials" # 如果登出不能完全清除所有内容 openclaw-cn channels login --verbose # 重新扫描二维码 ``` ### 媒体发送失败 **检查 1:** 文件路径是否有效? ```bash ls -la /path/to/your/image.jpg ``` **检查 2:** 文件是否太大? - 图片:最大 6MB - 音频/视频:最大 16MB - 文档:最大 100MB **检查 3:** 检查媒体日志 ```bash grep "media|fetch|download" "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)" | tail -20 ``` ### 高内存使用 OpenClaw 将对话历史保存在内存中。 **修复:** 定期重启或设置会话限制: ```json { "session": { "historyLimit": 100 // 最大保留消息数 } } ``` ## 通用故障排除 ### "网关无法启动 — 配置无效" 当配置包含未知键、格式错误的值或无效类型时,OpenClaw 现在拒绝启动。 这是为了安全而有意为之的。 使用 Doctor 修复它: ```bash openclaw-cn doctor openclaw-cn doctor --fix ``` 注意事项: - `openclaw-cn doctor` 报告每个无效条目。 - `openclaw-cn doctor --fix` 应用迁移/修复并重写配置。 - 即使配置无效,诊断命令如 `openclaw-cn logs`、`openclaw-cn health`、`openclaw-cn status`、`openclaw-cn gateway status` 和 `openclaw-cn gateway probe` 仍然可以运行。 ### "所有模型都失败了" — 我应该首先检查什么? - **凭据**:尝试的提供者是否存在凭据(认证配置文件 + 环境变量)。 - **模型路由**:确认 `agents.defaults.model.primary` 和备用模型是您可以访问的模型。 - **网关日志**:在 `/tmp/openclaw/…` 中查看确切的提供者错误。 - **模型状态**:使用 `/model status`(聊天)或 `openclaw-cn models status`(CLI)。 ### 我在我的个人 WhatsApp 号码上运行 — 为什么自聊很奇怪? 启用自聊模式并允许您自己的号码: ```json5 { channels: { whatsapp: { selfChatMode: true, dmPolicy: "allowlist", allowFrom: ["+15555550123"] } } } ``` 参见 [WhatsApp 设置](/channels/whatsapp)。 ### WhatsApp 将我登出了。如何重新认证? 再次运行登录命令并扫描二维码: ```bash openclaw-cn channels login ``` ### 在 `main` 分支上出现构建错误 — 标准修复路径是什么? 1) `git pull origin main && pnpm install` 2) `openclaw-cn doctor` 3) 检查 GitHub issues 或 Discord 4) 临时解决方法:检出一个较早的提交 ### npm 安装失败(allow-build-scripts / 缺少 tar 或 yargs)。现在怎么办? 如果您从源代码运行,请使用仓库的包管理器:**pnpm**(推荐)。 仓库声明了 `packageManager: "pnpm@…"`。 典型恢复步骤: ```bash git status # 确保您在仓库根目录 pnpm install pnpm build openclaw-cn doctor openclaw-cn gateway restart ``` 原因:pnpm 是此仓库配置的包管理器。 ### 如何在 git 安装和 npm 安装之间切换? 使用 **网站安装程序** 并使用标志选择安装方法。它 就地升级并重写网关服务以指向新安装。 切换 **到 git 安装**: ```bash curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git --no-onboard ``` 切换 **到 npm 全局**: ```bash curl -fsSL https://clawd.bot/install.sh | bash ``` 注意事项: - git 流程仅在仓库干净时才会变基。请先提交或暂存更改。 - 切换后,运行: ```bash openclaw-cn doctor openclaw-cn gateway restart ``` ### Telegram 块流在工具调用之间没有分割文本。为什么? 块流只发送**完整的文本块**。常见的导致单个消息的原因: - `agents.defaults.blockStreamingDefault` 仍然是 `"off"`。 - `channels.telegram.blockStreaming` 设置为 `false`。 - `channels.telegram.streamMode` 是 `partial` 或 `block` **并且草稿流是激活的** (私人聊天 + 主题)。在这种情况下,草稿流禁用了块流。 - 您的 `minChars` / 合并设置太高,因此块被合并了。 - 模型发出一个大的文本块(没有中间回复刷新点)。 修复清单: 1) 将块流设置放在 `agents.defaults` 下,而不是根目录。 2) 如果您想要真正的多消息块回复,请设置 `channels.telegram.streamMode: "off"`。 3) 调试时使用较小的块/合并阈值。 See [Streaming](/concepts/streaming). ### Discord 在我的服务器中即使设置了 `requireMention: false` 也不回复。为什么? `requireMention` 仅在通道通过允许列表后控制提及门控。 默认情况下 `channels.discord.groupPolicy` 是 **允许列表**,所以公会必须显式启用。 如果您设置了 `channels.discord.guilds.\.channels`,只有列出的通道被允许;省略它以允许公会中的所有通道。 修复清单: 1) 设置 `channels.discord.groupPolicy: "open"` **或** 添加一个公会允许列表条目(以及可选的通道允许列表)。 2) 在 `channels.discord.guilds.\.channels` 中使用 **数字通道 ID**。 3) 将 `requireMention: false` 放在 `channels.discord.guilds` 下(全局或每个通道)。 顶层 `channels.discord.requireMention` 不是受支持的键。 4) 确保机器人具有 **消息内容意图** 和通道权限。 5) 运行 `openclaw-cn channels status --probe` 获取审核提示。 文档:[Discord](/channels/discord),[通道故障排除](/channels/troubleshooting)。 ### Cloud Code Assist API 错误:无效的工具模式 (400)。现在怎么办? 这几乎总是 **工具模式兼容性** 问题。Cloud Code Assist 端点接受严格的 JSON 模式子集。OpenClaw 在当前 `main` 分支中清理/规范化工具 模式,但该修复尚未包含在最新版本中(截至 2026年1月13日)。 修复清单: 1) **更新 OpenClaw**: - 如果您可以从源代码运行,请拉取 `main` 并重启网关。 - 否则,请等待包含模式清理器的下一个版本。 2) 避免不受支持的关键字,如 `anyOf/oneOf/allOf`、`patternProperties`、 `additionalProperties`、`minLength`、`maxLength`、`format` 等。 3) 如果您定义自定义工具,请保持顶层模式为 `type: "object"`,并使用 `properties` 和简单枚举。 参见 [工具](/tools) 和 [TypeBox 模式](/concepts/typebox)。 ## macOS 特定问题 ### 授予权限时应用程序崩溃(语音/麦克风) 如果应用程序在您点击隐私提示上的"允许"时消失或显示"Abort trap 6": **修复 1:重置 TCC 缓存** ```bash tccutil reset All com.openclaw.mac.debug ``` **修复 2:强制新包 ID** 如果重置不起作用,请在 [`scripts/package-mac-app.sh`](https://github.com/OpenClaw/OpenClaw/blob/main/scripts/package-mac-app.sh) 中更改 `BUNDLE_ID`(例如,添加 `.test` 后缀)并重建。这会强制 macOS 将其视为新应用。 ### 网关卡在 "Starting..." 应用程序连接到端口 `18789` 上的本地网关。如果它一直卡住: **修复 1:停止监督程序(首选)** 如果网关由 launchd 监督,杀死 PID 只会使它重新生成。首先停止监督程序: ```bash openclaw-cn gateway status openclaw-cn gateway stop # 或:launchctl bootout gui/$UID/com.openclaw.gateway (如需要,替换为 com.openclaw.) ``` **修复 2:端口正忙(查找监听器)** ```bash lsof -nP -iTCP:18789 -sTCP:LISTEN ``` 如果是无人监督的进程,请先尝试优雅停止,然后升级: ```bash kill -TERM sleep 1 kill -9 # 最后的手段 ``` **修复 3:检查 CLI 安装** 确保全局 `openclaw-cn` CLI 已安装并与应用程序版本匹配: ```bash openclaw-cn --version npm install -g openclaw-cn@ ``` ## 调试模式 获取详细日志: ```bash # 在配置中开启跟踪日志: # ${OPENCLAW_CONFIG_PATH:-$HOME/.openclaw/openclaw.json} -> { logging: { level: "trace" } } # # 然后运行详细命令将调试输出镜像到标准输出: openclaw-cn gateway --verbose openclaw-cn channels login --verbose ``` ## 日志位置 | 日志 | 位置 | |-----|----------| | 网关文件日志(结构化) | `/tmp/openclaw/openclaw-YYYY-MM-DD.log` (或 `logging.file`) | | 网关服务日志(监督程序) | macOS: `$OPENCLAW_STATE_DIR/logs/gateway.log` + `gateway.err.log` (默认:`~/.openclaw/logs/...`; 配置文件使用 `~/.openclaw-\/logs/...`)
Linux: `journalctl --user -u openclaw-cn-gateway[-\].service -n 200 --no-pager`
Windows: `schtasks /Query /TN "OpenClaw Gateway (\)" /V /FO LIST` | | 会话文件 | `$OPENCLAW_STATE_DIR/agents/\/sessions/` | | 媒体缓存 | `$OPENCLAW_STATE_DIR/media/` | | 凭据 | `$OPENCLAW_STATE_DIR/credentials/` | ## 健康检查 ```bash # 监督程序 + 探测目标 + 配置路径 openclaw-cn gateway status # 包括系统级扫描(遗留/额外服务,端口监听器) openclaw-cn gateway status --deep # 网关是否可访问? openclaw-cn health --json # 如果失败,请使用连接详情重新运行: openclaw-cn health --verbose # 是否有其他程序在默认端口上监听? lsof -nP -iTCP:18789 -sTCP:LISTEN # 最近活动(RPC 日志尾部) openclaw-cn logs --follow # 如果 RPC 关闭则使用备选方案 tail -20 /tmp/openclaw/openclaw-*.log ``` ## 重置所有内容 终极选项: ```bash openclaw-cn gateway stop # 如果您安装了服务并希望进行干净安装: # openclaw-cn gateway uninstall trash "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}" openclaw-cn channels login # 重新配对 WhatsApp openclaw-cn gateway restart # 或:openclaw-cn gateway ``` ⚠️ 这会丢失所有会话并需要重新配对 WhatsApp。 ## 获取帮助 1. 首先检查日志:`/tmp/openclaw-cn/` (默认:`openclaw-cn-YYYY-MM-DD.log`,或您配置的 `logging.file`) 2. 在 GitHub 上搜索现有问题 3. 使用以下信息打开新问题: - openclaw-cn 版本 - 相关日志片段 - 重现步骤 - 您的配置(请编辑掉敏感信息!) --- *"Have you tried turning it off and on again?"* — Every IT person ever 🦞🔧 ### 浏览器未启动(Linux) 如果您看到 `"Failed to start Chrome CDP on port 18800"`: **最可能的原因:** Ubuntu 上的 Snap 包装的 Chromium。 **快速修复:** 改为安装 Google Chrome: ```bash wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb ``` 然后在配置中设置: ```json { "browser": { "executablePath": "/usr/bin/google-chrome-stable" } } ``` **完整指南:** 参见 [browser-linux-troubleshooting](/tools/browser-linux-troubleshooting)