前言¶
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