外掛生態、安全邊界與責任使用
免責聲明:本文整理自官方 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。設定流程:
- 打開 Plugins 分頁,在連接卡片按 Set up plugins。用 OpenAI Secure Tunnels 的話:建一個獨立的 Plugins tunnel、填入 ID、Save & connect(沿用既有的 API key 與 tunnel 執行檔);Cloudflare/手動 transport 則在各自路徑發布 Plugins 端點。
- 在 ChatGPT 依顯示的名稱、描述與 MCP URL 建立 Chat On Steroids Plugins connector,並保持 CoS 連線。
- Settings → Plugins → +:選 reviewed catalog recipe 或自訂 server,照安裝指示操作、在安全欄位填入憑證。
- 外掛只有在連線與 discovery 都成功後才變 Ready;Blender 還需要它的 addon 回應一次唯讀場景探測。本地 Ready 不代表 ChatGPT 已註冊該 connector 或已刷新工具。
- 安裝完成、設定變更或工具政策變動後,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 使用者之間的權限邊界」:
- 檔案工具有界限:路徑一律對照你明確核准的資料夾。
exec_command故意不設限:它從核准的工作目錄起步,然後用你帳號的正常權限執行——核准資料夾管不到它。- MCP 只綁 loopback+secret token 路徑:對外可達性完全來自你自己設的 tunnel。companion-extension bridge 是另一條獨立 loopback 服務,不暴露檔案、指令或設定變更路由。
- 憑證進 OS 安全儲存:Windows DPAPI、macOS Keychain、Linux 桌面 secret store;Linux 的
basic_text會被拒絕。一般活動日誌會去識別、限量、只留記憶體。 - 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 是另一個獨立步驟 |
下一步
- 權限與 bridge 設定:工作區、權限與瀏覽器橋接
- 完整工具與錯誤碼:工具速查
- 實戰:自製 MCPB 外掛