# Ask Bridge

> 完整使用 ask-bridge CLI 的 Agent Skill。使用 ask-bridge 將低風險、探索性 AI 研究、摘要、文件分析、程式片段分析、錯誤訊息整理、方案比較、初稿產出或可委派的背景調查交給 ChatGPT、Gemini 或 Claude 網站。當 Codex 需要透過本機 ask-bridge 命令呼叫網站型 AI、利用 ChatGPT/Gemini/Claude 網頁額度、附加檔案或圖片、切換模型、設定逾時、取回或儲存回覆、下載生成圖片、管理瀏覽器 session、更新 ask-bridge，或查詢所有參數與子命令用法時使用。

- Skill: `doggy8088/ask-bridge` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add doggy8088/ask-bridge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/doggy8088/ask-bridge/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: doggy8088 (https://skillmd.com/u/doggy8088)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/doggy8088/ask-bridge

---


# Ask Bridge

## 核心原則

使用 `ask-bridge` 把低風險、探索性、可委派的 AI 任務交給 ChatGPT、Gemini 或 Claude 網站處理，再將回覆作為本機工作流程的參考輸入。不要把 provider 回覆視為事實來源、測試結果或已完成的程式碼變更。

優先把主要 Coding Agent 保留給下列工作：讀取專案脈絡、修改檔案、執行測試、驗證行為、整合結論。把 `ask-bridge` 用於背景研究、摘要、候選方案、初稿與輔助分析。

## 執行命令名稱

安裝後優先使用 `ask-bridge`：

```sh
ask-bridge --help
```

本專案產出的 Rust binary 叫 `ask-bridge`，release 產物通常位於 `target/release/ask-bridge`。在專案內測試尚未安裝的版本時，可使用：

```sh
cargo run --bin ask-bridge -- --help
target/release/ask-bridge --help
```

本 Skill 下方範例一律以安裝後的 `ask-bridge` 命令表示。

`ask` 只是向後相容 alias。除非使用者明確要求 alias，文件、範例與自動化命令都優先使用 `ask-bridge`。

## 使用前檢查

先確認 `ask-bridge`、Node.js 與 npx 可用：

```sh
ask-bridge -v
node --version
npx --version
```

Node.js 必須符合 `^20.19.0`、`^22.12.0` 或 `>=23.0.0`。執行瀏覽器操作還需要 Google Chrome；macOS、Windows 與 Linux 的偵測位置依專案 README 為準。

若找不到 `ask-bridge`，在 ask-bridge 專案中可先使用既有安裝流程、`cargo run --bin ask-bridge --`，或建置後的 `target/release/ask-bridge`；不要臆測使用者環境已完成設定。

在 Windows 安裝或更新後，額外確認實際命令來源：

```powershell
where.exe ask-bridge
ask-bridge --version
```

第一筆展開後的完整路徑結尾應為 `\.local\bin\ask-bridge.exe`。若其他舊命令排在前面，
重新執行官方 `install.ps1`；安裝程式會驗證 Windows PE 格式與版本輸出，
並將正式安裝目錄移到 User PATH 最前面。

## 全域設定檔

`ask-bridge` 會讀取全域設定檔：

```text
~/.config/ask-bridge/config.json
```

可用格式：

```json
{
  "provider": "gemini"
}
```

或：

```json
{
  "provider": "chatgpt"
}
```

或：

```json
{
  "provider": "claude"
}
```

provider 優先序：

1. CLI `--provider chatgpt|gemini|claude`
2. `~/.config/ask-bridge/config.json` 的 `provider`
3. 內建預設 `chatgpt`

若需要替使用者設定預設 provider，可建立設定檔：

```sh
ask-bridge config --provider gemini
ask-bridge config --provider claude
```

若要改回 ChatGPT：

```sh
ask-bridge config --provider chatgpt
```

使用 `ask-bridge config` 可查看目前設定：

```sh
ask-bridge config
```

若任務需要單次覆蓋全域設定，直接使用 `--provider`，不要修改設定檔：

```sh
ask-bridge --provider chatgpt '請摘要這段內容。'
```

首次使用或登入失效時，`ask-bridge` 可能需要瀏覽器互動登入。只有在任務允許互動式登入時才執行：

```sh
ask-bridge login
ask-bridge --provider gemini login
ask-bridge --provider claude login
ask-bridge login --provider gemini
```

若目前任務不適合中斷等待登入，回報需要使用者完成登入，不要反覆重試。

## 委派決策

適合使用 `ask-bridge`：

- 摘要長文件、錯誤訊息、測試輸出、issue 討論或研究筆記。
- 請外部 AI 對程式片段、設計方案或規格草稿做初步分析。
- 產生候選實作策略、檢查清單、測試案例構想或文件初稿。
- 比較多個方案的優缺點，但由本機 agent 保留最終判斷。
- 將不需要直接修改專案檔案的工作移出主要 agent 流程。

避免使用 `ask-bridge`：

- 需要讀取或傳送密鑰、憑證、token、個資、內部機密或使用者未授權的內容。
- 需要可驗證最新資訊、法規、價格、版本、新聞或官方規格時，把 `ask-bridge` 當成唯一資料來源。
- 需要直接修改檔案、執行測試、操作 git、發佈或部署。
- 任務要求嚴格可重現、可稽核或不可容忍 provider 幻覺。

## 快速語法

基本語法：

```sh
ask-bridge [OPTIONS] [PROMPT] [COMMAND]
```

常用範例：

```sh
ask-bridge '請摘要下列錯誤訊息，列出可能原因與下一步檢查。'
ask-bridge --provider gemini '請比較這三個實作方向的風險與取捨。'
cat report.md | ask-bridge '請摘要這份文件，列出待辦。'
ask-bridge '請摘要這份規格文件。' --file docs/spec.md -o /tmp/spec-summary.md
ask-bridge '請描述這張截圖中的 UI 問題。' --image screenshot.png
ask-bridge '請分析這份長報告。' --file report.pdf --timeout 600
ask-bridge '請根據這份 prompt 產生圖片。' -i /tmp/generated-images/
```

若同時提供 prompt argument 與 stdin，`ask-bridge` 會組合為：

```text
prompt + "\n\n" + stdin
```

## 參數速查

| 參數 | 用途 | 用法重點 |
|---|---|---|
| `[PROMPT]` | 要送給 provider 的文字 prompt | 可省略；若 stdin 有內容則使用 stdin；若兩者都有，會以兩個換行串接 |
| `-p`, `--provider <PROVIDER>` | 選擇 provider | 可用 `chatgpt`、`gemini` 或 `claude`；此為 global option，可放在子命令前後；優先權高於全域設定檔 |
| `--headless[=<HEADLESS>]` | 控制 Chrome 是否 headless | 預設 `true`；要顯示瀏覽器請用 `--headless=false`；不要寫成 `--headless false` |
| `--new` | 開啟全新 provider 對話 | 會開啟並綁定新的唯一分頁，同時保留所有既有頁籤；用於隔離上下文 |
| `--session <URL_OR_ID>` | 接續既有 provider 對話 | 可傳完整對話 URL 或對話 ID；`--session-id`、`--session-url` 為別名；不能與 `--new` 同時使用 |
| `-v`, `-V`, `--version` | 顯示版本 | `-V` 是原始碼中定義的短別名；文件與一般操作優先用 `-v` 或 `--version` |
| `--verbose` | 顯示瀏覽器自動化流程 | 用於診斷 provider UI、登入、上傳、模型切換或等待回覆問題 |
| `-o`, `--output <FILE>` | 將最終 Markdown 回覆寫入檔案 | 同時仍會在終端機輸出渲染結果；適合保留研究紀錄 |
| `-i`, `--image-output <IMAGE_PATH>` | 下載 provider 回覆中的生成圖片 | 可指定資料夾或檔案路徑；可搭配一般 prompt、`get` 或 `open <url>` |
| `--image <IMAGE_FILE>` | 附加圖片檔，可重複指定 | 支援 ChatGPT 與 Claude；搭配 Gemini 會失敗 |
| `--file <FILE>` | 附加文件檔，可重複指定 | 支援 PDF、Word、Excel、PowerPoint、純文字、Markdown、CSV、JSON、程式碼等；ChatGPT、Gemini 與 Claude 都可用 |
| `--timeout <SECONDS>` | 設定等待上限 | 必須是大於 0 的整數，預設 `300` 秒；同時套用於一般回覆與 `login` 登入偵測 |
| `--model <MODEL>` | 送出 prompt 前切換模型 | 比對不分大小寫與標點；模型名稱取決於 provider UI 與帳號權限 |
| `--reasoning <REASONING>` | 切換 provider 推理模式 | ChatGPT 支援 `auto`、`instant`、`medium`、`high`；Gemini 支援 `extended`；Claude 不支援 |
| `-h`, `--help` | 顯示 help | 可用 `ask-bridge --help` 或 `ask-bridge help <COMMAND>` |

只有 `--provider` 是 global option，可放在子命令前後。其他頂層選項搭配子命令時必須放在子命令之前，例如 `ask-bridge --timeout 600 login`、`ask-bridge --output /tmp/reply.md get <url>`；不要寫成 `ask-bridge login --timeout 600` 或 `ask-bridge get <url> --output ...`。

## Provider 選擇

預設使用 ChatGPT：

```sh
ask-bridge '請摘要下列錯誤訊息，列出可能原因與下一步檢查。'
ask-bridge --provider chatgpt '請分析這段程式碼的風險。'
ask-bridge -p chatgpt '請整理這份文件的待辦。'
```

使用 Gemini 或 Claude 時明確指定 provider：

```sh
ask-bridge --provider gemini '請比較這三個實作方向的風險與取捨。'
ask-bridge -p gemini '請摘要這份文件。' --file notes.md
ask-bridge --provider claude '請初步分析這段程式碼的風險。'
ask-bridge -p claude '請摘要這份文件。' --file notes.md
```

選擇原則：

- 未指定 `--provider` 時，先依全域設定檔選擇 provider；設定檔不存在時使用 ChatGPT。
- 使用 ChatGPT 作為未設定時的預設 provider。
- 使用 Gemini 做替代觀點、快速摘要或使用者明確要求 Gemini 時。
- 使用 Claude 做程式碼分析、長文摘要、替代觀點或使用者明確要求 Claude 時；Claude 也支援 `--image` 圖片輸入。
- 若 provider 失敗，可在不增加風險的情況下改用另一個 provider 一次。
- 不要硬編不存在的模型名稱；只有使用者指定或專案文件明確列出時才使用 `--model`。

## Prompt 組裝

讓委派 prompt 包含明確輸出契約：

```text
你是協助主要 Coding Agent 的研究助手。
目標：<要完成的分析或摘要>
背景：<必要上下文>
輸入資料：<貼上內容或說明附件>
請輸出：
1. 直接結論
2. 依據與不確定處
3. 可執行的下一步
限制：不要聲稱已修改本機檔案；不確定時請明確標示。
```

保持 prompt 聚焦。大型任務先請 provider 產生摘要或候選清單，再由本機 agent 判斷是否需要第二輪委派。

## 傳入資料

對短文字使用 argument：

```sh
ask-bridge '請用 5 點摘要這段錯誤訊息，並標示最可能的根因。'
```

對程式片段或命令輸出使用 stdin：

```sh
cargo test 2>&1 | ask-bridge '請摘要測試失敗重點，列出可能要看的檔案與函式。'
cat src/main.rs | ask-bridge '請初步檢查這段 Rust 程式碼的錯誤處理與風險。'
```

同時使用 prompt 與 stdin：

```sh
cat docs/spec.md | ask-bridge '請根據下列規格產生實作檢查清單。'
```

在非互動式 agent 環境中，若已提供 prompt argument，但 stdin 管道保持開啟且沒有送入資料，工具最多等待 `2` 秒後會只使用 prompt argument 繼續執行。若沒有 prompt argument，stdin 就是必要輸入；超過 `2` 秒仍無資料時，工具會印出等待診斷並持續等到收到資料或 EOF。

對完整文件、二進位文件或多檔案使用 `--file`：

```sh
ask-bridge '請摘要這份規格文件，列出實作需求與待釐清問題。' --file docs/spec.md
ask-bridge '請比較這兩份文件的差異。' --file old.md --file new.md
ask-bridge --provider gemini '請摘要這份 PDF。' --file report.pdf
```

對圖片使用 `--image`，目前支援 ChatGPT 與 Claude：

```sh
ask-bridge '請描述這張截圖中的 UI 問題，並列出可能的 CSS 原因。' --image screenshot.png
ask-bridge '請比較這兩張圖的差異。' --image before.png --image after.png
ask-bridge --provider claude '請描述這張截圖中的 UI 問題。' --image screenshot.png
```

同時附加圖片與文件時，使用 ChatGPT 或 Claude：

```sh
ask-bridge '請對照設計圖與規格文件，列出不一致處。' --image design.png --file spec.md
```

## 輸出與下載

將 Markdown 回覆寫入檔案：

```sh
ask-bridge '請整理這份輸入的重點與待辦。' --file notes.md --output /tmp/ask-notes.md
ask-bridge '請整理這份輸入的重點與待辦。' --file notes.md -o /tmp/ask-notes.md
```

下載 provider 回覆中的生成圖片：

```sh
ask-bridge '請產生一張產品概念圖。' --image-output /tmp/ask-images/
ask-bridge '請產生一張產品概念圖。' -i /tmp/product-concept.png
```

若可接受輸出同時包含 thread URL，也可使用 shell redirect：

```sh
ask-bridge '請整理這份輸入的重點與待辦。' --file notes.md > /tmp/ask-bridge-notes.md
```

一般提問完成後，終端機還會輸出目前 provider 對話的 thread URL。`--output` 寫入的是純 Markdown 回覆，不包含該 URL；需要後續接續或稽核對話時，另外保留終端機輸出的連結。

## 逾時控制

一般回覆與手動登入偵測預設最多等待 `300` 秒。預期長回覆時提高上限：

```sh
ask-bridge '請完整分析這份報告。' --file report.pdf --timeout 600
ask-bridge --timeout 600 login
```

`--timeout` 必須是大於 0 的整數。一般回覆逾時時，工具會停止等待並輸出警告；不要把空白或未完成的輸出當成有效回覆。登入逾時只代表仍未偵測到完成狀態，需檢查瀏覽器後再決定是否重試。

## 模型與推理模式切換

模型與推理模式是兩個獨立參數：

```sh
ask-bridge '證明這個數學問題。' --model 'GPT-5.6 Sol' --reasoning high
ask-bridge '快速翻譯這段話。' --reasoning instant
ask-bridge --provider gemini '用幾句話介紹 Rust。' --model '3.6 Flash'
ask-bridge --provider gemini '證明這個數學問題。' --model '3.1 Pro' --reasoning extended
ask-bridge --provider claude '用幾句話介紹 Rust。' --model Sonnet
```

ChatGPT 的 `--reasoning` 支援 `auto`、`instant`、`medium`、`high` 與對應中文別名；Gemini 只支援 `extended`，且不能搭配非 Pro 模型；Claude 不支援 `--reasoning`。

模型只比對 provider 選單的主標籤，忽略副標題與 badge，且不會把不存在的舊版本自動對應到其他版本。若切換失敗，應依錯誤列出的目前選項修正參數，不要猜測替代模型名稱。舊用法 `--model 高` 與 `--model 延伸思考` 暫時可用，但應改成 `--reasoning`。

## ChatGPT Agent 提及語法

使用 ChatGPT 時，prompt 可以採用 `@Agent名稱 prompt正文` 格式。符合格式時，`ask-bridge` 會先輸入 Agent mention、等待候選選單出現，再按 `Tab` 接受 UI 當下的預設選取項，最後輸入正文。此流程不會驗證候選是否與輸入的 Agent 名稱完全相符。

### 語法與限制

- **格式**：`@Agent名稱 prompt正文`
- **名稱限制**：Agent 名稱必須由 1 至 10 個非空白字元組成。
- **正文限制**：Agent 名稱後必須至少有一個空白，且去除前導空白後的正文不可為空。
- **Provider 限制**：特殊處理只適用於 ChatGPT；Gemini 與 Claude 會將相同內容視為一般文字 prompt。
- **Fallback**：格式不符合時，不會觸發 Agent mention 流程，而會按照一般 prompt 處理。

### 使用範例

```sh
ask-bridge --provider chatgpt \
  '@研究助手 請摘要這份規格並列出風險。' \
  --file docs/spec.md

ask-bridge --provider chatgpt \
  '@程式審查 請檢查這份程式碼的風險。' \
  --file src/main.rs
```

## 對話與瀏覽器控制

需要隔離上下文時使用 `--new`：

```sh
ask-bridge '請只根據本次輸入分析，不要沿用既有對話脈絡。' --new
```

需要沿用網頁端既有對話脈絡時，傳入對話 ID 或完整 URL：

```sh
ask-bridge --provider chatgpt --session-id 'conversation-uuid' '請接續先前的規劃。'
ask-bridge --session-url 'https://chatgpt.com/c/conversation-uuid' '請產出下一步計畫。'
```

完整 URL 會辨識 provider；若同時明確指定不同的 `--provider`，命令會停止。
不要使用對話標題猜測 session，也不要將 `--session` 與 `--new` 同時使用。

一般提問預設 `--headless=true`。需要觀察 Chrome 操作時使用：

```sh
ask-bridge '請回覆 ok' --headless=false
ask-bridge '請回覆 ok' --verbose --headless=false
```

關閉 ask-bridge 管理的 Chrome instance：

```sh
ask-bridge close
```

`close` 只應關閉 ask-bridge 使用的 debug profile 與 debug port instance。若 port 被非 ask-bridge Chrome 程序占用，工具應回報錯誤而不是關閉它。

## 子命令速查

公開子命令：

| 子命令 | 用途 | 範例 |
|---|---|---|
| `login` | 開啟 provider 並等待使用者手動登入 | `ask-bridge login`、`ask-bridge --provider gemini login`、`ask-bridge --provider claude login` |
| `close` | 關閉 ask-bridge 管理的 Chrome instance | `ask-bridge close` |
| `config` | 顯示或設定全域預設 provider | `ask-bridge config`、`ask-bridge config --provider claude` |
| `update` | 依作業系統執行官方安裝流程並重新安裝 | `ask-bridge update` |
| `help` | 顯示 help | `ask-bridge help`、`ask-bridge help login` |

隱藏或維護用子命令：

| 子命令 | 用途 | 範例 |
|---|---|---|
| `open [url]` | 不帶 URL 時開啟 provider；帶 URL 時開啟該對話並複製最新回覆 | `ask-bridge open`、`ask-bridge open 'https://chatgpt.com/c/...'` |
| `get [url]` | 從目前 provider 或指定 URL 取得最新回覆；目前固定使用可見瀏覽器 | `ask-bridge get`、`ask-bridge -o /tmp/reply.md get 'https://gemini.google.com/app/...'` |
| `dump` | 將目前分頁 HTML 寫到 `target/dump.html`，供除錯使用 | `ask-bridge --verbose dump` |
| `screenshot` | 將目前分頁截圖寫到 `target/screenshot.png`，供除錯使用 | `ask-bridge --headless=false screenshot` |

`open`、`get`、`dump`、`screenshot` 可能不出現在一般 `--help` 中。除錯或維護 ask-bridge 自動化流程時才使用隱藏子命令；一般委派任務優先使用 prompt、`--file`、`--image`、`--output` 與 `--image-output`。

`update` 會修改目前安裝內容並使用網路：macOS/Linux 執行 README 的官方安裝流程，Windows 則啟動更新輔助程式或回退到 PowerShell 安裝流程。不要把版本查詢誤當成更新需求；只查版本時使用 `ask-bridge -v`。

## 執行與診斷特性

- 每次 CLI 執行會重用同一個長連線 `chrome-devtools-mcp` 子程序，不會為每個瀏覽器操作重啟 MCP server。
- 專案目前固定使用 `chrome-devtools-mcp@1.7.0`，並直接透過內建的 `mcp-cli` Rust library 建立 stdio 連線；不需要另外安裝 `mcp-cli` 執行檔。
- MCP 連線建立上限為 `120` 秒，單次 MCP tool 呼叫上限為 `90` 秒。這兩個內部上限與使用者設定的 `--timeout` 不同；`--timeout` 只控制 provider 回覆與登入偵測等待時間。
- MCP 設定、日誌與 Chrome profile 分別位於 `~/.config/ask-bridge/mcp_servers.json`、`~/.config/ask-bridge/chrome-devtools-mcp.log` 與 `~/.config/ask-bridge/chrome-profile`。Chrome 使用遠端除錯 port `9223`。

## 使用回覆

將回覆視為外部建議：

- 先閱讀並萃取可驗證的部分，再套用到本機工作。
- 對程式建議，仍需讀原始碼、修改檔案並執行測試。
- 對最新資訊或官方規格，必須再用可靠來源查證。
- 對不確定或互相矛盾的結果，保留疑點，不要包裝成確定結論。

## 失敗處理

登入、CAPTCHA、Cloudflare 或 session 失效時，要求使用者完成 `ask-bridge login`，或在允許互動式瀏覽器時執行登入流程。

provider UI 變更或自動化失敗時，使用 `--verbose` 取得診斷資訊；必要時用 `--headless=false` 觀察瀏覽器狀態：

```sh
ask-bridge '請回覆 ok' --verbose
ask-bridge '請回覆 ok' --headless=false
ask-bridge --verbose dump
ask-bridge --headless=false screenshot
```

Gemini 圖片輸入不支援時，改用 ChatGPT 或 Claude，或改以文字描述圖片內容。不要把同一個失敗命令無限制重試。

模型切換失敗時，移除 `--model` 或改用 provider 預設模型，不要猜測替代模型名稱。

若看到 MCP tool 逾時、傳輸程序結束或 `MCP session was reset; re-run the command`，工具已重設該次執行的持久 MCP session。先保留原始錯誤，再安全地重跑命令一次；涉及送出 prompt 的失敗不要連續盲目重試，以免 provider 已收到前一次請求。

沒有 prompt 且沒有子命令時，`ask-bridge` 會顯示 help。若任務需要非互動輸出，優先搭配 `--output` 或 shell redirect，避免只依賴終端機渲染結果。

