ChatGPT Web(Developer mode + Custom MCP App)
ChatGPT Web 是 Chat On Steroids(以下簡稱 CoS)設計與測試的主要環境。CoS 在你電腦上跑本機 MCP 端點,由你選定的 tunnel 暴露給 ChatGPT,再用 Developer mode 的自訂 App 連接。效果是:ChatGPT 的對話 + 你電腦上的檔案、終端機與桌面。
前提:ChatGPT 帳號/工作區要能用 Developer mode 與自訂 MCP App;這不是所有帳號都開放,請以你帳號當下的可用性為準。
🧩 三個連接器
Core、Desktop、Plugins 是分開的 discovery 與權限邊界,各自使用獨立 token 化的本機路徑。你啟用哪個表面,就設定哪個連接器。
| 連接器 | 加入什麼 | 平台 |
|---|---|---|
| Core | 已核准的檔案、patch、終端機、產生的檔案下載、session 歷史、計畫與 worker | Windows/macOS/Linux |
| Desktop | 螢幕檢視、滑鼠、鍵盤與剪貼簿(另有 observe/computer) |
Windows/macOS;macOS 需明確啟用與系統權限 |
| Plugins | 外部 MCP 工具(Blender、Playwright、Memory 等)與自訂本機/遠端 server | 第三個端點 + 共享的 Chat On Steroids Plugins 連接器 |
一次連接器 token 不會授權另一個表面;工具也不會在 Core 與 Desktop 之間轉發或別名。
🔐 Developer mode 與自訂 App
- 在 ChatGPT 開啟 Settings → Apps → Advanced settings,啟用 Developer mode。
- 用 CoS 顯示的名稱、描述與 MCP URL 建立自訂 App;使用 OpenAI Secure MCP Tunnel 時,App 類型選 Tunnel。
- 檢視並啟用它的 actions。工具形狀改變後,既有的舊對話可能保留快取的 MCP schema——需要時重新整理/重新檢視該 App,或依工作區要求重建它,然後開新對話。
🌐 Tunnel 三選一
| 方式 | 重點 |
|---|---|
| OpenAI Secure MCP Tunnel | 在 Platform → Tunnels 建立 tunnel,並在同一工作區建立 Restricted API key,權限為 Tunnels: Read 與 Tunnels: Use。把 tunnel ID 與 key 輸入 CoS、按 Connect。發行包內含已 pin、經 checksum 驗證的 tunnel-client。 |
| Cloudflare quick tunnel | 在 CoS 連接後,把顯示的公開 URL 當成 ChatGPT 的 MCP server URL。隨機路徑是秘密,重啟就會變。 |
| 自架 HTTPS tunnel | 轉發到 CoS 顯示的 loopback URL,並保留它的秘密路徑。把產生的 URL 當密碼對待。 |
擴充套件配對不會替 tunnel 認證。tunnel 若拒絕 API key 或 tunnel ID,檢查存下來的 ID、選用的 setup profile,以及 key 是否具備該 tunnel 的 Tunnels Read + Use。
🧷 companion 擴充套件
- 在 CoS 按 Open extension folder;到
chrome://extensions開啟 Developer mode,選 Load unpacked 指向該資料夾。配對是自動的,沒有配對碼要輸入。 - 瀏覽器 bridge port 在 Settings → Browser & history → Browser bridge port 選 Auto(預設,依序試 8765–8769)或固定 8765–8769。固定選項被占用時儲存會被拒、原設定繼續運作;啟動時若被占用,App 會開著但 bridge 停止並在 Setup 顯示錯誤——不會靜默改用別的埠。
- 環境變數
CLF_BRIDGE_PORTS的有效覆寫優先於儲存選擇,此時下拉選單會停用並說明原因。 - 更新後是兩個動作:重新載入 unpacked companion,然後重新整理 ChatGPT 頁面。只做一個就會遇到版本不符或工具看起來壞掉。
🤖 模型 picker 與 reload
- 在 CoS 選專案與模型,然後寫下你的請求送出。模型與 reasoning 的選擇反映的是你登入帳號當下的可用性。
- 模型清單缺東西時,用 Reload ChatGPT models;清單跟著帳號走。
- 由
agents建立的 worker,其模型在該對話生命期內固定(包含睡醒重用);?model=slug 不被認識時會以帳號預設開啟。
🩺 快取與重新整理常見問題
- 工具缺失或過期:在 ChatGPT 重新整理對應的 CoS App。重新載入 Chrome 擴充套件是另一件獨立的事。
TOOL_DISABLED:檢查 Read-only 模式與被點名的那個本機能力。CALLER_IDENTITY_REQUIRED/WORKER_IDENTITY_LOST:這是 caller 歸屬問題,不代表命令執行被全域關閉。UNIDENTIFIED_CALLER:在已配對的瀏覽器裡使用那個對話,讓擴充套件能證明請求身分;CoS 不會從目前分頁去猜。COMPACTION_IN_PROGRESS:讓來源對話把交接做完,工作會在替換的新對話裡繼續。- ChatGPT 擋下某個工具:本機權限不能證明 ChatGPT 接受或派送了那次呼叫。去看本機工具歷史裡有沒有確切請求;沒有結果就是執行未確認,不要重放可能已執行的操作,也不要改走另一個連接器。
- 對話停不下來:Block 會撤銷該對話的本機工具;它不宣稱能取消 provider 端的生成。
- Linux 憑證儲存不可用:解鎖 GNOME Keyring 或 KWallet,然後重啟 CoS。
- Extension version mismatch:重新載入 unpacked companion,再重新整理 ChatGPT 頁面。
⚖️ 權限與責任使用
- 你選擇核准的資料夾與能力。檔案工具會強制那些根目錄;shell 指令以你的一般使用者權限執行,不受核准資料夾限制。Read-only 模式停用寫入、命令執行、桌面控制與剪貼簿寫入。
- 儲存的 API/bridge 憑證使用 Electron
safeStorage(Windows 用 DPAPI、macOS 用 Keychain、Linux 用安全桌面 secret store);Linux 的basic_text會被拒絕。 - Session 歷史保存在本機,預設開啟並保留 30 天。它很有用,但不是加密保存——任何能進你 OS 帳號的人都可能讀到。
- Provider 的使用限制與政策決定不可繞:不要用新對話、worker、Goal/Loop 或壓縮來規避 rate limit、usage cap 或帳號限制,也不要把被擋下的動作換個工具/worker/連接器重做。被限制時,停掉該工作流,走 provider 的正式流程。
✅ 連線後檢查清單
- 核准的專案資料夾正確,工具權限符合你的風險承受度
- Core App 在 ChatGPT 可見,且呼叫得出一個唯讀工具(例如
read) - 需要桌面控制時,Desktop 連接器已另建並在支援的平台啟用
- companion 擴充套件載入且自動配對
- 每次長跑前
git commit;Read-only 與寫入模式的切換有意識
延伸閱讀:什麼是 Chat On Steroids、安裝與啟動、本地編碼迴圈。