dsh-skin-picker:給 DSH Web 界面換膚的插件

前言

如果你日常用 dsh web,大概遇到過這樣的情況:界面只有官方主題和明暗兩種模式,想換個觀感,沒有現成入口。DSH 的理念是「一切皆插件」,界面外觀這件事也可以交給插件來做。

下面介紹的 dsh-skin-picker 就是這樣一個插件:裝好後會在「設置 → 通用」裏多出一行「皮膚」,點色塊、輸入一句描述、或者放一張背景圖,就能改變整個頁面的配色。

這是什麼

dsh-skin-picker 是一個 DSH(DeepSeek Harness)換膚插件,歸類爲「趣味換裝」,當前版本 0.6.0,採用 MIT 許可證。代碼託管在 GitHub(倉庫所有者爲 Lzh-12),插件作者署名爲 Aaron111。

它解決的問題很具體:在不改動 DSH 本體的前提下,爲 web 界面提供換膚能力,包括預設皮膚、按描述生成配色、自定義背景圖片、界面控件聯動和跨設備同步。

核心功能

預設皮膚:內置 10 套皮膚,亮 / 暗雙色板自動跟隨當前模式。分別是:海鹽藍、櫻花粉、薄荷綠、暖陽橙、薰衣草紫、石墨灰、奶油米、極光青、莓果紅、森林綠。

自然語言換膚:輸入一段描述(比如「賽博朋克霓虹」「日式抹茶」),插件會自動生成一套配色。實現上分兩層:內置 15 組語義關鍵詞庫做匹配,匹配不上的任意文本則走確定性 HSL 調色兜底,保證任何輸入都有結果。

自定義背景圖片:上傳本地圖片或粘貼 URL,設爲頁面背景。插件會疊加一層可讀性蒙層,寫入 --dsw-alias-bg-base 的 background 棧(蒙層 + 圖片 cover)。

界面控件聯動:換膚不只改主色。輸入框、氣泡、按鈕、tab、漸變都會跟隨配色,通過派生令牌(如 --dsw-specific-*、--dsw-static-deepseek-*、--dsw-alias-button-*)加 inline !important 雙保險生效。

跨設備同步:皮膚選擇寫入 settings.yaml。host 端用 settings.register 註冊命名空間,再通過 connection RPC 通道同步,本地以 localStorage 兜底。需要說明的是,settings 網關只對白名單命名空間開放第三方讀寫,這個插件是在這個約束下工作的。

恢復默認:一鍵回到官方主題。

安裝與啓用

從 GitHub 安裝:

dsh plugin --profile web add github:Lzh-12/dsh-skin-picker

也可以從本地目錄安裝:

dsh plugin --profile web add file:./dsh-skin-picker

安裝完成後需要重啓 dsh web 並刷新頁面,才能在「設置 → 通用」看到「皮膚」這一行。

該插件聲明瞭兩個 peerDependencies:@deepseek-ai/dsh-settings ^0.1.0-rc.6 和 @deepseek-ai/schemastery ^3.18.1。

典型用法

  1. 打開 設置 → 通用 →「皮膚」
  2. 預設皮膚:點色塊立即換膚
  3. 自然語言換膚:輸入描述(如「賽博朋克霓虹」),點「生成」
  4. 背景圖片:點「選擇圖片」上傳,或粘貼 URL 後點「設爲背景」
  5. 恢復默認:一鍵回到官方主題

所有操作都在這一行設置裏完成,不需要改配置文件。

實現原理

瀏覽器端通過 theme.overrideTokens(source, tokens) 疊加一層令牌覆蓋。tokens 是「令牌名 → { light, dark } 值對」的結構,因此與 DSH 的主題系統、明暗模式天然兼容——切換明暗模式時,皮膚色板會自動跟着切換。

跨設備同步這條鏈路值得單獨看一下:host 半邊(lib/index.js)負責註冊 settings 命名空間和 config RPC 通道;瀏覽器半邊(lib/client.js)負責 UI、令牌覆寫、配色生成和同步。插件整體通過 package.json 中的 dsh.bundle / dsh.client 聲明和 cordis.patch.yml 組合補丁接入。

另外提一句版本變化:0.5.0 的「圖片取色換膚」在 0.6.0 中已被「背景圖片」取代——圖片不再用於取色,而是直接鋪成頁面背景並帶可讀性蒙層。如果你看過舊版文檔,以 0.6.0 的行爲爲準。

適用場景與注意

適合經常使用 dsh web 界面、希望調整觀感的開發者。它屬於趣味換裝類插件,不改變對話和智能體的行爲邏輯。

兩點提醒:

  1. 插件以當前 dsh 進程的權限運行,安裝任何第三方插件前,建議先檢查源碼和許可證,確認沒有越權行爲再安裝。
  2. 該插件需要 @deepseek-ai/dsh-settings 和 @deepseek-ai/schemastery 兩個 peer 依賴,版本要求見上文。

結尾

dsh-skin-picker 把「換膚」這件事完整地做成了插件:從預設色板、自然語言生成配色,到背景圖、控件聯動和 settings.yaml 跨設備同步,卸載或點「恢復默認」即可回到官方主題,對本體沒有侵入。

  • 社區目錄頁:https://www.skillhub.cn/plugins/Lzh-12/dsh-skin-picker
  • GitHub 倉庫:https://github.com/Lzh-12/dsh-skin-picker
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜