Claude Code 桌面版自訂主題,先看清 mods 權限與三層版本門檻

Claude Code 桌面版 11 月 14 日開放 mods 自訂主題,官方範例 theme-examples 提供二十個動態場景與煙火彩蛋。本文對照官方文件與原始碼整理:主題是以使用者權限執行的程式且沒有沙箱、mods 支援與主題 API 是不同層的版本門檻,以及預檢與停用的退場路徑。

用 AI 摘要這篇文章:

台北時間 11 月 14 日早上 7 點 59 分,Claude 的開發者官方帳號 ClaudeDevs 發布一段示範影片:Claude Code 桌面版可以自訂主題了,換顏色、加動態背景,用現成範例或直接告訴 Claude 你想要什麼樣子都行。往前追約四個半小時,官方外掛市集的儲存庫剛收進一支名為 theme-examples 的範例外掛:二十個動態場景,從俯瞰潟湖、夜間珊瑚礁、錦鯉池到點字星空,Apache-2.0 授權,整包開源。緊接著的後續說明補上使用條件:更新到最新桌面版才能試,主題今天在桌面版本機 session 可用,雲端 session 支援即將推出。

先把判斷放在前面:這波更新值得玩,但值得看清楚再裝,因為主題在這套架構裡不是一份顏色設定檔,而是一支透過 mods 機制、以你自己帳號權限執行的程式。官方文件把話說得很直:這樣的程式可以讀寫你的檔案、啟動程序、對外連網,而且沒有沙箱。要不要把一支程式放進每天寫程式的工具裡,標準應該跟安裝任何第三方套件一樣:先看來源、看它宣告要做什麼,再決定。這篇照著 11 月 14 日為止的官方文件、原始碼與官方貼文,把權限、版本門檻與退場方式攤開來看。

換主題等於裝一支程式,官方文件明寫 mods 沒有沙箱

mods 是 Claude Code 外掛系統裡最能碰觸介面的一層,十月更新時已經把它帶進大眾視野。用官方文件的定義來說,mod 是「一支改變 Claude Code 外觀與行為的外掛」,本體是 JavaScript 或 TypeScript 寫的事件處理器:Claude Code 每次發生事件,例如工具被呼叫、prompt 送出、介面某個部分要繪製,處理器都可以觀察、改寫或整個接管。這不是全新發明,官方文件自己就說,Claude Code 的一些既有功能本來就是 mod,例如 /diff 指令的畫面、遙測紀錄,都由內建 mod 負責;這次只是把同一套機制開放給外觀客製化。

能畫的範圍比多數人想像的大:對話紀錄旁邊加一個面板、提示輸入框上方加一條資訊列、重畫工具呼叫的顯示列、改轉圈動畫的文字,官方文件的「一支 mod 能做什麼」清單全部點名。主題掛在其中的介面繪製事件上:Claude Code 每次要畫某個畫面元素,主題的程式碼有機會接手,背景流動的場景就是這樣一幀一幀畫出來的,跟換一張桌布是兩回事。

權限這部分的官方原文值得逐句看。”A mod is code that runs with your permissions. It can read and write your files, start processes, and make network requests.”(mod 是以你的權限執行的程式,它可以讀寫你的檔案、啟動程序、發出網路請求。)文件接著列舉它載入之後能做什麼:以你的身分讀寫你帳號碰得到的任何檔案、讀環境變數與設定檔裡的 API 金鑰、看到你送出的每個 prompt 與 Claude 做的每次工具呼叫、改寫 prompt 或工具呼叫、在你被詢問之前先批准工具呼叫,甚至用你方案或 API key 的額度呼叫模型。

Claude Code 官方 mods 文件的 What a mod can reach 段落,條列 mod 載入後能觸及的權限範圍Pin
官方 mods 文件的「What a mod can reach」段落:以你的身分動作、讀取密鑰、看見整個 session 都列在內(來源:code.claude.com)

兩道官方防線需要知道。第一道,內建守衛 cc-plugin-sec-default 預設會載入,使用者安裝的 mod 不能先批准被 deny 或 ask 規則擋下的工具呼叫;在 /plugin 的 Installed 分頁看得到守衛在不在。第二道,mod 不能重新樣式化權限提示,你核准權限的那個對話框騙不了人。但文件同時寫明 “Mods aren’t sandboxed.”(mods 沒有沙箱),就算開了沙箱功能,沙箱隔離的是 Claude 跑的 Bash 指令,mod 自己啟動的行程在沙箱外面跑。

官方範例給了二十個場景,外加一個煙火彩蛋

theme-examples 是 Anthropic 官方寫的入門範例,收在 claude-plugins-official 官方市集(分類 design),在 /plugin 輸入 theme-examples@claude-plugins-official 就能安裝。內容是二十個動態場景,每個場景指定給亮色或暗色視窗,其中八個兩種版本都有,搭配毛玻璃質感面板;主題可以套用在整個專案,也可以只套用在單一 session。切換靠 /custom-theme 指令家族:/custom-theme 打開選擇卡、/custom-theme 加場景名稱套用、/custom-theme off 關掉,指令尾加上 session 就只影響當前 session。

GitHub 官方儲存庫 claude-plugins-official 的 theme-examples 外掛 README 開頭,說明二十個場景與明暗視窗設計Pin
官方市集儲存庫裡的 theme-examples 說明頁:二十個場景、明暗視窗各有所屬、動畫在系統要求減少動態時停止(來源:github.com/anthropics/claude-plugins-official)

比較有記憶點的是彩蛋:/fireworks 指令會在主題上放一場煙火,而且當 Claude 的回應裡出現 merged 這個字,例如分支合併完成,煙火也會自己放一場;嫌吵的話 /fireworks auto off 可以只保留手動場。選擇卡也有預覽按鈕,二十個場景依亮色暗色視窗分組排列,套用前可以先看一眼。不想用現成場景的話還有第二條路,官方貼文的原文是 “Just tell Claude how you want it to look, or get started quickly with the theme-examples plugin.”(直接告訴 Claude 你想要的外觀,或用 theme-examples 範例外掛快速開始。)在 session 裡用口語描述要什麼樣子,Claude 會現場寫一支主題 mod,動手前先問你幾個關於檔案位置與熱重載的問題,改顏色就再說一句要改哪裡。這也是這類主題與桌面版工具生態裡多數客製化的根本差別:產物是可讀的程式碼,不是一組被封裝的設定值。

範例外掛自己交代了不做的事,程式碼也對得上

這支官方範例的 README 有一段標題就叫「它不做什麼」,把隱私邊界逐條寫出來:只看 Claude 回應裡的 merged 這一個字,其他一律不留;每個回合開始時只檢查選了哪個主題,不讀你 prompt 的文字;分辨專案時只向上檢查 .git 目錄存不存在,不開任何檔案;只讀一個環境變數,也就是桌面版給的 session 識別碼,其他環境變數不碰;不對外送出任何東西。主題選擇存在專案資料夾路徑下,最近 200 個做過選擇的 session 會被記住。

這些是作者宣稱,但這支外掛開源,宣稱可以被檢查。對著原始碼看:主要的 register.tsx 全檔一千零七十六行,找不到任何網路呼叫;prompt.submit 事件的處理只重新套用選好的主題,事件原封不動往下傳;偵測 merged 的地方掛在回應側,只對 Claude 回覆的文字做字串比對。README 的說法與程式碼行為一致。這種把「不做什麼」寫成文件段落,並且讓你可以對著原始碼驗證的自我揭露,出現在官方範例裡本身就是示範:以後寫主題 mod 的人,至少該交代到這個程度。

兩個細節可以看出這份清單寫得多龜毛。為了分辨某個 session 屬於哪個專案,外掛只向上檢查 .git 目錄在哪一層,不開檔案內容;找到或找不到,各在 Claude Code 的除錯 log 留一行紀錄,而且刻意不含路徑。session 自己的狀態,包括正在預覽哪個主題、選擇卡開到哪裡,只存在記憶體裡,session 結束就跟著消失。要挑毛病的話,這支範例的隱私邊界寫得比多數商用軟體的隱私權政策還具體。

動畫也有分寸:系統要求減少動態時,每個場景停在靜態畫面、煙火隱藏;在沒有 GPU 加速的繪製環境,場景動畫直接停住。README 的已知限制段還誠實寫著,場景圖案壓在對話文字與側欄下面的部分沒有量測過好看與否;新 session 或 /clear 之後,要送出第一個訊息主題才會出現。

能不能跑看三層版本門檻,而不是一句支援 mods

版本是這波更新最容易踩坑的地方,因為門檻有三層。第一層是 mods 機制本身:終端機要 Claude Code 2.1.287 以上,桌面版內建的 Claude Code 從 2.1.286 起支援。第二層是主題 API:官方介面文件寫明 $.theme.set 與 $.theme.clear 需要 2.1.319 以上,而舊的 $.ui.backdrop 已經在 2.1.319 移除;2.1.323 起參數又改了一次,id 換成 scene,配色參數移進 backdrop。第三層是改桌面版整體顏色的顏色 mod,要 2.1.324 以上。寫這篇的當下,Claude Code 現行版是 2.1.325。

能力版本門檻
mods 機制(終端機)Claude Code 2.1.287 以上
mods 機制(桌面版內建)2.1.286 以上
主題 API:$.theme.set 與 $.theme.clear2.1.319 以上,$.ui.backdrop 同版移除
主題 API 新參數寫法(scene)2.1.323 以上
桌面版顏色 mod2.1.324 以上

桌面版查版本的方法:在 Code tab 的本機 session 輸入 /status,Claude Code 那一列顯示的數字就是。如果查起來不到 2.1.319,背景場景大概畫不出來,而行為是 README 寫的那種溫和失敗:指令照樣有回應,套用或預覽主題時會補一句這個視窗可能還不會畫主題,選擇照樣存檔,等版本到位才生效。裝了卻沒畫面不是壞掉,先查版本。

前後差異對照著看更清楚。以前改外觀,能動的是內建 /theme 的顏色設定與終端機配色,外掛碰不到畫面;現在 mods 可以重繪 Claude Code 自己畫的介面元素,用 $.theme.set 掛上整片動態背景與配色。代價是這套介面 API 還在快速演進,2.1.319、2.1.323、2.1.324 三次改動擠在最近的版本裡,照舊文件寫的主題 mod 在新版會直接失效。有趣的是官方範例自己就在處理這件事:register.tsx 裡設定背景的同一段程式碼,會先試 2.1.323 的新寫法,失敗退回 2.1.319 的寫法,再退回更舊的 $.ui.backdrop,學到哪一條路能用就記住。要寫主題 mod 的人,這段相容手法就是官方示範的標準作業。

Claude Code 官方 mods 介面文件的 Put a backdrop behind the conversation 段落,註記 $.theme.set 需要 2.1.319 以上且舊 API 已移除Pin
官方介面文件註記:$.theme.set 與 $.theme.clear 需要 2.1.319 以上,舊的 $.ui.backdrop 已在該版移除;終端機不畫背景(來源:code.claude.com)

平台邊界也要分清楚。動態背景只在桌面版與行動 app 繪製,終端機不畫;WSL session 不載入外掛;SSH 之類的遠端 session 不與本機共享主題。官方後續說明寫明主題現在限桌面版本機 session,雲端 session 支援即將推出,沒有給日期。這也代表習慣把工作階段放到雲端的人,這波先不用動。

想試的話:更新、查版本、預檢,再決定留不留

行動照使用介面分流。以終端機為主的人這波什麼都不用做,背景場景本來就不會出現在終端機裡,mods 對你的意義還是十月更新那些功能。桌面版想試的人,順序是:把桌面版更新到最新,用 /status 確認內建 Claude Code 在 2.1.319 以上,再從 /plugin 安裝 theme-examples@claude-plugins-official;若是從 shell 端安裝,開著的 session 要跑一次 /reload-plugins 才會載入。另外,早期名為 desktop-themes 的舊副本要先停用,兩者註冊同兩個指令名,舊的主題選擇也不會帶過去。

要裝別人寫的主題,官方給了一個不執行程式的預檢工具:claude plugin validate 後面接外掛資料夾,輸出的 hooks: 與 calls: 兩行會列出它宣告要處理的事件和想用的能力,例如讀檔或連網。外掛的檔案要先取得,例如把儲存庫 clone 下來再指向那個資料夾。清單不是安全認證,實際行為仍要看原始碼與相依套件,但它讓「安裝前大概知道這支程式想做什麼」變成一分鐘內的事。裝完之後也有對帳的地方:在 /plugin 的 Installed 分頁,分頁標籤下會有一行淡字,列出這個 session 載入了哪些 mod,主題沒出現在上面就代表沒載入,可以直接排查。同樣的檢查習慣,在排程任務這類新功能上也適用:新能力帶來的新觸發點,都值得先看一眼規則。

退場分三層,範圍不同。只不要某個主題:在 /plugin 的 Installed 分頁停用它。想排查 mods 與其他自訂:用 –safe-mode 啟動一次 session,所有自訂一起停。要全面關掉已安裝的 mod:在 ~/.claude/settings.json 設 disableAllHooks 為 true,副作用是設定檔 hooks 與自訂狀態列會一起停,而 Claude Code 內建的 mod 不受這些開關影響。組織管理員另外可以用 managed settings 限制哪些 mod 能載入,這對團隊部署比較重要。

還沒說死的部分,與這篇文章的保存期限

三件事官方還沒給答案。雲端 session 的主題支援只有一句即將推出,沒有日期;桌面版能畫背景的單一最低版本號,文件只說需要「一個會畫 mod 背景的桌面版」,沒有給數字,能確認的只有主題 API 的 2.1.319 門檻;第三方主題生態才剛開始,沒有審查機制,只有 validate 與看原始碼的土法煉鋼。

這篇文章的行為描述全部來自 2026 年 11 月 14 日讀取的官方文件與 theme-examples 原始碼,沒有實際安裝,視覺效果與效能不在結論範圍。版本門檻與 API 以官方文件為準;這套介面 API 在最近的版本裡連改三次,下次 Claude Code 或桌面版更新時,這篇的版本數字就該跟著回查一次。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 2488

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...