Theme / v2.1.15

Chat On Steroids

把 ChatGPT 對話變成會寫程式、會派工的本地開發環境

基礎觀念

外掛生態、安全邊界與責任使用

Plugins 第三個 connector 的玩法(reviewed catalog、MCPB、遠端 MCP),CoS 的安全模型與已知限制(未簽章、AppImage 回退、記錄檔未加密),以及絕不能誤解的一條線:本地權限 ≠ provider 授權。

外掛生態、安全邊界與責任使用

免責聲明:本文整理自官方 v2.1.15 的 plugins.md 與 SECURITY.md。CoS 是獨立維護的 beta,與 OpenAI 無隸屬關係;安全問題請走官方 GitHub 的私有漏洞回報,不要開公開 issue。

Plugins:第三個獨立 connector

Core 與 Desktop 維持原本的 connector 與權限;Plugins 用的是第三個、獨立 token 化的端點,在 ChatGPT 裡對應一個共享的 Chat On Steroids Plugins connector。設定流程:

  1. 打開 Plugins 分頁,在連接卡片按 Set up plugins。用 OpenAI Secure Tunnels 的話:建一個獨立的 Plugins tunnel、填入 ID、Save & connect(沿用既有的 API key 與 tunnel 執行檔);Cloudflare/手動 transport 則在各自路徑發布 Plugins 端點。
  2. 在 ChatGPT 依顯示的名稱、描述與 MCP URL 建立 Chat On Steroids Plugins connector,並保持 CoS 連線。
  3. Settings → Plugins → +:選 reviewed catalog recipe 或自訂 server,照安裝指示操作、在安全欄位填入憑證。
  4. 外掛只有在連線與 discovery 都成功後才變 Ready;Blender 還需要它的 addon 回應一次唯讀場景探測。本地 Ready 不代表 ChatGPT 已註冊該 connector 或已刷新工具。
  5. 安裝完成、設定變更或工具政策變動後,ChatGPT 會顯示提醒——到 ChatGPT 重新整理 Chat On Steroids Plugins connector(或開啟 CoS 既有的自動 connector refresh)。既有對話可能留著快取的宣告;被停用的工具會立即拒絕過期呼叫。

支援的來源

  • Pinned npm/Python recipes:Blender MCP、Knowledge Memory、Playwright Browser、Web Fetch、Unity Editor。需要 Node.js/npm 或 Python/uv 的地方要自行安裝;CoS 把套件裝進每個外掛的私有目錄,不會代裝系統 runtime。Windows 會額外搜尋 %USERPROFILE%\.local\bin。
  • 可執行檔+明確參數(不做 shell 插值)。
  • 遠端 Streamable HTTP MCP URL(HTTPS 或 loopback HTTP);憑證用加密儲存,不要塞進 URL 或參數。HeyGen 與 Recraft 走瀏覽器 OAuth,服務本身有各自條款。
  • 本地 MCPB bundle:用上游 manifest parser 與設定展開;不支援的 runtime/manifest 會回報錯誤,而不是硬編一條啟動指令。
  • 符合 reviewed recipe 的 GitHub URL;其他 repo 需要 MCPB release 或明確的套件/執行檔設定——單給 repo URL 不算可執行的 MCP 設定。

Blender 需要先在 Blender 裡安裝並啟用社群 addon,再從 viewport sidebar 啟動它的 MCP server;catalog 附了上游安裝步驟。它是第三方整合,不是 CoS 提供的官方功能。

生命週期與治理

  • 權責:manager.ts 管安裝記錄、啟用政策、連線、憑證參照與工具路由;installer.ts 管隔離安裝與有界解壓。metadata 走 durable 儲存、憑證走 secrets、上游授權檔保留在安裝目錄。
  • 外部程序以你的 OS 權限執行,不繼承 CoS 的核准資料夾沙盒;Read-only 模式會拒絕外掛呼叫(上游標註無法證明外部程序不會造成變更)。工具標註原樣轉發、不會被放寬。
  • Discovery 有界:最多 64 個工具/250 KB schema;清單會區分「已啟用」與「實際發布」;失敗的工具呼叫永不自動重試——一個失敗的變更可能已經生效,重試前先檢查狀態。
  • 全新安裝沒有任何外掛;已安裝且啟用的外掛在 app 生命期內保持連線,啟動時在背景還原。重新啟動會重新連線/discovery。Update 先 staged、連線成功才 commit(失敗還原原版);版本 pin 在 reviewed recipes;Uninstall 停止程序並移除安裝資料與憑證;Knowledge Memory 的資料會在更新間保留。

安全模型:五個你該記住的性質

CoS 把自己定位成「ChatGPT 與登入你的 OS 使用者之間的權限邊界」:

  1. 檔案工具有界限:路徑一律對照你明確核准的資料夾。
  2. exec_command 故意不設限:它從核准的工作目錄起步,然後用你帳號的正常權限執行——核准資料夾管不到它。
  3. MCP 只綁 loopback+secret token 路徑:對外可達性完全來自你自己設的 tunnel。companion-extension bridge 是另一條獨立 loopback 服務,不暴露檔案、指令或設定變更路由。
  4. 憑證進 OS 安全儲存:Windows DPAPI、macOS Keychain、Linux 桌面 secret store;Linux 的 basic_text 會被拒絕。一般活動日誌會去識別、限量、只留記憶體。
  5. session 記錄是另一本帳:它是刻意的 durable 本地歷史,預設開啟、可停用——與安全儲存無關。

另外:螢幕/控制權限在 Chromium 主機上也會一併開啟 companion 的背景瀏覽器工具(Chrome 授予 debugger/tabs 與 HTTP(S) host 權限,沒有逐分頁的同意對話框);read-only 會停用瀏覽器輸入、導航、開關分頁與頁面 JavaScript。

已知限制:這些是設計屬性,不是漏洞

  • Release 二進位沒有 publisher 簽章,macOS 也未公證。Apple Silicon 的 Mach-O 可能有 ad-hoc 簽章,但那不建立信任。SmartScreen/Gatekeeper 會警告——執行前驗證 SHA-256 checksums。
  • Linux AppImage 可能以 --no-sandbox 回退:當主機停用 unprivileged user namespaces 時,electron-builder 的靜態 launcher 會加上該參數。Debian/Ubuntu 上若不想接受這個回退,優先選 DEB。
  • 全新安裝從比較寬的預設起步:Core 權限開、read-only 關;Windows 額外開 Desktop;Linux 開 extension 的瀏覽器螢幕/控制;macOS 的 Desktop 維持關閉。
  • 路徑檢查不是 kernel/VM 沙盒:它大幅約束檔案工具箱,但同使用者的檔案競爭仍可能存在。
  • 指令與 Windows 桌面能力「威力即設計」:開啟後,它們能在你登入的使用者可及的範圍內行動。
  • session 記錄刻意詳細,且不受 safeStorage 加密:內容留在本機,但任何能存取你 OS 帳號的人可能讀得到。

責任使用與 provider 規則

  • 本地權限只管「你的機器」;不構成繞過 provider 安全決策、用量限制或帳號處置的授權。不要把被封鎖的動作繞道其他工具、worker、connector 或帳號。
  • CoS 的瀏覽器自動化與本地記錄不是 OpenAI 的批准,也不保證合規或帳號存續;使用風險自負。
  • 監督工具使用;收到限制或政策警告時停止該工作流。帳號處置問題屬於 provider 的支援/申訴流程,公開報告請勿包含私人通知與帳號識別資訊。

常見症狀速查

症狀/錯誤碼 先檢查什麼
TOOL_DISABLED Read-only 模式與被點名的能力開關
CALLER_IDENTITY_REQUIRED/WORKER_IDENTITY_LOST 呼叫者歸屬證明;在已配對的瀏覽器中使用該對話
UNIDENTIFIED_CALLER 在配對瀏覽器中用「該對話」發起;CoS 不會從當前分頁瞎猜
COMPACTION_IN_PROGRESS 讓來源聊天完成 handoff,工作會在替換對話繼續
Linux 憑證儲存不可用 解鎖 GNOME Keyring/KWallet 後重啟 CoS
某個對話停不下來 Block 撤銷該對話的本地工具;它不宣稱能取消 provider 的生成
工具不見或過期 refresh ChatGPT 中的 CoS app;reload extension 是另一個獨立步驟

下一步