1. 为什么浏览器中继控制总在「!」这一步卡住
OpenClaw 的 Chrome 扩展本质上是一个浏览器中继控制器:它不新开一个受控的 Chrome 实例,而是通过chrome.debugger把当前标签页挂到 CDP(Chrome DevTools Protocol)通道上,再把 CDP 消息转发给本地中继服务器,最终由 OpenClaw 的网关或节点消费。这套链路能做什么?简单说,就是让 AI 代理直接操作你正在用的标签页——点击、输入、导航、读取 DOM,甚至复用你已登录的会话。适合谁?适合已经在用 OpenClaw 做自动化、又不想反复切换独立浏览器配置文件的开发者。
但实际跑起来,最容易卡住的地方不是扩展装不上,而是徽章一直显示「!」。这个符号的含义是「中继无法访问」,也就是扩展连不上本地中继服务器(默认http://127.0.0.1:18792)。我见过太多人以为是扩展坏了,反复重装,其实问题往往出在三个地方:中继服务没起来、端口被占、或者扩展选项里的地址填错了。
另一个高频坑是「附加了但控制不了」。OpenClaw 的扩展有个设计原则:它不会自动控制你正在看的标签页,只控制你手动点击工具栏图标附加的那个标签页。徽章显示「ON」才代表附加成功。很多人点了图标看到徽章变了就以为完事,结果代理操作的是另一个标签页,自然对不上。
这篇教程会从零把这条链路拆开:先讲清楚三个组件(控制服务、本地中继、MV3 扩展)各自负责什么,再给出可复制的扩展配置片段和一次完整的中继控制验证动作,最后把常见报错逐个对照排查。目标很明确——在本地浏览器环境里,把 OpenClaw 的调试中继流程真正跑通,而不是停在「装好了但用不了」。
2. TaoToken 统一 Key 接入:让中继链路有稳定的模型出口
浏览器中继控制解决的是「怎么操作浏览器」,但 OpenClaw 代理在操作过程中需要调用模型来决策——比如看到页面后决定点哪个按钮、填什么内容。这一步如果模型出口不稳定,整个中继流程就会在「思考」环节断掉。所以我们需要一个统一的 Key/API 通道,把扩展侧和代理侧的模型请求都收敛到同一个入口。
TaoToken 在这里扮演的就是这个统一出口。它的 API 地址是https://taotoken.net/api,兼容 OpenAI 风格的调用方式,你可以在 OpenClaw 的模型配置里把 Base URL 指向它,然后用同一个 Key 覆盖对话、编码、Agent 等多种场景。这样做的好处是:浏览器中继链路里的模型请求不用再分散到多个供应商,排查问题时只需要看一个出口的日志。
具体到 OpenClaw 的配置,模型出口通常写在网关或节点的配置文件里。你需要准备三件套:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,Key 在控制台创建,Model ID 按你实际使用的模型填写。这三件套在后面的扩展配置和 CLI 验证里都会用到,建议先记下来。
如果你还没创建 Key,可以走这个路径:先访问官网了解整体能力,再进控制台创建 API Key。官网入口是https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,控制台在https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite。创建完 Key 后,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各语言的调用示例,照着改 Base URL 就行。
这里要强调一点:TaoToken 是合规的 API 聚合入口,不是所谓的「中转」黑话。它的作用是让你用一个 Key 管理多个模型的调用,减少配置分散带来的排障成本。在浏览器中继场景里,这意味着扩展侧触发的中继请求和代理侧的模型请求可以走同一条出口,日志对得上,问题好定位。
配置完成后,你可以先用模型对话页面做一次最小验证:打开https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite,选一个模型发一条消息,确认 Key 和 Base URL 是通的。这一步过了,再往下配 OpenClaw 的中继链路,心里就有底了。
3. 可复制的扩展配置片段与中继启动步骤
这一节是整篇的核心操作区。我会把 OpenClaw Chrome 扩展的安装、中继启动、扩展配置三部分拆成可复制的步骤,每一步都给出具体命令或配置片段。你照着做,就能把浏览器中继控制的链路搭起来。
3.1 安装扩展并拿到本地路径
OpenClaw 的扩展不是从 Chrome 应用商店装的,而是从本地路径加载。先执行安装命令:
openclaw browser extension install这条命令会把扩展文件释放到本地目录。接着打印出这个目录的绝对路径:
openclaw browser extension path记下输出的路径,比如/Users/you/.openclaw/extensions/chrome-relay。然后打开 Chrome,访问chrome://extensions,右上角开启「开发者模式」,点击「加载已解压的扩展」,选择刚才打印的目录。加载成功后,把扩展图标固定到工具栏,方便后续点击附加。
3.2 启动本地中继服务器
中继服务器是控制服务和扩展之间的桥梁,默认监听http://127.0.0.1:18792。OpenClaw 内置了名为chrome的浏览器配置文件,默认目标就是扩展中继。启动方式有两种:
CLI 方式:
openclaw browser --browser-profile chrome tabs代理工具方式是在工具调用里指定profile="chrome"。这两种方式都会拉起中继服务。启动后,你可以用下面的命令确认中继端口在监听:
curl -s http://127.0.0.1:18792/health如果返回类似{"status":"ok"}的内容,说明中继起来了。如果连接被拒绝,说明中继没启动或者端口被占,后面排障章节会讲怎么处理。
3.3 扩展侧配置片段(JSON)
扩展的选项页面里需要填写中继地址和模型出口信息。虽然扩展本身主要通过chrome.debugger和 CDP 通信,但为了让中继链路里的模型请求走统一 Key,你需要在 OpenClaw 的网关配置里写入模型三件套。下面是一个可复制的 JSON 配置片段,路径按你的实际安装位置调整:
{ "browser": { "profile": "chrome", "relay": { "url": "http://127.0.0.1:18792", "timeoutMs": 15000 } }, "model": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-your-taotoken-key", "modelId": "your-model-id" } }这个片段通常放在 OpenClaw 的网关配置文件里,比如~/.openclaw/gateway.json。如果你用的是节点主机模式,同样的三件套要写在节点配置里。注意relay.url必须和扩展选项页面里填的地址一致,否则扩展会显示「!」。
3.4 创建自定义中继配置文件
如果你需要不同的名称或不同的中继端口,可以用下面的命令创建自定义配置文件:
openclaw browser create-profile \ --name my-chrome \ --driver extension \ --cdp-url http://127.0.0.1:18792 \ --color "#00AA00"这条命令会创建一个名为my-chrome的配置文件,驱动类型是extension,CDP 地址指向本地中继。创建后,你在 CLI 或代理工具里就可以用--browser-profile my-chrome来指定这个配置。--color只是给配置文件一个标识色,方便在多配置文件场景下区分。
3.5 远程网关场景的节点主机
当网关运行在另一台机器时,浏览器中继的拓扑会变成:网关把浏览器操作代理到运行 Chrome 的机器上的节点主机,扩展和中继仍然留在浏览器所在机器。这种情况下,你需要在运行 Chrome 的机器上启动节点主机:
openclaw node start --relay http://127.0.0.1:18792然后在网关侧配置节点地址。这样扩展发出的 CDP 消息会先到本地中继,再由节点主机转发给远程网关。注意中继端口不要暴露到公网,只在本地或受控网络内访问。
4. 验证中继控制:一次完整的附加与操作动作
配置写完不代表链路通了,必须做一次端到端的验证。这一节给出一个完整的验证动作:从附加标签页到执行一次 CDP 控制,确认 OpenClaw 真的能操作浏览器。
4.1 附加到目标标签页
先在 Chrome 里打开一个你想让 OpenClaw 控制的页面,比如一个测试用的表单页。然后点击工具栏上的 OpenClaw 扩展图标。观察徽章状态:
- 显示「ON」:附加成功,OpenClaw 可以控制这个标签页。
- 显示「…」:正在连接本地中继,稍等。
- 显示「!」:中继无法访问,去排障章节。
这里再强调一次:扩展不会自动控制你正在看的标签页,只控制你点击图标明确附加的那个。要切换控制目标,就在另一个标签页里再点一次图标。
4.2 用 CLI 列出已附加的标签页
附加成功后,用 CLI 确认中继能看到这个标签页:
openclaw browser --browser-profile chrome tabs预期输出会列出当前附加的标签页信息,包括标题、URL 和标签页 ID。如果列表为空,说明附加没生效,回到上一步检查徽章状态。
4.3 执行一次 CDP 控制动作
下面用代理工具方式执行一次导航动作,验证 CDP 通道是通的。在 OpenClaw 的工具调用里指定profile="chrome",然后调用导航:
{ "tool": "browser", "profile": "chrome", "action": "navigate", "url": "https://example.com" }如果链路正常,你会看到 Chrome 里那个被附加的标签页跳转到了example.com。这一步成功,说明从扩展chrome.debugger到本地中继、再到 OpenClaw 控制服务的整条 CDP 通道是通的。
4.4 验证模型出口是否走通
浏览器操作本身不依赖模型,但 OpenClaw 代理在决策时需要模型。为了确认模型出口也走通了,可以在同一个会话里让代理做一个简单判断,比如「读取当前页面标题并返回」。如果代理能返回正确标题,说明模型请求经 TaoToken 的 Base URL 成功调用。如果这一步报错,重点检查baseUrl、apiKey、modelId三件套是否填对。
4.5 成功结果的判断标准
一次完整的中继控制验证,成功标准有三条:徽章显示「ON」、CLI 能列出附加标签页、CDP 导航动作在浏览器里真实生效。三条都满足,说明浏览器中继控制链路跑通了。如果只满足前两条但导航没反应,问题可能出在 CDP 消息转发环节,检查中继日志。
5. 常见报错对照排查:从 401 到 local proxy failed
这一节把浏览器中继控制里最常见的报错逐个对照,给出排查路径。你可以把它当成一张排障表,遇到哪个查哪个。
5.1 徽章显示「!」:中继无法访问
这是最高频的错误。排查顺序:
第一,确认中继在跑。执行curl -s http://127.0.0.1:18792/health,如果连接被拒绝,说明中继没启动。回到 3.2 节重新启动。
第二,确认端口没被占。用lsof -i :18792看是否有其他进程占用。如果有,要么停掉那个进程,要么用create-profile换一个端口,同时改扩展选项里的地址。
第三,确认扩展选项里的中继地址和实际一致。默认是http://127.0.0.1:18792,如果你改过端口,两边都要改。
5.2 报错 401:模型出口鉴权失败
这个报错通常出现在代理调用模型时。含义是 API Key 无效或没带上。排查:
第一,检查apiKey是否填的是 TaoToken 控制台创建的 Key,注意不要有多余空格。
第二,检查baseUrl是否是https://taotoken.net/api,路径不要多写或少写。
第三,确认 Key 没有过期或被禁用。可以到控制台重新创建一个 Key 替换测试。
5.3 报错 local proxy failed:本地代理失败
这个报错说明中继链路里的本地转发环节出了问题。常见原因:
第一,中继进程崩了。重启中继,观察日志。
第二,节点主机没启动。如果你用的是远程网关模式,确认运行 Chrome 的机器上节点主机在跑。
第三,防火墙拦了本地回环。检查系统防火墙是否允许127.0.0.1:18792的本地连接。
5.4 报错 reading choices:模型响应解析失败
这个报错说明模型返回的内容格式不符合预期,通常是 Base URL 指向了不兼容的接口。排查:
第一,确认baseUrl指向的是兼容 OpenAI 风格的接口,TaoToken 的https://taotoken.net/api是兼容的。
第二,确认modelId是实际可用的模型标识,不要填错。
第三,如果用的是自定义模型,检查返回结构是否包含choices字段。
5.5 OAuth 相关报错:授权流程中断
如果你在配置过程中遇到 OAuth 报错,通常和模型供应商的授权回调有关。排查:
第一,确认回调地址没有被本地中继端口占用冲突。
第二,确认授权流程是在浏览器里完成的,且扩展没有拦截回调页面。
第三,如果用的是 API Key 模式,不需要走 OAuth,检查配置里是否误开了 OAuth 开关。
5.6 附加成功但控制无反应
徽章「ON」但导航没反应,说明 CDP 消息发出去了但没执行。排查:
第一,确认你操作的是被附加的那个标签页,不是另一个。
第二,检查中继日志里有没有 CDP 消息转发的记录。
第三,确认chrome.debugger没有被其他扩展占用。Chrome 同一时间只允许一个调试器附加到标签页,如果有别的调试工具在跑,会冲突。
6. 把中继链路用稳:安全边界与长期使用建议
浏览器中继控制的能力很强,强到需要你认真对待安全边界。扩展通过chrome.debugger附加后,模型可以点击、输入、导航、读取页面内容,甚至访问标签页的登录会话。这不是一个隔离环境,而是直接操作你日常浏览器的能力。所以有几条建议值得长期遵守。
第一,优先使用专用的 Chrome 配置文件。把中继控制用的浏览器配置和你的个人浏览分开,避免模型误操作到你的私人账号。Chrome 支持多配置文件,你可以在一个干净的配置文件里装扩展、跑中继。
第二,中继端口只在本地或受控网络内访问。默认的127.0.0.1:18792只监听本地回环,这是安全的。不要把它暴露到局域网或公网。如果必须远程访问,走受控的私有网络通道,并做好访问控制。
第三,谨慎授权,只在必要时附加。扩展不会自动控制标签页,这是它的安全设计。你要养成习惯:需要控制时才点图标附加,用完就分离。不要在敏感页面(网银、邮箱、后台管理)上随意附加。
第四,模型出口用统一 Key 便于审计。把模型请求收敛到 TaoToken 的 Base URL,好处是调用日志集中,出问题能快速定位是哪个环节。如果你长期做编码或 Agent 任务,可以考虑 Coding Plan,入口在https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,它适合需要持续调用模型的场景。
第五,定期检查扩展和中继的版本。OpenClaw 更新后,扩展的 CDP 协议可能有变化,重新执行openclaw browser extension install并刷新扩展,能避免版本不匹配导致的诡异问题。
最后给一个实用技巧:把中继健康检查写成一个脚本,每次启动前跑一遍。这样你就能在打开浏览器之前知道中继是否就绪,省去反复点图标看徽章的来回。链路稳不稳,往往就差这一步前置检查。