# 故障排查

## 浏览器没有启动

现象：BRB 无法连接浏览器。

原因：自动化浏览器尚未启动，或 CDP 连接不可用。

处理：先照常运行需要 ChatGPT 的操作 —— BRB 会自己尝试启动自动化浏览器一次。启动失败时本次操作停下：不重试、不创建、不发送。先运行 `/brb doctor` 看原因，必要时再手动运行 `/brb launch`。`status`、`doctor` 和会话清单不会启动浏览器。

## `/brb doctor` 只显示部分诊断

现象：输出有 `LOCAL`，但 `BROWSER/CDP` 显示不可达，或出现“页面诊断: 无法附着目标页面，已跳过。”。

原因：`/brb doctor` 先给出本地事实，再只读探测 CDP；只有 CDP 可达时才附着页面。如果 CDP 的 HTTP 探针通、但页面的 WebSocket 附着在有界等待内没完成，`BROWSER/CDP` 仍显示 `OK`，并追加“页面诊断: 无法附着目标页面，已跳过。”。诊断降级不等于操作能继续：需要会话的操作仍会在无法确认时停下。

处理：按 `LOCAL` 里的绑定、自动创建策略、额度、创建残留和 CDP endpoint 逐项排查。要启动浏览器时运行 `/brb launch`，再跑一次 `/brb doctor`；诊断命令本身不会启动浏览器。

## 未绑定时没有自动创建

现象：需要 ChatGPT 的操作返回 `NO_BINDING`。

原因：`autoCreateOnUnbound=off`、本次未绑定阶段已拒绝，或默认 `ask` 的询问被 `BRB_ONBOARDING_AUTO=0` 抑制。

处理：先运行 `/brb auto-create` 看当前策略。要改策略用 `/brb auto-create ask|on|off`；要手动绑定用 `/brb bind <conversation-url>`。`ask` 在成功绑定或 `/brb unbind` 之后算进入新的未绑定阶段，会再询问一次。

## `/brb config` 修改后看起来没有生效

现象：`/brb config <JSON patch>` 显示某个字段已忽略，或不带参数的回显中该字段标注“来自环境变量”。

原因：当前运行环境管理了这个字段；环境变量的有效值优先于配置文件，文件中的同名值不会参与本次运行。

处理：看命令输出里标出的变量名和当前有效值。想让文件说了算，就先在启动 BRB 的环境里移除或调整该环境变量，再运行 `/brb config` 确认回显来源。未知或无效字段不会写入文件。

## 页面停在登录页

现象：BRB 不能使用 ChatGPT 会话。

原因：只有在浏览器已经打开正常的 ChatGPT 页面、并且看到了登录界面时，才是自动化浏览器还没有登录 ChatGPT。BRB 不会代填密码。

处理：在自动化浏览器中手动登录，然后运行 `/brb status`。

如果 `/brb launch` 显示“无法访问 ChatGPT 页面”，或浏览器页签标题看起来是 `chatgpt.com` 但页面没有正常内容，这不是登录问题：页面可能加载到了浏览器错误页。先检查网络或代理连接；配置了代理时，以命令输出中的代理地址为准。恢复连接后再运行 `/brb launch`；BRB 不会自动重试、创建或发送。

## 消息发送后的结果不明确

现象：发送后无法确认是否已完成交付。

原因：BRB 无法确认页面或网络是否已完成交付。

处理：BRB 不会自己重发。先运行 `/brb doctor`，再由你决定要不要重新发起。

## 流程停止且显示 give-up

现象：自动接力流程不再继续。

原因：恢复预算已用完，或页面和网络条件仍不满足要求。

处理：先检查页面和网络，再运行 `/brb resume` 看恢复策略。

## 首次使用引导反复出现

现象：每次启动都出现首次使用引导。

原因：首次使用引导尚未完成，或自动提示被配置为开启。

处理：运行 `/brb setup` 完成引导，然后运行 `/brb status`。

## 找不到会话标签页

现象：BRB 找不到已绑定的 ChatGPT 会话。

原因：会话标识不完整，或浏览器没有打开目标会话。前缀相近并不表示是同一个会话。

处理：用 `/brb open <conversation-url>` 打开目标会话，再用 `/brb bind <conversation-url>` 绑定。`bind` 只接受 `https://chatgpt.com/c/<id>` 或 `https://chatgpt.com/g/g-p-…/c/<id>`；其他 URL 一律拒绝（`TARGET_SELECTOR_MISMATCH`），不写入绑定注册表。

## 账号身份不匹配

现象：当前登录账号与绑定时验证的账号不同。

原因：BRB 会在远端操作前重新观察账号身份。无法确认时停止操作。

处理：切回原账号，或运行 `/brb bind <conversation-url>` 重新绑定。

## 自动创建前无法确认账号

现象：未绑定的 Pi 线程自动创建时显示“身份 UNKNOWN：创建前无法验证当前登录账号；不打开新会话、不提交绑定，也不自动重试。”。

原因：BRB 会先对已经打开的 ChatGPT 页面只读核对账号身份；无法确认时停止操作，不会打开新的 ChatGPT 会话、发送消息或写入绑定。

处理：先确认自动化浏览器登录的是正确账号、并且打开了一个 ChatGPT 页面，然后重试；也可以运行 `/brb bind <conversation-url>` 手动绑定已有会话。

## 只装了 Edge，没有 Chrome

这不是问题 ✗ —— BRB 会自动回退到 Microsoft Edge，**不需要**为了 BRB 去装 Chrome。

若仍然报"未找到可用的自动化浏览器"，按顺序看 `/brb doctor` 的三行新增诊断：

- `浏览器能力:` —— `NOT_FOUND` 表示两个标准安装路径都没找到（Edge 被装在非标准位置时用 `/brb config {"browserExecutable":"<完整路径>"}` 指定）✗ `BLOCKED` 表示装到了但远程调试不可用（常见于企业策略 ✗ 配置目录被占用 ✗ 调试端口被别的进程占了）✗ `UNSUPPORTED` 表示显式指定的可执行文件不是 Chrome/Edge。
- `端口归属:` —— `FOREIGN_CDP` 表示端口上有**别人**的 CDP 端点（BRB 不会结束它 ✗ 也不会附着 ✗）✗ `NON_CDP` 表示端口被非 CDP 进程占着。
- `代理:` —— `UNREACHABLE` 表示你配置的代理连不上。这种情况页面会变成浏览器错误页，**看起来像"没登录"其实不是**；先启动代理再重试。

切换浏览器（会作废此前的解析结果）：`/brb browser chrome` 或 `/brb browser edge`；回到自动选择：`/brb browser auto`。
