在两个已经打开的 ChatGPT 页面之间做消息中继的浏览器扩展。
当前阶段:可运行原型(prototype),更适合实验、联调和工作流探索,不是面向大众用户的成品扩展。
ChatGPT Tab Bridge 允许你把两个已经打开的 ChatGPT 页面分别绑定为 A 和 B,然后在它们之间自动接力:
- 绑定两个页面为
A / B - 选择由哪一侧先开始
- 读取一侧最新的 assistant 回复
- 组合成 relay payload 后发送到另一侧
- 支持
Start / Pause / Resume / Stop / Clear - 支持页内悬浮窗操作,也提供 popup 作为总览和设置入口
一句话说,它是一个“让两个 ChatGPT 页面接力对话”的扩展原型。
这个仓库更适合下面几类用户:
- 想实验“双 ChatGPT 标签页接力”工作流的人
- 想做 agent-to-agent / tab-to-tab relay 原型的人
- 能接受手动加载浏览器扩展、自己构建和调试的人
如果你想要的是:
- 一键安装、即装即用的商店扩展
- 面向普通用户的稳定成品
- 长时间无人值守的高可靠自动化
那这个仓库目前还不属于那一类。
扩展目前有两个操作入口:
这是主操作面,适合日常使用。
你可以直接在 ChatGPT 页面里完成:
- 绑定当前页为
A - 绑定当前页为
B - 选择 starter(A 或 B)
Start / Pause / Resume / StopClear- 查看当前 phase、round、next hop、step、last issue
- 拖动悬浮窗、折叠悬浮窗
Popup 更偏向总览、设置和调试,不是主要操作入口。
它负责:
- 查看全局状态
- 查看当前绑定
- 切换语言
- 控制悬浮窗启用、默认展开、位置重置
- 低频控制和调试信息查看
优先支持这两类 ChatGPT 页面:
- 普通线程页面
https://chatgpt.com/c/<conversation-id> - 项目内线程页面
https://chatgpt.com/g/<project-id>/c/<conversation-id>
另外,当前实现也支持把部分尚未形成持久线程 URL 的 ChatGPT 页面作为 live session 绑定使用。
但从实际使用角度,首次尝试时仍建议你:
- 先把两个页面都正常打开
- 最好先让页面各自完成至少一轮正常对话
- 再进行绑定和 relay
这样更稳定,也更符合当前原型阶段的预期使用方式。
克隆仓库后安装依赖:
pnpm installpnpm run build构建产物会输出到:
dist/extension
当前推荐使用 Microsoft Edge 以“已解压扩展”的方式加载。
步骤:
- 打开
edge://extensions - 开启“开发人员模式”
- 点击“加载已解压的扩展”
- 选择
dist/extension
说明:这个仓库当前不是商店发布形态,默认使用本地加载方式。
手动打开两个你要参与 relay 的 ChatGPT 页面。
建议:
- 两个页面都属于
chatgpt.com - 两个页面不要绑定到同一个线程
- 页面都处于可正常输入和发送的状态
在两个页面里分别使用悬浮窗,把它们绑定成:
- 一个是
A - 另一个是
B
选择 A 或 B 作为 starter,然后点击 Start。
扩展会开始:
- 读取起始侧最新 assistant 回复
- 生成 relay payload
- 发送给目标侧
- 等待目标侧回复
- 再反向继续
运行时通常会看到这些状态变化:
readyrunningpausedstoppederror
以及类似这样的步骤提示:
reading Asending A -> Bwaiting B reply
这类信息的价值在于:
它能让你知道当前 relay 卡在了哪一步,而不是只看到“扩展没反应”。
这个项目目前有几个必须提前说清楚的边界。
这是一个通过内容脚本与 ChatGPT 网页交互的扩展。
所以一旦 ChatGPT 前端结构、选择器、发送流程发生变化,扩展行为就可能受影响。
设计目标是不要求两个被控页面始终保持前台焦点。
但扩展在运行时仍会对页面做实际读写操作,例如:
- 读取消息内容
- 填写输入框
- 触发发送
因此它更接近:
- 后台自动运行
而不是:
- 前台完全无变化
比如:
- MV3 service worker 挂起
- 标签页被浏览器回收
- ChatGPT 页面长时间打开后状态陈化
- 页面正在生成、忙碌或 UI 异常时无法正确接力
如果遇到异常,最先应该尝试的是:
- 刷新相关 ChatGPT 页面
- 重新绑定
- 清空终端后重新开始
这个仓库目前已经不是概念 demo,但也还不是稳定商用品。
它更适合:
- 试验新工作流
- 做 relay 原型
- 进行真实页面联调
而不是把它当成“长期稳定的生产力工具”直接依赖。
当前扩展权限比较收敛,核心只围绕这些能力工作:
storagetabshttps://chatgpt.com/*
它的本质行为是:
在你明确绑定的 ChatGPT 页面里读取消息、写入输入框并触发发送,用来完成 relay。
也就是说,这个扩展天然会接触你绑定页面里的对话内容。
请不要把它用于你不愿意让扩展脚本参与处理的敏感会话。
当前仓库重心是:
- 把“双标签页 relay”主链路做稳
- 继续减少错误绑定、误判发送成功、错误观察目标页等问题
- 让悬浮窗成为真正可日常使用的主操作面
- 把开发文档、测试文档和用户文档彻底分开
所以这个 README 只保留用户需要知道的内容,不再承载测试体系、内部验收策略、认证导出流程或实现细节。
开发、测试、认证导出、回归分层、实现细节等内容不再放在首页 README。
这些内容应该单独整理到 docs/ 目录,例如:
docs/development.mddocs/testing.mddocs/architecture.mddocs/auth.md
README 只回答一个问题:
“作为用户,我该怎么理解、安装和使用这个项目?”
开发与测试入口请看:
docs/testing.mddocs/auth.md
本项目依赖 ChatGPT 网页界面行为,兼容性和稳定性会随着上游页面变化而变化。
请把它视为一个正在演进中的实验性工具,而不是稳定承诺明确的最终产品。