Theme / v2.1.15

Chat On Steroids

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

指令詳解

工具速查

Core 8 個工具與 Desktop 2 個工具的行為、限制與常見錯誤碼,含外掛轉發要點與 schema 快取注意事項。

工具速查

CoS 透過兩個 connector 把工具暴露給 ChatGPT,兩者有不同的探索與權限邊界、各自獨立的 secret tokenized 本機路徑:

Connector 可用的工具
Chat On Steroids Core read、view_image、find、apply_patch、exec_command、write_stdin、update_plan、agents
Chat On Steroids Desktop(僅 Windows/macOS) observe、computer

全新設定下,Core 權限開啟、read-only 關閉,會廣告前七個 Core 工具加上 agents;find 只在「search 已啟用、但建立 surface 快照時指令執行不可用」的情境作為搜尋後備出現。Linux 不廣告也不執行 Desktop 的 schema。


Core 工具

工具 行為與限制
read 讀取已核准路徑。可一次接收多個路徑、將目錄列出一層、展開有界的 glob、支援行號範圍,並可回傳支援的圖片內容。單檔預設 payload 上限 256 KB、單次呼叫總量上限 512 KB——批次讀檔與整檔讀取是官方設計的便宜路徑,因為來回一輪的成本遠高於位元組本身
view_image 專用的 Codex 相容圖片工具,是與 read 分開的真實 Core 工具,受 read 能力管制;圖片傳輸與解碼檢查都有上限
find 搜尋後備。當 search 已啟用、但建立 surface 快照時指令執行不可用,改由它提供檔名/glob 與文字搜尋,不需要開放 shell
apply_patch 文字變更的基本原語。使用 V4A patch 信封,多檔 patch 會先預檢 (preflight) 再寫入;create/edit/move/delete-file 權限各自獨立檢查。目錄刪除與任意二進位寫入刻意不作為 patch 的隱藏操作
exec_command 在宿主真正的 shell 執行:Windows 用 PowerShell/cmd,macOS/Linux 用使用者平常的 POSIX shell。此權限不受核准資料夾限制——它從核准的工作目錄起始,之後以你帳號的一般權限執行。長時指令會回傳不透明的 session_id 交給 write_stdin 續接
write_stdin 以 session_id 對執行中的指令 session 寫入或輪詢,可帶選用的 yield 時間與輸出預算。空字串 chars 代表輪詢,不是另一個 process-status 工具;空輪詢會在程序產出輸出時立刻返回,之後才到的內容留在緩衝區等下一次輪詢。非空的寫入維持 Codex 的 collection-window 行為,讓一次互動回應被完整收集
update_plan recording 開啟時可用,替換「同一呼叫者」顯示的進度計畫;它不會執行排隊的工作。本機歷史持續記錄訊息與真實工具結果,供 app 逐字稿與續接使用——沒有 model-facing 的 recording 搜尋/讀取工具
agents multi-agent mode 開啟時可用,恰好四個動作(見下節)

exec_command 的單一指令與批次

參數恰好是 cmd(單一指令)或 cmds(最多 20 條,在同一個 shell session 中依序執行)其中之一:

  • 批次共用一個行程,因此變數、環境變更與工作目錄會沿用到後續項目。
  • 每個項目有標示的輸出區段與自己的 exit code;一般的非零結果不會中斷其餘項目。
  • 整次呼叫的 exit code 是第一個非零的那個。
  • 批次是為了把「相關檢查」花在一次 connector 來回,而不是多次。
  • apply_patch 的攔截與「良性非零離開碼」分類只適用單一指令呼叫。

agents 的四個動作

動作 說明
spawn 從一份共享脈絡加上每個 worker 的任務建立 worker 對話;每次 run 只用一次,需要再用時重用既有 worker。可帶選用 model slug(worker 的對話以 ?model=<slug> 開啟,讓高階模型上的 prime 能派工給較便宜的模型;未指定則用帳號預設)與選用 reasoning_effort(pro/none/minimal/low/medium/high/xhigh/max/ultra);兩者互相獨立,層級不會選擇或改變模型
message 送出一則訊息或全有或全無 (all-or-nothing) 的批次。對沉睡中的 worker 發訊息就是喚醒它,並在它原有的對話中進行
status 回報這次 run 與 workers 的狀態,包括誰在睡、還有多少 worker 槽可用
finish worker 交棒給 prime:回報結果並讓該 worker 進入沉睡

Workers 是沉睡而非結束:回報過的 worker 保留它的 ChatGPT 對話、可重複使用,且沉睡時不占 worker 槽。喚醒需要空閒槽,會重新開啟/聚焦該 worker 自己的對話,並把 prime 的訊息當成一般使用者訊息輸入。worker 只有在對話觸及脈絡上限(app 自身計算為 400,000 tokens)時才會永久結束;跨越上限不會中斷進行中的工作,只會讓下一次停止成為最後一次。Workers 永不執行 Compact & Resume,它們的對話就是耐用的代理身分。沒有模型提供的 agent 憑證或 agent_key;worker/prime 身分靠 extension 證據綁定到 ChatGPT 對話,無法證明時控制呼叫會 fail closed。完整運作方式見Workers、Goal 迴圈與續接。


Desktop 工具(Windows/macOS)

工具 行為與限制
observe 讀取桌面狀態而不移動焦點:螢幕截圖、視窗,以及快照範圍內的 UI 控制項資訊。視窗擷取先嘗試直接背景路徑,像素可能被遮擋時會標示為可見螢幕後備。螢幕存取與滑鼠/鍵盤控制互相獨立
computer 執行有界的桌面動作批次。目前動作集:click_ref、set_value、click、double_click、move、drag、scroll、type、keypress、focus、wait、read_clipboard、write_clipboard

computer 的補充細節:

  • 最近的截圖框會獨立保留;座標類動作物件會指名其框,helper 在實際輸入前立刻重新驗證目標視窗幾何。
  • 語意 ref 指向某個有界快照中的 UI Automation/AXUIElement 物件,過期就以 stale 失敗,不會用可重用的原生身分重新掃描。
  • 批次會回報已完成步驟與路徑證據,部分失敗時包含確切的失敗索引。
  • 可帶選用的精簡 verify 後置條件:等待前景視窗、視窗開啟/關閉,或 UI 控制項出現/消失,並在同一次呼叫中擷取結果狀態。
  • 每一步都會對照當下的螢幕/控制項/剪貼簿權限檢查;Read-only 可保留觀察、停用會改變狀態的桌面動作。

常見錯誤碼速查

錯誤碼 意義與處理
TOOL_DISABLED 檢查 Read-only 與被點名的本機能力(不一定是全域停用)
CALLER_IDENTITY_REQUIRED 涉及確切的呼叫者歸屬;不等於指令執行被全域停用
WORKER_IDENTITY_LOST 同上,確切的呼叫者歸屬問題
UNIDENTIFIED_CALLER 在已配對的瀏覽器中使用該對話,讓 extension 能證明請求身分;CoS 不會從作用中的分頁猜測
COMPACTION_IN_PROGRESS 讓來源對話完成 handoff;工作會在替換後的對話中繼續

其他症狀:工具缺少或過期 → refresh ChatGPT 裡對應的 CoS app(reload 擴充是另一個獨立動作);模型清單缺少 → 用 Reload ChatGPT models。


外掛轉發要點

外掛工具經 Plugins connector 轉發,走第三個、獨立 tokenized 的端點:

  • 上游工具名稱原樣保留;宣告衝突時排除而非改名。
  • 探索有上限:最多 64 個工具與 250 KB schema;已安裝清單會區分「啟用」與「實際在限制內發布」。
  • 外部程序不繼承核准資料夾沙箱;工具註解只是轉發,不會變得更寬鬆。
  • Read-only mode 拒絕外部外掛呼叫,因為上游註解無法證明外部程序不會造成變更。
  • 傳輸失敗不會自動重試工具呼叫;失敗的變更可能已經生效,重試前先檢查狀態。

Schema 快取注意

舊對話在升級後可能保留快取的 MCP schema。當 connector 曝露的工具形狀改變時:

  1. 在 ChatGPT 中 refresh/review 對應的 app(你的 workspace 若要求,就重建它)。
  2. 開新對話,讓新的工具清單生效。

目前的 extension 會自動與本機 bridge 配對,沒有配對碼要輸入。


延伸閱讀