前言¶
在 DeepSeek Harness(DSH)里長時間對話或寫代碼時,界面往往是靜態的淺色或深色主題。若你希望在不改動 DSH 業務邏輯的前提下,給 Web GUI 增加一點「坐在檐下聽雨、看雪或烤火」的氛圍,社區裏有一款歸類爲「趣味換裝」的插件可以做這件事。下面介紹 Shelter(npm 包名 dsh-theme-shelter,倉庫 ifer47/dsh-theme-shelter),維護者爲 ifer47,許可證 MIT,當前 package.json 版本爲 0.3.1。
這是什麼¶
Shelter 是在 DSH Web GUI 上疊的一層天氣視覺效果:雨會在「玻璃」上留下水痕與濺水,雪在窗外緩慢飄落並堆積,爐火在輸入區下方脈動。它不改變 DSH 的工作方式,只改變你工作時所處的視覺與聽覺環境。入口是右下角 28 px 的小按鈕;其餘時間動畫在後臺安靜運行。
插件通過 Cordis patch 注入客戶端,依賴 @deepseek-ai/dsh-client-ui-theme,面向 Web 平臺(README 標明支持 Web + Desktop)。
三種場景與界面配色¶
README 用表格歸納了三種場景,語義色(錯誤紅、成功綠、警告琥珀)在各場景中均不改動:
| 場景 | 視覺效果 | 配色傾向 |
|---|---|---|
| Rain(雨) | 每條雨滴獨立速度、隨風傾斜、落地濺水 | 冷藍灰、深藍陰影 |
| Snow(雪) | 兩種晶型在同一風場中飄落,雪岸隨降雪變厚 | 更冷更白、冰藍點綴 |
| Fire(爐火) | 自下方暖色脈動、餘燼、火星、慢煙 | 暖中性色、琥珀點綴 |
還可開啓 Night(夜間):深色配色加月光洗照。
安裝與啓用¶
前置條件:已安裝 DeepSeek Harness(桌面版或 Web 版)。
本地路徑安裝(README 示例)¶
在 Windows PowerShell 中進入桌面 profile 目錄,用本地路徑添加包(將路徑換成你本機解壓或拷貝後的目錄):
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add "C:\path\to\dsh-theme-shelter"
隨後在對應 profile 的 package.json 裏,把 dsh-theme-shelter 追加到 dsh.profile.bundles,再 重載窗口(Ctrl+R) 或重啓 DSH。
npm 與市場¶
同一包發佈在 npm:dsh-theme-shelter,執行 npm i dsh-theme-shelter 可安裝相同 bundle;插件市場也會從 npm 拉取。
README 說明:在 npm 12+ 上,默認可能拒絕遠程 tarball 或 git URL 依賴;若需遠程 tarball 可加 --allow-remote,git 依賴加 --allow-git。本包無 install scripts。
手動 patch(替代方式)¶
可向 ~/.dsh/profiles/desktop/cordis.patch.yml 追加:
- insert:
- id: theme-shelter
name: dsh-theme-shelter
完成任一方式後,同樣需要按 DSH 慣例重載或重啓使 bundle 生效。
典型用法¶
右下角控制面板¶
點擊右下角小按鈕可切換:
| 控制項 | 作用 |
|---|---|
| Scene | rain / snow / fire / off |
| Intensity | light / medium / heavy |
| Palette | 是否套用主題色(動畫開不開都可) |
| Lightning | 僅雨:閃電、閃光、雷聲的間隔與遠近感 |
| Sound | 雨、火爲錄音;雪爲程序生成的風噪 |
| Night | 深色配色 + 月光 |
音效: 瀏覽器要求頁面在用戶點擊或按鍵後才允許播放音頻,因此第一次有聲需在交互之後。
首次安裝: 按鈕上方會出現氣泡提示「點這裏切換天氣」;任意點擊或按鍵、或 12 秒 後會消失。按鈕圖標隨場景顯示雲、傘、雪花或火焰。
設置持久化¶
選項保存在瀏覽器 localStorage["dsh-theme-shelter/v2"],刷新後保留。
控制台 API¶
在開發者工具中可調用:
__dshWeather.setScene("fire") // rain · snow · fire · none
__dshWeather.setIntensity(2) // 1 light / 2 medium / 3 heavy
__dshWeather.setPalette(false) // 僅動畫,默認界面色
__dshWeather.setSound(true)
__dshWeather.setNight(false)
__dshWeather.reset()
音頻與實現要點(摘要)¶
- 雨、火: 約 6.7 MB 實錄;宿主只讀提供
/dsh-theme-shelter/audio/*,支持 Range、HEAD 等;跨域Origin返回 403。 - 雪: 無錄音,用 Web Audio 棕噪低通循環模擬風聲,可在資源加載前啓動。
- 性能: 粒子數隨視口面積縮放並有上限(雨 520、雪 340、火 64);DPR 上限 2;窗口隱藏時暫停繪製;
prefers-reduced-motion時只畫一幀靜態圖。
配色通過 ctx.theme.overrideTokens() 覆蓋 47 個 --dsw-alias-* token,按鈕填充、品牌色、鏈接與焦點環有意保留原樣。
適用場景與注意¶
適合誰: 在 DSH 裏希望長時間使用時增加氛圍、又不需要改工作流的開發者;歸類上屬於社區目錄中的「趣味換裝」類插件,與 DeepSeek / 幻方無官方從屬關係,SkillHub 等目錄爲獨立社區站點。
安全與權限: 插件隨當前 DSH 進程與 profile 加載,具備與宿主相同的訪問邊界。安裝前應閱讀倉庫源碼與 MIT 許可證,確認 bundle 與 cordis.patch.yml 符合你的環境策略。README 禁止 將本文中的本地路徑示例當作唯一方式時,勿憑包名自行拼接未在文檔出現的 dsh plugin add 命令。
開發預覽: 倉庫內 preview/preview.html 可單獨打開預覽三場景、夜間模式與面板;profile 用 link: 鏈到本包時,改 client/client.js 後重啓 DSH 即可。
結尾¶
Shelter 把雨、雪、爐火和可選錄音疊在 DSH Web GUI 上,用右下角按鈕或 __dshWeather 即可切換,不改變對話與工具鏈本身。更多信息見社區目錄頁 ifer47/dsh-theme-shelter 與 GitHub github.com/ifer47/dsh-theme-shelter。