故障排除 🔧
当 OpenClaw 行为异常时,以下是修复它的方法。 如果您只想快速排查问题,请先查看常见问题解答 前60秒。本页面将深入探讨运行时故障和诊断。 特定提供商的快捷方式:/channels/troubleshooting状态与诊断
快速排查命令(按顺序):| 命令 | 提供的信息 | 使用场景 |
|---|---|---|
openclaw status | 本地摘要:操作系统 + 更新、网关可达性/模式、服务、代理/会话、提供商配置状态 | 首次检查,快速概览 |
openclaw status --all | 完整本地诊断(只读、可粘贴、相对安全),包括日志尾部 | 当您需要分享调试报告时 |
openclaw status --deep | 运行网关健康检查(包括提供商探测;需要可访问的网关) | 当“已配置”并不意味着“正常工作”时 |
openclaw gateway probe | 网关发现 + 可达性(本地 + 远程目标) | 当您怀疑正在探测错误的网关时 |
openclaw channels status --probe | 向正在运行的网关请求通道状态(并可选择进行探测) | 当网关可访问但通道行为异常时 |
openclaw gateway status | 监控器状态(launchd/systemd/schtasks)、运行时PID/退出、最近的网关错误 | 当服务“看起来已加载”但未运行任何内容时 |
openclaw logs --follow | 实时日志(运行时问题的最佳信号) | 当您需要确切的失败原因时 |
openclaw status --all(它会屏蔽令牌)。如果您粘贴 openclaw status,请先考虑设置 OPENCLAW_SHOW_SECRETS=0(令牌预览)。
另请参阅:健康检查和日志记录。
常见问题
未找到提供商“anthropic”的API密钥 这意味着代理的身份验证存储为空,或者缺少Anthropic凭证。 身份验证是按代理划分的,因此新代理不会继承主代理的密钥。 修复选项:- 重新运行入门流程,并为该代理选择 Anthropic。
-
或在 网关主机 上粘贴一个设置令牌:
-
或从主代理目录将
auth-profiles.json复制到新代理目录。
在HTTP上控制UI失败(“需要设备身份”/“连接失败”)
如果您通过普通HTTP打开仪表板(例如http://<lan-ip>:18789/ 或 http://<tailscale-ip>:18789/),浏览器将在非安全上下文中运行,并阻止WebCrypto,因此无法生成设备身份。
修复:
- 优先通过 Tailscale Serve 使用HTTPS。
- 或在网关主机上本地打开:
http://127.0.0.1:18789/。 - 如果您必须使用HTTP,启用
gateway.controlUi.allowInsecureAuth: true并使用网关令牌(仅令牌;无设备身份/配对)。请参阅 控制UI。
detect-secrets 发现了尚未纳入基线的新候选者。请遵循 秘密扫描。
服务已安装,但未运行任何内容
如果网关服务已安装,但进程立即退出,服务可能看似“已加载”,但实际上并未运行任何内容。 检查:- 推荐:
openclaw 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[-<profile>].service -n 200 --no-pager - Windows:
schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST
-
提高文件日志详细程度(持久化JSONL):
-
提高控制台冗余度(仅TTY输出):
-
快速提示:
--verbose仅影响控制台输出。文件日志仍由logging.level控制。
“网关启动被阻止:设置gateway.mode=local”
这意味着配置存在,但gateway.mode 未设置(或不是 local),因此网关拒绝启动。
修复(推荐):
-
运行向导并将网关运行模式设置为本地:
-
或直接设置:
-
设置远程URL并保持
gateway.mode=remote:
--allow-unconfigured 以在没有 gateway.mode=local 的情况下启动网关。
还没有配置文件? 运行 openclaw setup 创建初始配置,然后重新运行网关。
服务环境(PATH + 运行时)
网关服务以“最小化PATH”模式运行,以避免Shell或管理器环境变得杂乱。- macOS:
/opt/homebrew/bin、/usr/local/bin、/usr/bin、/bin - Linux:
/usr/local/bin、/usr/bin、/bin
DISPLAY 这样的运行时变量应位于 ~/.openclaw/.env 中(由网关提前加载)。
执行运行于 host=gateway,将您的登录shell PATH 合并到执行环境中,因此缺少工具通常意味着您的shell初始化未导出它们(或设置了 tools.exec.pathPrepend)。请参阅 /tools/exec。
WhatsApp和Telegram频道需要Node;不支持Bun。如果您使用Bun或通过版本管理工具安装的Node路径来运行服务,请运行openclaw doctor,将其迁移到系统Node安装。
在沙盒中缺少API密钥
症状: 该技能在主机上运行正常,但在沙盒中因缺少API密钥而无法运行。 原因: 沙盒中的执行在Docker内部运行,process.env 主机。
修复:
- 设置
agents.defaults.sandbox.docker.env(或按代理设置agents.list[].sandbox.docker.env) - 或将密钥烘焙到您的自定义沙盒镜像中
- 然后运行
openclaw sandbox recreate --agent <id>(或--all)
服务正在运行,但端口未监听
如果服务报告“正在运行”,但网关端口没有任何监听,网关很可能会拒绝绑定。 此处“正在运行”的含义Runtime: running表示您的监控器(launchd/systemd/schtasks)认为进程还活着。RPC probe表示 CLI 实际上可以连接到网关 WebSocket 并调用status。- 始终信任
Probe target:+Config (service):,将其视为“我们实际尝试了什么?”的线索。
gateway.mode必须是local,以便openclaw gateway和服务能够正常运行。- 如果您设置了
gateway.mode=remote,CLI默认 使用远程URL。服务可能仍在本地运行,但您的CLI可能正在探测错误的位置。使用openclaw gateway status查看服务解析后的端口 + 探测目标(或传递--url)。 openclaw gateway status和openclaw doctor从日志中显示 最近的网关错误,即使服务看似运行,但端口已关闭。- 非环回绑定(
lan/tailnet/custom,或在无法使用环回时使用auto)需要身份验证:
gateway.auth.token(或 OPENCLAW_GATEWAY_TOKEN)。
gateway.remote.token仅用于远程CLI调用;它 不 启用本地身份验证。gateway.token被忽略;请使用gateway.auth.token。
openclaw gateway status 显示配置不匹配
Config (cli): ...和Config (service): ...通常应保持一致。- 如果不一致,您很可能正在服务运行时编辑另一个配置。
- 修复方法:从您希望服务使用的同一
--profile/OPENCLAW_STATE_DIR重新运行openclaw gateway install --force。
openclaw gateway status 报告服务配置问题
- 监控器配置(launchd/systemd/schtasks)缺少当前默认值。
- 修复:运行
openclaw doctor更新配置(或openclaw gateway install --force进行完全重写)。
Last gateway error: 提及“拒绝绑定……没有身份验证”
- 您已将
gateway.bind设置为非环回模式(lan/tailnet/custom,或在无法使用环回时使用auto),但未配置身份验证。 - 修复:设置
gateway.auth.mode+gateway.auth.token(或导出OPENCLAW_GATEWAY_TOKEN)并重启服务。
openclaw gateway status 说 bind=tailnet 但未找到尾网接口
- 网关尝试绑定到Tailscale IP(100.64.0.0/10),但在主机上未检测到任何IP。
- 修复:在该机器上启用Tailscale(或将
gateway.bind更改为loopback/lan)。
Probe note: 说探测使用环回
- 对于
bind=lan来说这是预期的:网关在0.0.0.0(所有接口)上监听,环回仍然可以在本地连接。 - 对于远程客户端,使用真实的LAN IP(不是
0.0.0.0)加上端口,并确保已配置身份验证。
地址已被占用(端口18789)
这意味着网关端口上已经有东西在监听。 检查:检测到额外的工作区文件夹
如果您从旧版本升级,磁盘上可能仍有~/openclaw。由于一次只能有一个工作区处于活动状态,多个工作区目录可能导致身份验证混乱或状态漂移。
修复: 保留一个活动的工作区,并归档或删除其余的工作区。请参阅 代理工作区。
主聊天在沙盒工作区中运行
症状: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会故意拒绝使用较旧或不安全的模型,尤其是那些更容易遭受提示注入攻击的模型。如果您看到此错误,说明该模型名称已不再受支持。 修复:- 为提供商选择最新的模型,并更新您的配置或模型别名。
- 如果您不确定哪些模型可用,运行
openclaw models list或openclaw models scan,并选择一个受支持的模型。 - 查看网关日志以获取详细的失败原因。
消息未触发
检查1: 发件人是否被列入白名单?AllowFrom: ...。
检查2: 对于群聊,是否需要提及?
配对代码尚未到达
如果dmPolicy是pairing,未知发件人应收到代码,在批准之前其消息将被忽略。
检查1: 是否已有待处理的请求在等待?
dmPolicy 不是该频道的 open/allowlist。
图片+提及不起作用
已知问题:当您仅发送带有提及的图片(没有其他文本)时,WhatsApp有时不会包含提及元数据。 解决方法: 在提及中添加一些文本:- ❌
@openclaw+ 图片 - ✅
@openclaw check this+ 图片
会话无法恢复
检查1: 会话文件是否存在?/new、/reset 或重置触发器?
代理超时
默认超时为30分钟。对于长时间任务:process 工具将长时间运行的命令放到后台执行。
__HEADING_0__WhatsApp已断开连接
媒体发送失败
检查1: 文件路径是否有效?- 图片:最大6MB
- 音频/视频:最大16MB
- 文档:最大100MB
内存使用率高
OpenClaw在内存中保存对话历史。 修复: 定期重启或设置会话限制:常见故障排除
“网关无法启动——配置无效”
出于安全考虑,OpenClaw现在会在配置包含未知键、格式错误的值或无效类型时拒绝启动。 使用Doctor修复:openclaw doctor报告每个无效条目。openclaw doctor --fix应用迁移/修复并重写配置。- 即使配置无效,诊断命令如
openclaw logs、openclaw health、openclaw status、openclaw gateway status和openclaw gateway probe仍可运行。
“所有模型都失败”——我首先应该检查什么?
- 凭证 是否适用于正在尝试的提供商(身份验证配置文件 + 环境变量)。
- 模型路由:确认
agents.defaults.model.primary和后备模型是您可以访问的模型。 - 网关日志 在
/tmp/openclaw/…中查看确切的提供商错误。 - 模型状态:使用
/model status(聊天)或openclaw models status(CLI)。
我使用个人WhatsApp号码——为什么自我聊天很奇怪?
启用自我聊天模式并将您自己的号码列入白名单:在 main 上出现构建错误——标准修复路径是什么?
git pull origin main && pnpm installopenclaw doctor- 检查GitHub问题或Discord
- 临时解决方案:检出较早的提交
npm install 失败(构建脚本被允许/缺少 tar 或 yargs)。现在该怎么办?
如果您是从源代码运行,使用仓库的包管理器:pnpm(推荐)。 仓库声明了packageManager: "pnpm@…"。
典型恢复:
如何在Git安装和npm安装之间切换?
使用网站安装程序并通过标志选择安装方法。它会就地升级,并将网关服务重定向到新安装。 切换到Git安装:- Git流程仅在仓库干净时才会执行变基。请先提交或暂存更改。
-
切换后,运行:
agents.defaults.blockStreamingDefault仍然是"off"。channels.telegram.blockStreaming被设置为false。channels.telegram.streamMode是partial或block且草案流处于活动状态
- 你的
minChars/ 聚合设置过高,导致块被合并。 - 模型发出一个大文本块(没有中间回复刷新点)。
- 将块流设置移至
agents.defaults下,而非根级别。 - 如果你需要真正的多消息块回复,请设置
channels.telegram.streamMode: "off"。 - 在调试时使用更小的块/聚合阈值。
即使我的服务器中有 requireMention: false,Discord 也不回复。为什么?
requireMention 仅在频道通过白名单后才控制提及** gating**。
默认 channels.discord.groupPolicy 是 白名单,因此公会必须明确启用。
如果您设置了 channels.discord.guilds.<guildId>.channels,只有列出的频道才被允许;省略它以允许公会中的所有频道。
修复清单:
- 设置
channels.discord.groupPolicy: "open"或 添加公会白名单条目(并可选添加频道白名单)。 - 在
channels.discord.guilds.<guildId>.channels中使用 数字频道ID。 - 将
requireMention: false放在channels.discord.guilds(全局或每频道) 之下。 顶级channels.discord.requireMention不是支持的密钥。 - 确保机器人具有 消息内容意图 和频道权限。
- 运行
openclaw channels status --probe获取审计提示。
云代码辅助API错误:无效工具模式(400)。现在该怎么办?
这几乎总是工具模式兼容性问题。Cloud Code Assist端点只接受JSON Schema的严格子集。OpenClaw会在当前main 中清理或规范化工具模式,但相关修复尚未在最新版本中实现(截至2026年1月13日)。
修复清单:
- 更新OpenClaw:
- 如果您可以从源代码运行,请拉取
main并重启网关。- 否则,请等待包含模式清理器的下一个版本。
- 避免使用不支持的关键字,如
anyOf/oneOf/allOf、patternProperties、additionalProperties、minLength、maxLength、format等。 - 如果您定义自定义工具,请将顶级模式设置为
type: "object",并使用properties和简单的枚举。
macOS 特有问题
应用在授予权限时崩溃(语音/麦克风)
如果应用在您点击隐私提示中的“允许”时消失,或显示“Abort trap 6”: 修复1:重置TCC缓存scripts/package-mac-app.sh 中的 BUNDLE_ID(例如,添加一个 .test 后缀)并重新构建。这会强制 macOS 将其视为新应用。
网关卡在“启动中…”
该应用连接到本地网关,端口为18789。如果它一直卡住:
修复1:停止监控器(推荐)
如果网关由launchd监控,杀死PID只会导致它重新启动。请先停止监控器:
openclawCLI,并且其版本与应用版本匹配:
调试模式
获取详细日志:日志位置
| 日志 | 位置 |
|---|---|
| 网关文件日志(结构化) | /tmp/openclaw/openclaw-YYYY-MM-DD.log(或 logging.file) |
| 网关服务日志(监控器) | macOS:$OPENCLAW_STATE_DIR/logs/gateway.log + gateway.err.log(默认:~/.openclaw/logs/...;配置文件使用 ~/.openclaw-<profile>/logs/...)Linux: journalctl --user -u openclaw-gateway[-<profile>].service -n 200 --no-pagerWindows: schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST |
| 会话文件 | $OPENCLAW_STATE_DIR/agents/<agentId>/sessions/ |
| 媒体缓存 | $OPENCLAW_STATE_DIR/media/ |
| 基准测试结果 | $OPENCLAW_STATE_DIR/credentials/ |
健康检查
重置一切
终极方案:获取帮助
- 先查看日志:
/tmp/openclaw/(默认:openclaw-YYYY-MM-DD.log,或您配置的logging.file) - 在GitHub上搜索现有问题
- 打开新问题,提供:
- OpenClaw版本
- 相关日志片段
- 复现步骤
- 您的配置(请隐藏敏感信息!)
“你试过关机再开机吗?” — 每一位IT人员都会这么说 龙虾🔧
浏览器无法启动(Linux)
如果您看到"Failed to start Chrome CDP on port 18800":
最可能的原因: 在Ubuntu上,Chromium是通过Snap打包的。
快速修复: 安装Google Chrome代替: