ai-browser-bridge 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +38 -25
- package/README.he.md +42 -25
- package/README.md +36 -14
- package/README.zh.md +38 -25
- package/dist/bridge.js +7114 -6884
- package/dist/bridge.js.map +1 -1
- package/package.json +8 -13
package/README.zh.md
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/hero.png" alt="
|
|
2
|
+
<img src="assets/hero.png" alt="ai-browser-bridge — 通过 Chrome 从终端驱动 ChatGPT、Gemini、Claude、DeepSeek、Grok、Perplexity 与 Flow" width="640" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# ai-browser-bridge
|
|
6
6
|
|
|
7
7
|
[English](README.md) · [עברית](README.he.md) · [Español](README.es.md) · **中文**
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
> 从终端驱动真实的 ChatGPT 浏览器会话,并通过 MCP
|
|
17
|
+
> 从终端驱动真实的 ChatGPT 或 Gemini 浏览器会话,并通过 MCP 给 ChatGPT 一组受限的本地仓库工具——永远不交给它一个 shell。
|
|
18
18
|
|
|
19
19
|
## 为什么需要它
|
|
20
20
|
|
|
21
21
|
ChatGPT 在浏览器中表现最佳——真实的账户状态、模型选择器、消息编辑、重新生成以及会话历史都完整保留。而写代码在终端中最高效,可以直接检查和修改文件、测试、diff 与补丁。
|
|
22
22
|
|
|
23
|
-
`
|
|
23
|
+
`ai-browser-bridge` 把这两个界面连接起来。终端中的一个提示词驱动你现有的提供商浏览器会话,而 ChatGPT 可以通过一小组**经过校验的 MCP 工具**——`grep`、`read`、`apply_patch`、`run_tests`、`git_diff`——访问当前仓库,而不是获得原始 shell 访问权限。你始终停留在单一的终端工作流中;提供商保留其真实界面。
|
|
24
24
|
|
|
25
25
|
## 功能
|
|
26
26
|
|
|
27
|
-
-
|
|
27
|
+
- **九个提供商,一个命令** — ChatGPT、Gemini、Claude、DeepSeek、Grok、Perplexity、Duck.ai、Arena 与 Google Flow。使用 `--provider` 选择一个,或并行询问多个。
|
|
28
|
+
- **面向智能体** — `bridge ask … --json` 提供稳定的非交互接口,`bridge serve` 则暴露出站 MCP 工具。
|
|
28
29
|
- **通过 MCP 的沙箱化本地工具** — 每个文件操作都针对所选仓库根目录进行校验;没有任意 shell,仅允许白名单内的测试命令。
|
|
29
30
|
- **浏览器操作即命令** — `/resume`、`/new`、`/model`、`/rewind`、`/stop`、`/context`、`/diff`、`/compact` 等。
|
|
30
|
-
-
|
|
31
|
+
- **仓库根目录中的会话、记录与下载** — 持久化运行始终使用 `<repo>/.bridge/`,即使从子目录启动也是如此。
|
|
31
32
|
- **安全控制** — 权限模式(`read-only` / `ask` / `auto`)以及每次补丁前后的自动文件检查点。
|
|
32
33
|
- **项目约定** — 自定义命令以及 `AGENTS.md` / `CLAUDE.md` 会在 `/task` 运行时提供给 ChatGPT。
|
|
33
34
|
- **真正的输入器** — 提示词历史、反向搜索、提示词排队,以及 `@file` 提及的自动补全。
|
|
@@ -54,8 +55,8 @@ ChatGPT 在浏览器中表现最佳——真实的账户状态、模型选择器
|
|
|
54
55
|
| 层 | 技术 | 职责 |
|
|
55
56
|
|----|------|------|
|
|
56
57
|
| **CLI** | Ink / React | 终端界面:消息面板、状态栏、`@file` 提及、`/` 命令。 |
|
|
57
|
-
| **浏览器** | Playwright + Chrome DevTools Protocol |
|
|
58
|
-
| **MCP 服务器** | MCP SDK +
|
|
58
|
+
| **浏览器** | Playwright + Chrome DevTools Protocol | 通过调试端口连接 Chrome,并复用唯一的共享 bridge 配置文件。提供商适配器位于 `src/features/providers/`。 |
|
|
59
|
+
| **MCP 服务器** | MCP SDK + Effect Schema | 向 ChatGPT、Claude 与 Grok 暴露经过校验且沙箱化的本地工具。 |
|
|
59
60
|
| **隧道** | Cloudflare Tunnel (`cloudflared`) | 为本地 MCP 服务器提供一个临时的公共 HTTPS 地址,供 ChatGPT 连接器访问——无需部署。 |
|
|
60
61
|
|
|
61
62
|
**为什么需要隧道?** ChatGPT 的 MCP 连接器通过 HTTPS 调用工具,但工具服务器运行在你的机器上。与其部署任何东西,bridge 在本地端口前面启动一个临时的 Cloudflare 隧道(`*.trycloudflare.com`),并在启动时把该 `…/mcp` 地址同步到 ChatGPT 应用中。(ngrok 也能解决同样的可达性问题;这里使用 Cloudflare 的 `cloudflared`,因为它的快速隧道无需账户或令牌。)
|
|
@@ -65,36 +66,48 @@ ChatGPT 在浏览器中表现最佳——真实的账户状态、模型选择器
|
|
|
65
66
|
**前置条件**
|
|
66
67
|
|
|
67
68
|
- **macOS** — Chrome 从 `/Applications/Google Chrome.app` 启动,剪贴板/进程辅助使用 `pbcopy`/`lsof`。
|
|
68
|
-
- **Node.js ≥
|
|
69
|
-
- **Google Chrome** — bridge
|
|
70
|
-
- **`cloudflared`** *(可选)* —
|
|
69
|
+
- **Node.js ≥ 22** 与 **pnpm**(仓库锁定 `pnpm@10.14.0`)。
|
|
70
|
+
- **Google Chrome 或 Chrome for Testing** — bridge 复用 `~/.ai-browser-bridge/chrome-profile` 中的全局共享配置文件。
|
|
71
|
+
- **`cloudflared`** *(可选)* — ChatGPT、Claude 或 Grok 调用本地工具时需要。没有它 TUI 仍可运行。安装:`brew install cloudflared`。
|
|
71
72
|
|
|
72
73
|
**安装与构建**
|
|
73
74
|
|
|
74
75
|
```bash
|
|
75
|
-
git clone https://github.com/YosefHayim/
|
|
76
|
-
cd
|
|
76
|
+
git clone https://github.com/YosefHayim/ai-browser-bridge.git
|
|
77
|
+
cd ai-browser-bridge
|
|
77
78
|
pnpm install
|
|
78
79
|
pnpm build
|
|
79
80
|
```
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
**启动 Chrome,然后运行**
|
|
82
83
|
|
|
83
84
|
```bash
|
|
84
|
-
# 打开 bridge
|
|
85
|
-
node dist/bridge.js
|
|
85
|
+
# 打开 bridge 的共享 Chrome 配置文件;如有需要请登录
|
|
86
|
+
node dist/bridge.js chrome start
|
|
86
87
|
|
|
87
88
|
# 针对你希望 ChatGPT 操作的仓库启动终端界面
|
|
88
89
|
node dist/bridge.js --repo /path/to/your/project
|
|
89
90
|
```
|
|
90
91
|
|
|
91
|
-
想要一个全局 `bridge` 命令?构建后运行 `pnpm link --global`,然后使用 `bridge`、`bridge
|
|
92
|
+
想要一个全局 `bridge` 命令?构建后运行 `pnpm link --global`,然后使用 `bridge`、`bridge chrome start`、`bridge ask "…"` 等。
|
|
93
|
+
|
|
94
|
+
## 智能体与提供商
|
|
95
|
+
|
|
96
|
+
`bridge ask` 可以询问单个提供商,也可以把同一问题并行发送给多个提供商。结果按提供商返回,部分失败不会丢弃成功结果。
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
bridge ask --provider claude --json "summarize this repo"
|
|
100
|
+
bridge ask --provider claude,deepseek,grok --json "compare these approaches"
|
|
101
|
+
bridge serve
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`bridge serve` 通过 MCP stdio 提供 `ask` 与 `search_conversations`。ChatGPT、Claude 与 Grok 可使用入站 MCP 连接器;Gemini、DeepSeek、Perplexity、Duck.ai 与 Arena 作为网页聊天运行,Flow 则作为视频生成界面运行。
|
|
92
105
|
|
|
93
106
|
## 状态保存在哪里
|
|
94
107
|
|
|
95
|
-
某个项目的所有 bridge
|
|
108
|
+
某个项目的所有 bridge 状态都写入 Git 工作树规范根目录下的 `<repo>/.bridge/`。即使从子目录启动,也只会使用这一处根目录;显式指定的非 Git 目录仍以自身作为根目录。bridge 不会创建或管理 `.bridge/.gitignore`;忽略策略由目标仓库自行决定。
|
|
96
109
|
|
|
97
|
-
>
|
|
110
|
+
> 由用户编写、意在应用于**所有**仓库的配置位于你的主目录中:自定义命令在 `~/.ai-browser-bridge/commands/*.md`,用户级 hooks 在 `~/.ai-browser-bridge/hooks.json`。
|
|
98
111
|
|
|
99
112
|
## 权限与检查点
|
|
100
113
|
|
|
@@ -111,10 +124,10 @@ node dist/bridge.js --repo /path/to/your/project
|
|
|
111
124
|
```bash
|
|
112
125
|
pnpm test # vitest run
|
|
113
126
|
pnpm typecheck # tsc --noEmit
|
|
114
|
-
pnpm verify:push # typecheck +
|
|
127
|
+
pnpm verify:push # Biome + typecheck + tests + build + 结构检查
|
|
115
128
|
```
|
|
116
129
|
|
|
117
|
-
|
|
130
|
+
覆盖率聚焦于安全敏感路径——沙箱校验、规范仓库根目录解析、会话/检查点存储、权限以及上下文计数。
|
|
118
131
|
|
|
119
132
|
## Google Flow 支持
|
|
120
133
|
|
|
@@ -130,7 +143,7 @@ bridge ask --provider flow "same scene, dawn light" --attach ref1.png ref2.png
|
|
|
130
143
|
|
|
131
144
|
```bash
|
|
132
145
|
bridge flow clips # 列出当前项目中的片段(id + 可获取的 URL)
|
|
133
|
-
bridge flow download #
|
|
146
|
+
bridge flow download # 将片段下载到 <repo>/.bridge/downloads/flow
|
|
134
147
|
bridge flow reuse --id <clipId> # 将片段作为输入重新加入提示词("Add to prompt")
|
|
135
148
|
bridge flow extend --id <clipId> # 将片段加入场景(Flow 的 "Add to scene")
|
|
136
149
|
bridge flow rename --id <clipId> --name "hero shot"
|
|
@@ -162,12 +175,12 @@ bridge flow project-delete --yes # 永久删除当前项目
|
|
|
162
175
|
|
|
163
176
|
Flow 需要 **Google AI Pro/Ultra** 套餐。由于 Veo 渲染需要数分钟,`--provider flow` 等待响应的时间远比聊天类提供商更长。
|
|
164
177
|
|
|
165
|
-
**选择器维护:** Flow 的选择器已针对已登录的项目编辑器**实时验证(LIVE-VERIFIED)**。如果 Google 更改了 UI,请使用 `node
|
|
178
|
+
**选择器维护:** Flow 的选择器已针对已登录的项目编辑器**实时验证(LIVE-VERIFIED)**。如果 Google 更改了 UI,请使用 `node scripts/dev/captureProviderSelectors.mjs` 重新捕获,然后更新 [`src/config.ts`](src/config.ts);生成逻辑位于 [`src/features/providers/flow/flowPage.ts`](src/features/providers/flow/flowPage.ts),素材 CRUD 位于 [`src/features/providers/flow/flowAssets.ts`](src/features/providers/flow/flowAssets.ts)。
|
|
166
179
|
|
|
167
180
|
## 限制
|
|
168
181
|
|
|
169
182
|
- 目前**仅支持 macOS**(硬编码的 Chrome 路径以及 `pbcopy`/`lsof` 辅助)。
|
|
170
|
-
-
|
|
183
|
+
- 当提供商的网页界面变动时,选择器可能失效;修复集中在对应适配器中。
|
|
171
184
|
- 上下文用量是**估算值**——浏览器不暴露服务器端的精确 token 计数。
|
|
172
185
|
- Cloudflare 隧道需要已安装 `cloudflared`。
|
|
173
186
|
- 设计上以本地优先;并非托管的多用户服务。
|