Theme / v0.9.5

CatDesk

把 ChatGPT Web 變成本地 Coding Agent

基礎觀念

v0.9.2 → v0.9.5:Handoff 改 opt-in、沙盒開關與錯誤完整回報

掌握 v0.9.2~v0.9.5 的重點變更:Library 交接改為預設關閉的 opt-in 設定、Linux 沙盒可在 TUI 開關(停用需確認)、MCP 錯誤保留輸出與 exit code、connector 失敗不再回退內建沙盒、NVM 支援與 request telemetry。

概述

CatDesk v0.9.2 至 v0.9.5(2026-09-22 至 2026-09-25,四個 patch)沒有大功能,而是一輪預設值與可觀測性的調整:Library 交接 (handoff) 從預設開啟改為 opt-in、Linux 沙盒多了 TUI 開關、MCP 錯誤開始保留完整細節、connector 失敗不再默默回退到內建沙盒,最後補上 request telemetry(遙測)與 token 動畫。

一句話總結:這段版本在回答「預設值該站在哪一邊」——會消耗外部資源(ChatGPT Library)的功能預設關閉,安全機制(沙盒)預設開啟但給你明確的關閉出口。

Library handoff 改為 opt-in(v0.9.2)

v0.7.0 推出的 create_handoff 原本預設可用;v0.9.2 起改為 opt-in(預設關閉):

  • 由持久化的 TUI 設定控制——設定一次,之後每次啟動都沿用
  • 控制的不只是 create_handoff 工具本身,還包括 ChatGPT Library 連續性指引(workspace 指示中請 ChatGPT 去 Library 搜尋前一份 handoff 的段落)
  • 開啟的實際前提是 ChatGPT Library Search 可用;若你的環境沒有這個能力,開了也沒有意義

工具數量因此改變:multi-tools 模式預設是 10 個工具(開啟 handoff 後為 11 個),read-only 模式預設 3 個(開啟後 4 個)。如果你過去依賴 create_handoff,升級後要記得到 TUI Settings 把它打開;改動 MCP 相關設定後,需要開新對話並重新整理 CatDesk 才會生效。

啟用後的 handoff 行為與 v0.7.0 相同:CatDesk 產生 catdesk_handoff_<workspace 名稱>_<short-id>.md 內容,由 ChatGPT 存進 Library,不寫入 workspace;下一個 session 以完整 workspace 身分前綴搜尋,精確比對成功才讀取,讀取成功後才刪除。不要在 handoff 裡放憑證、token 或密碼。

沙盒可在 TUI 開關(v0.9.3)

Linux 命令沙盒(bubblewrap)新增持久化 TUI 設定,可啟用或停用 run_command 與 start_command 的沙盒。兩個設計細節值得注意:

  1. 停用需要額外確認——把安全機制關掉是破壞性操作,多一步確認讓它不是順手誤按
  2. 預設仍是開啟——這不是「沙盒變成選配」,而是「沙盒有了官方出口」

什麼時候會想關?例如某些工具鏈在 bubblewrap 下行為異常、需要抓完整系統行為除錯時。但關掉等於放棄第三課談的檔案存取強制邊界,除錯完請盡快開回來;正式環境更該維持開啟,靠在 VM/容器內執行來處理相容性問題。

MCP 錯誤完整回報(v0.9.3)

v0.9.3 修了一類很惱人的問題:MCP 工具發生錯誤時,command 輸出、exit code、timeout 原因與檔案操作錯誤過去會在回傳給模型時遺失;現在這些細節會保留在 model-readable content 中。

差別很實際:以前模型只看到「失敗」,可能就開始瞎猜或重試錯誤方向;現在它看得到 exit code 是 1 還是 127、是 timeout 還是檔案不存在,能直接修正下一步。對使用者的意義是——當 agent 說「指令失敗」時,追問它錯誤輸出是什麼通常真的問得到東西了。

connector 失敗:不再默默回退(v0.9.4)

v0.9.4 更新的是 CatDesk 提供給 ChatGPT 的 workspace 指示:

  • connector 失敗時,不再回退到內建沙盒(ChatGPT 自己的沙盒),而是回報原始 connector 錯誤
  • 移除舊的 link_ connector 路徑 workaround 指示
  • 更新 Git commit 指示

先前的行為危險在於「無聲」:connector 掛掉時,ChatGPT 可能改在內建沙盒裡假裝完成了工作,你以為 CatDesk 在跑、其實沒有。現在失敗就是失敗,錯誤訊息直接攤開——這是可觀測性的勝利。

NVM 支援(v0.9.3)

以 NVM 安裝的 npm 與 npx 現在可以在 Linux 沙盒內正常運作;同時目前 Node 版本的 library tree 維持唯讀。翻譯成實務語言:沙盒內可以跑 npm install 裝依賴到你的專案,但不能改到 Node 本身的安裝目錄——延續了「可寫範圍限於 workspace 與 scratch 目錄」的原則。

telemetry 與 token 動畫(v0.9.5)

介面與可觀測性的小更新:

  • request telemetry:顯示 request 數與最後一次 tool-call 的時序,方便判斷這場對話跑了多少工具呼叫、上次呼叫離現在多久
  • token 用量動畫:token 數字變化時的視覺回饋(release note 自嘲是 “useless cool animation”)
  • MCP URL 顯露按鈕 hover 回饋:滑鼠移上去有反應,減少「按了沒反應?」的困惑
  • 版面穩定化:usage/telemetry 區塊不再因為數字變動而抖動

其中 request 數對照「50 次工具呼叫後開始卡頓」的門檻特別好用——以前只能憑感覺,現在有數字可看(見看懂 token 用量估算)。

對既有使用者的影響

  • 升級後 create_handoff 預設不會出現;需要時在 TUI Settings 開啟,並開新對話讓設定生效
  • 沙盒預設仍開啟;只有主動去 TUI 關閉(且經過確認)才會停用
  • MCP 錯誤訊息變完整,除錯流程會比以前順
  • connector 失敗時會看到原始錯誤,而不是被回退行為誤導

學習重點

  1. 預設值就是產品決策:handoff 預設關閉是為了避免對 ChatGPT Library Search 的隱性依賴;沙盒預設開啟但提供附確認的關閉出口。兩者都把「例外情況」明示化,而不是讓使用者踩到才知道。
  2. 錯誤路徑要和成功路徑一樣認真設計:保留 exit code 與 timeout 原因、connector 失敗直接回報,都是讓失敗可被診斷——對 agent 工具來說,錯誤訊息就是它繼續工作的輸入。

來源:v0.9.2~v0.9.5