前言¶
DeepSeek 在 2026 年 8 月開源了智能體運行時 DeepSeek Harness(dsh)。官方倉庫的定位很明確:一切皆插件。模型適配、工具、會話、沙箱,連網頁界面本身,都按插件來組裝。當前仍是 developer preview,默認 Web UI 跑在 http://127.0.0.1:3080。
跑起來之後,不少人會碰到同一件事:側欄、輸入框、會話列表都能用,界面卻是固定的原生配色。想換成自己熟悉的風格,就得在社區裏找主題類擴展。本文介紹的 deepseek-harness-skin,就是其中一套換膚系統:21 套內置皮膚,外加「傳一張圖生成整套配色」的自定義通道。
需要先說明來源。插件由 HeiGeAi 維護,倉庫地址是 HeiGeAi/deepseek-harness-skin。社區目錄頁在 deepseek-harness-plugin.com,分類爲「主題與外觀」,2026-08-15 收錄。該目錄是獨立運營的社區站點,與 DeepSeek / 幻方沒有從屬或背書關係,不能當成官方應用商店。截至 2026-08-17,GitHub 倉庫星標爲 42(目錄頁當時列出 32,以倉庫頁面爲準)。
這是什麼¶
deepseek-harness-skin 是一套裝進 DeepSeek Harness 源碼樹的換膚系統,不是運行時往進程裏注入 CSS 的那種插件。倉庫 README 寫得很直接:它覆蓋 packages/client/ui-theme,再打一份 8 個文件的宿主補丁,然後重新 pnpm run build。側欄、輸入框、會話列表仍是 DSH 原生控件,功能沒有改,改的是配色、邊框風格和背景層。
代碼使用 MIT 許可證,版權聲明爲 Copyright (c) 2026 HeiGeAi (Blake Xu)。主要語言是 TypeScript。基線宿主版本是 DeepSeek Harness 0.1.0-rc.5。倉庫明確聲明:本項目與 DeepSeek 官方無隸屬關係。
它要解決的問題也很具體。DSH 原生色板有 73 級絕對色階和 89 個語義別名,如果只是把幾個 CSS 變量換掉,按鈕、邊框、禁用態的層次很容易塌。這套系統從四個色種推導完整色階,並在構建期校驗對比度,目標是換膚之後文字仍然讀得清。
核心功能¶
倉庫 README 與 CHANGELOG(v1.0.0,2026-08-14)對能力的描述一致,下面按已經覈實的內容分點說明。
21 套內置皮膚¶
設置面板裏可以直接點選。QQ 2007 和 QQ 2008·粉是純配色皮膚,不帶位圖,整套界面由四個色種在構建期推導。其餘 19 套各配一張背景圖。邊框風格分三種:flat(實色描邊)、glass(毛玻璃)、neon(發光描邊)。
| # | 皮膚 | 外觀 | 邊框 |
|---|---|---|---|
| 1 | QQ 2007 | 淺色 | flat |
| 2 | QQ 2008 · 粉 | 淺色 | glass |
| 3 | 初音未來 | 淺色 | neon |
| 4 | 原神 · 蒙德 | 淺色 | glass |
| 5 | 原神 · 璃月夜 | 深色 | neon |
| 6 | 戀與深空 · 星海 | 淺色 | glass |
| 7 | 戀與深空 · 星際 | 深色 | neon |
| 8 | 火影 · 鳴人 | 深色 | glass |
| 9 | 火影 · 佐助 | 深色 | neon |
| 10 | 鳴潮 · 黑青 | 深色 | neon |
| 11 | 鳴潮 · 深紫 | 深色 | glass |
| 12 | 龍珠 · 筋斗雲 | 淺色 | glass |
| 13 | 龍珠 · 超賽 | 淺色 | neon |
| 14 | 大佬 · 菸灰 | 深色 | glass |
| 15 | DeepSeek 娘 · 深海 | 深色 | neon |
| 16 | DeepSeek 娘 · Q 版 | 淺色 | glass |
| 17 | DeepSeek 青春版 | 淺色 | glass |
| 18 | 內測大佬 | 深色 | neon |
| 19 | 別影響 AGI | 淺色 | glass |
| 20 | 峯哥騎鯨 | 淺色 | flat |
| 21 | 梁聖 · 靜音 | 淺色 | glass |
皮膚名稱裏出現的角色、遊戲和商標歸各自權利人所有。倉庫 NOTICE.md 寫明:提及這些名稱只用於描述現有預設,不表示獲得許可。這一點在文末還會再強調一次。
一套皮膚就是一份 JSON¶
下面這段來自倉庫 README,是 QQ 2008 的完整定義:
{
"id": "qq-2008",
"name": { "zh": "QQ 2008·粉", "en": "QQ 2008 Pink" },
"order": 20,
"appearance": "light",
"chrome": "glass",
"seeds": {
"accent": "#c8447e",
"secondary": "#d98bb0",
"surface": "#f6e2ec",
"text": "#2b1020"
},
"glyph": "🐧",
"showBadge": true
}
四個色種是 accent、secondary、surface、text。構建期據此生成 CSS,運行期只切換一個 data-dsh-skin 屬性。自己加皮膚時,往 src/styles/skins/themes/ 放一份 JSON,再跑:
pnpm --filter @deepseek-ai/dsh-client-ui-theme run build:skins
保對比度推導,構建期校驗可讀性¶
推導不是簡單換色。程序會保持每一級與原生色板相同的對比度關係,計算在 OKLab 空間進行,落到 sRGB 色域外的顏色用色度二分法拉回來。所有規則掛在 body[data-dsh-skin="…"] 和 body[data-skin-chrome="<flat|glass|neon>"] 下面,不改全局 CSS 變量。切回「默認」時屬性摘掉,界面回到原生外觀。
可讀性檢查是確定性的:21 套皮膚 × 8 項對比度契約,構建期全部跑一遍,不達標直接失敗。自己改完 JSON 可以用這條命令復現:
pnpm --filter @deepseek-ai/dsh-client-ui-theme run check:skins
背景圖掛在獨立的固定層上,不跟着會話容器縮放。開會話、滾長對話、開合側欄,背景都待在原地。CHANGELOG 裏專門記過一筆:早期背景會在開啓對話時被強制放大,後來把背景層從內容容器裏挪了出來。
一張圖生成自定義皮膚¶
皮膚選擇器的第一項是「自定義(選圖)」,支持 PNG、JPG 或 WebP。倉庫描述的流程是:
- 瀏覽器本地解碼一次,按 96px 採樣取色,同時按 1920px 長邊重編碼成 WebP。
- 從圖裏提取主色、副色、底色、文字色,並判斷淺色還是深色。
- 按畫面明暗自動調蒙版濃度,保證文字可讀。
- 圖片按內容哈希存進
~/.dsh/skins/,Host 提供只讀靜態路由給前端取用。同一張圖重複選只存一份。
README 強調:原圖不出本機。上傳走的是同一臺機器上的 DSH Host。上傳路由只認 WebP 魔數,超過 4MB 的請求會被直接掐斷。卸載腳本不會刪除 ~/.dsh/skins/ 裏的自定義圖,不用可以自己刪。
版本條和檢查更新¶
設置面板底部顯示「皮膚系統 v1.0.0 · DSH 0.1.0-rc.5」,旁邊有「檢查更新」。請求由 DSH Host 側代理發往 GitHub Releases,瀏覽器不直連第三方;3 秒超時、64KB 響應上限、60 秒內緩存。網絡不通時顯示「暫時無法檢查」,按鈕保持可點。
安裝與啓用¶
社區目錄頁給出的安裝命令是:
dsh plugin add github:HeiGeAi/deepseek-harness-skin
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:HeiGeAi/deepseek-harness-skin#<commit>
這條命令是目錄頁原文,按社區目錄的慣例,會從 GitHub 解析插件並裝到當前 dsh 配置。但本倉庫 README 寫明:這套皮膚要跟着前端一起構建,從 npm 直接跑的 npx @deepseek-ai/dsh 裝不了。 實際安裝路徑是源碼級改動,需要一份 DeepSeek Harness 源碼檢出。安裝前請先讀倉庫和許可證;插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。
前置條件(來自 README):
- 一份 deepseek-ai/deepseek-harness 源碼檢出,版本
0.1.0-rc.5 - Node.js 22.19 以上
- pnpm
官方 Harness 從源碼啓動的方式是:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
皮膚包的安裝腳本會檢查目標目錄的 package.json 是否含 "@deepseek-ai/dsh-root",以及是否存在 packages/client/ui-theme。對不上會直接報錯,而不是裝出一半。
git clone https://github.com/HeiGeAi/deepseek-harness-skin.git
cd deepseek-harness-skin
bash scripts/install.sh /path/to/deepseek-harness
install.sh 會先把要覆蓋的文件整份備份到 ~/.dsh-skin-backups/<時間戳>/,再寫入皮膚包、打宿主集成補丁。然後按提示重建:
cd /path/to/deepseek-harness && pnpm install && pnpm run build && pnpm dsh web
瀏覽器打開 http://127.0.0.1:3080,左下角 設置 → 通用設置 → 皮膚,點一下就換。
想退回原樣:
bash scripts/uninstall.sh /path/to/deepseek-harness
卸載腳本從最近一次針對該目標的備份還原 ui-theme 包和補丁涉及的 8 個文件,然後再執行一次 pnpm install && pnpm run build。如果指定的備份裏已經含皮膚(例如重複安裝後備份的是「裝過之後」的狀態),腳本會拒絕還原,避免退不乾淨。
典型用法¶
裝完並重建之後,操作都在設置面板裏完成。
- 打開 Web UI:
http://127.0.0.1:3080 - 左下角進入 設置 → 通用設置 → 皮膚
- 點色卡切換內置皮膚;第一項永遠是「自定義(選圖)」
- 需要自己的配色時,選一張 PNG / JPG / WebP,其餘步驟由本地流程完成
- 切回「默認」,
data-dsh-skin屬性摘掉,界面回到原生外觀
想在 21 套之外再加一套預設,按倉庫說明放 JSON 並跑 build:skins 即可。四個色種寫清楚,appearance 填 light 或 dark,chrome 填 flat、glass 或 neon 之一。改完務必跑 check:skins,構建期對比度檢查不過是過不去的。
倉庫 README 還寫了一組安裝後的測試數字:811 個測試文件、13548 個用例通過,語句 / 分支 / 函數 / 行覆蓋率均爲 100%,並且帶逐文件閾值。這是維護者在 README 中的自述,本文沒有獨立復跑。
適用場景與注意事項¶
適合這幾類人:已經在用 DSH Web UI、願意從源碼構建、並且希望界面換成自己喜歡的配色或背景。不適合只想用 npx @deepseek-ai/dsh web 立刻換膚、又不想動源碼樹的人。社區裏還有其他主題類項目走運行時插件路線,安裝方式不同,不要和這一套混用後還指望互不影響。
使用前建議把下面幾條當成硬約束。
這是源碼級改動。 安裝腳本覆蓋 packages/client/ui-theme 並打 8 文件宿主補丁,需要重新 pnpm run build。不是運行時注入,也不劫持進程。基線是 0.1.0-rc.5。DSH 仍在 developer preview,上游改界面結構時補丁可能打不上;腳本會明確報錯,而不是裝出一半。
插件以當前 dsh 進程權限運行。 目錄頁也寫了同一句話:安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證;需要可復現安裝時,固定 commit 哈希。
MIT 只覆蓋軟件代碼。 不授權角色、商標或第三方視覺素材。逐文件來源見 ASSET_PROVENANCE.md,發佈邊界見 NOTICE.md,上游代碼許可見 THIRD_PARTY_NOTICES.md。NOTICE 寫明:免責聲明與非商業用途聲明不能替代轉載、再分發或商標使用許可;來源或授權無法覈實的素材在 provenance 表中標爲未驗證。公開打包和再分發前應自行評估權利。
自定義圖只在本機。 壓縮後的 WebP 落在 ~/.dsh/skins/,卸載不動它。
小結¶
deepseek-harness-skin 把換膚收成兩件事:21 套可點選的預設,以及一張圖推導整套配色。技術上走的是數據源驅動的色階推導和構建期對比度校驗,作用域收口在 body 屬性上,切回原生界面沒有殘留。代價也很清楚:必須對着 0.1.0-rc.5 的源碼檢出安裝並重建,不能指望 npx 一條命令完成。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/deepseek-harness-skin/
GitHub:https://github.com/HeiGeAi/deepseek-harness-skin
DeepSeek Harness 官方倉庫:https://github.com/deepseek-ai/deepseek-harness