前言¶
DeepSeek Harness(DSH)的 Web 客戶端開箱可用,但外觀、快捷鍵和輔助面板往往要改 shell 或自己 fork 前端才能調整。改 shell 意味着每次上游更新都要重新合併,維護成本高。
dsh-client-ui-custom 走另一條路:作爲純前端插件注入 Web surface,在設置裏增改頁面,不動 shell 源碼。下面介紹它做什麼、怎麼裝、怎麼按需啓用各功能模塊。
這是什麼¶
dsh-client-ui-custom 由 yoli-mi 維護,npm 包名爲 @ha-na-bi/dsh-client-ui-custom(當前版本 0.1.0-rc.6,MIT 許可證)。SkillHub 分類爲「趣味換裝」,GitHub 倉庫 yoli-mi/dsh-client-ui-custom 約有 11 stars。
插件定位是 Configurable DSH web-surface plugin:壁紙與毛玻璃主題、強調色、自定義快捷鍵、應用用量面板、浮動歷史條、用戶消息 Markdown 渲染、插件市場、入場動效——全部通過配置和設置頁完成,零 shell 改動。README 寫明:不配置時保持與原生界面一致。
核心功能¶
插件由七個相互獨立的模塊組成,可在 roster 配置裏用 features 白名單按需啓用:
| 模塊 id | 設置入口 | 作用 |
|---|---|---|
appearance |
設置 → 外觀 | 壁紙、玻璃檔位、強調色、表面不透明度、字體、預設主題等 |
shortcuts |
設置 → 快捷鍵 | 新建對話、切換模型、思考強度、發送/換行手勢、用量面板等 |
usage |
設置 → 應用用量 | Token 與時長統計、趨勢圖、會話排行 |
history |
設置 → 通用 | 浮動歷史條(位置、數量、懸掛) |
markdown |
設置 → 通用 | 用戶消息 Markdown 渲染開關 |
marketplace |
設置 → 插件 | 第三方插件市場(GitHub API + dsh-plugin topic) |
motion |
設置 → 動效 | 對話/側欄/新建對話/設置面板的入場動效 |
features 缺省或爲空時,七個功能全部啓用;顯式列出則只加載對應模塊。
外觀¶
「設置 → 外觀」提供主題定製,改動寫入 ui-custom settings 命名空間並即時生效(即時重渲染,無需重啓)。支持小窗預覽與全屏預覽(全屏按 F2 退出)。
內置六種預設(ink-teal、ink-blue、dusty-rose、apricot-gold、mist-gray、ink-violet),可疊加自定義 wallpaper。玻璃檔位有 off / light / frosted(默認)/ mica 四檔;顯式設置 wallpaperBlur 時優先於檔位默認半徑。
常用配置項包括 preset、wallpaper、glass、accent、autoAccent(從壁紙取色)、各表面 *Opacity、gradient、darkScrim、fontFamily、customCss、customVars 等。顯式配置永遠優先於預設。
快捷鍵¶
「設置 → 快捷鍵」綁定存於 ui-custom 命名空間,運行時修改無需重啓。支持的動作包括 newConversation、switchModel、cycleThinking、sendMessage、newline、usagePanel,以及 modelShortcuts(組合鍵直達指定模型)。不帶 Mod 的組合鍵在輸入框聚焦時不觸發,避免劫持打字。
用量統計¶
「設置 → 應用用量」聚合 token-meter 與 session-stats,展示總/輸入/輸出 Token、緩存命中、時長、會話數與步數,帶趨勢圖和會話排行;時間跨度可選當前年內到最近三天。可通過快捷鍵在任何界面呼出面板。
動效¶
「設置 → 動效」爲對話、側欄、新建對話、設置界面分別提供獨立開關與樣式,另有三套一鍵預設(流暢 / 優雅 / 極簡)。開啓系統「減弱動態效果」(prefers-reduced-motion)時自動降級爲短暫淡入。
通用設置與插件頁改動¶
「設置 → 通用」新增浮動歷史條(left / right / off,默認 off)和用戶消息 Markdown 渲染(默認關閉)。歷史條支持點擊跳轉、懸掛置頂回合。
「設置 → 插件」新增第三個 tab「插件市場」,通過 GitHub API 發現帶 dsh-plugin topic 的項目。
安裝與啓用¶
官方 README 給出的步驟如下。SkillHub 目錄頁 yoli-mi/dsh-client-ui-custom 爲社區索引,安裝細節以 GitHub 爲準。
- 確保客戶端構建會包含該包:
pnpm run build:lib:client
- 在 Web profile 的補丁層加入瀏覽器 roster 行,路徑通常爲
~/.dsh/profiles/web/cordis.patch.yml(或你 profile 中對應的dsh.clientroster):
- id: ui-custom
name: '@ha-na-bi/dsh-client-ui-custom'
config:
preset: 'ink-teal'
wallpaper: '/my-wall.jpg'
wallpaperBlur: 14
- 重啓 Web 客戶端:
dsh web
自行構建時,設置頁要能加載,ui-custom 命名空間須在 Web 客戶端設置暴露白名單(packages/host/apiproxy/src/api-proxy.ts 的 WEB_SETTINGS_NAMESPACES)中;上游 README 註明本檢出已加入。
典型用法¶
按需只啓用部分模塊¶
只裝「快捷鍵」和「用量統計」:
- id: ui-custom
name: '@ha-na-bi/dsh-client-ui-custom'
config:
features: [shortcuts, usage]
外觀完整示例¶
config:
preset: 'ink-teal'
wallpaper: 'https://example.com/wall.jpg'
glass: 'mica'
autoAccent: true
chatSurfaceOpacity: 70
customCss: |
.some-hashed-class { border-radius: 16px; }
customVars:
'--my-accent-soft': 'rgb(255 127 178 / 0.3)'
快捷鍵¶
config:
shortcuts:
newConversation: 'Mod+Alt+N'
switchModel: 'Mod+Alt+M'
cycleThinking: 'Mod+Alt+T'
習慣 Enter 換行、Mod+Enter 發送時:
config:
shortcuts:
sendMessage: 'Mod+Enter'
newline: 'Enter'
浮動歷史條¶
在「設置 → 通用」將位置設爲 left 或 right,數量默認 10(0 表示全部)。可在消息操作行將某段會話「懸掛」到歷史條,置頂回合始終顯示。
適用場景與注意¶
適合誰
- 希望定製 DSH Web 界面(壁紙、毛玻璃、強調色)但不想改 shell 的開發者;
- 需要自定義快捷鍵、查看會話用量、或在界面內瀏覽第三方插件目錄的用戶;
- 想要浮動歷史條、用戶消息 Markdown 渲染或入場動效,且接受在設置裏逐項開關的人。
注意事項
- 插件以當前
dsh進程的權限運行;安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。 - 「插件市場」通過 GitHub API 拉取帶
dsh-plugintopic 的項目,屬於社區目錄索引,與 DeepSeek / 幻方無官方從屬關係。 - 包依賴
@deepseek-ai/cordis、dsh-client-*等 peer 依賴,版本需與當前 DSH 發行版匹配;README 標註爲0.1.0-rc.6預發佈階段,升級前留意 changelog。 - 所有動效尊重
prefers-reduced-motion;未配置壁紙等外觀項時,界面行爲與原生一致。
結尾¶
dsh-client-ui-custom 把壁紙主題、快捷鍵、用量面板、歷史條、Markdown 渲染、插件市場和動效收進一個可拆分的 Web 前端插件,配置即生效,無需動 shell。按需用 features 白名單裁剪模塊,可以只拿快捷鍵或只換膚。
- 社區目錄:SkillHub — yoli-mi/dsh-client-ui-custom
- 源碼與完整配置說明:GitHub — yoli-mi/dsh-client-ui-custom
- 宣傳視頻(B 站):BV1fwbX6XEp7