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 白名单裁剪模块,可以只拿快捷键或只换肤。

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

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

小夜