dsh-client-ui-custom:零 shell 改動的 DSH Web 界面定製

前言

DeepSeek Harness(DSH)的 Web 客戶端開箱可用,但外觀、快捷鍵和輔助面板往往要改 shell 或自己 fork 前端才能調整。改 shell 意味着每次上游更新都要重新合併,維護成本高。

dsh-client-ui-custom 走另一條路:作爲純前端插件注入 Web surface,在設置裏增改頁面,不動 shell 源碼。下面介紹它做什麼、怎麼裝、怎麼按需啓用各功能模塊。

這是什麼

dsh-client-ui-customyoli-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-tealink-bluedusty-roseapricot-goldmist-grayink-violet),可疊加自定義 wallpaper。玻璃檔位有 off / light / frosted(默認)/ mica 四檔;顯式設置 wallpaperBlur 時優先於檔位默認半徑。

常用配置項包括 presetwallpaperglassaccentautoAccent(從壁紙取色)、各表面 *OpacitygradientdarkScrimfontFamilycustomCsscustomVars 等。顯式配置永遠優先於預設。

快捷鍵

「設置 → 快捷鍵」綁定存於 ui-custom 命名空間,運行時修改無需重啓。支持的動作包括 newConversationswitchModelcycleThinkingsendMessagenewlineusagePanel,以及 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 爲準。

  1. 確保客戶端構建會包含該包:
pnpm run build:lib:client
  1. 在 Web profile 的補丁層加入瀏覽器 roster 行,路徑通常爲 ~/.dsh/profiles/web/cordis.patch.yml(或你 profile 中對應的 dsh.client roster):
- id: ui-custom
  name: '@ha-na-bi/dsh-client-ui-custom'
  config:
    preset: 'ink-teal'
    wallpaper: '/my-wall.jpg'
    wallpaperBlur: 14
  1. 重啓 Web 客戶端:
dsh web

自行構建時,設置頁要能加載,ui-custom 命名空間須在 Web 客戶端設置暴露白名單(packages/host/apiproxy/src/api-proxy.tsWEB_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'

浮動歷史條

在「設置 → 通用」將位置設爲 leftright,數量默認 10(0 表示全部)。可在消息操作行將某段會話「懸掛」到歷史條,置頂回合始終顯示。

適用場景與注意

適合誰

  • 希望定製 DSH Web 界面(壁紙、毛玻璃、強調色)但不想改 shell 的開發者;
  • 需要自定義快捷鍵、查看會話用量、或在界面內瀏覽第三方插件目錄的用戶;
  • 想要浮動歷史條、用戶消息 Markdown 渲染或入場動效,且接受在設置裏逐項開關的人。

注意事項

  • 插件以當前 dsh 進程的權限運行;安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。
  • 「插件市場」通過 GitHub API 拉取帶 dsh-plugin topic 的項目,屬於社區目錄索引,與 DeepSeek / 幻方無官方從屬關係。
  • 包依賴 @deepseek-ai/cordisdsh-client-* 等 peer 依賴,版本需與當前 DSH 發行版匹配;README 標註爲 0.1.0-rc.6 預發佈階段,升級前留意 changelog。
  • 所有動效尊重 prefers-reduced-motion;未配置壁紙等外觀項時,界面行爲與原生一致。

結尾

dsh-client-ui-custom 把壁紙主題、快捷鍵、用量面板、歷史條、Markdown 渲染、插件市場和動效收進一個可拆分的 Web 前端插件,配置即生效,無需動 shell。按需用 features 白名單裁剪模塊,可以只拿快捷鍵或只換膚。

羽毛球分组比赛记分
小程序二维码

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

小夜