前言¶
DeepSeek Harness(DSH)采用「一切皆插件」的架构,每个插件负责特定的功能模块。但在实际使用中,不同插件的 UI 风格往往不一致,有些插件的浮动面板半透明效果与整体主题冲突,或者某些元素的位置、颜色与个人偏好不符。要修改这些外观,通常需要修改插件源码或等待开发者发布新版本。dsh-ui-overrides 提供了一种不需要触碰插件源码的方案:让用户拥有自己的样式表,通过 CSS 覆盖任意插件在 Web UI 中渲染的元素。
插件定位¶
dsh-ui-overrides 是一个为 DSH Web UI 提供用户自有 CSS 注入的插件。它维护一份样式表,并在页面加载时将其注入到插件样式之后,从而允许用户用 CSS 覆盖任何插件的视觉效果。由开发者 cholot-Zhou 维护,开源 MIT 许可证。
核心功能¶
- 注入用户拥有的 CSS 样式表到页面。
- 样式表在插件样式之后加载,因此可以覆盖插件定义的样式。
- 支持
id、data-*属性、类名等选择器,可针对任意插件元素进行样式修改。 - 样式表跟随系统主题(
Canvas等系统颜色会自动适配浅色/深色模式)。 - 无需重新构建或重启应用,文件变更后刷新页面即可生效。
安装与启用¶
通过官方安装命令添加插件:
dsh plugin --profile desktop add dsh-ui-overrides
安装后需要完全重启 DSH(插件在启动时加载),然后打开一个对话页面。
如果使用本地检出的代码:
dsh plugin --profile desktop add file:/absolute/path/to/dsh-ui-overrides
典型用法¶
编辑样式表文件:
~/.dsh/ui-overrides.css
如果环境变量 DSH_HOME 已设置,文件位置为 $DSH_HOME/ui-overrides.css。
文件在每次页面加载时读取,无需构建步骤。如果文件不存在,插件会在首次请求时创建一个仅包含注释的起始文件。
示例 1:使引用栏完全不透明¶
针对 dsh-client-ui-quote 插件的引用栏,将其背景设为系统 Canvas 颜色并移除毛玻璃效果:
#dsh-quote-bar,
#dsh-quote-popover,
#dsh-quote-toast {
background: Canvas !important;
-webkit-backdrop-filter: none !important;
backdrop-filter: none !important;
}
示例 2:调整任意插件的面板宽度¶
通过 DevTools 检查元素,获取稳定的选择器(优先使用 id 或 data-* 属性),然后写入 CSS:
/* 扩宽某个浮动面板 */
#some-plugin-panel {
width: 420px !important;
}
示例 3:统一插件的所有提示框颜色¶
[data-tooltip] {
background: #1e1e22 !important;
color: #fff !important;
}
适用场景与注意¶
- 适合需要在现有插件基础上微调外观、修复主题冲突或统一视觉风格的用户。
- 选择器来自目标插件,若插件在更新中修改了 DOM 结构或类名,已编写的规则可能失效,需相应更新选择器。
- 插件仅注入 CSS,不支持用户编写的 JavaScript,无法添加新行为。
- 样式表由 DSH 主机从本地文件服务,不会上传到网络。
- 需要 Web UI 配置文件(desktop 或 web),无头/TUI 配置文件不加载客户端样式。
小结¶
dsh-ui-overrides 将 CSS 注入能力交给用户,使在不修改插件源码的情况下调整 DSH Web UI 的外观成为可能。无论是让引用栏完全不透明,还是统一所有工具提示的颜色,都可以通过编辑 ~/.dsh/ui-overrides.css 实现。它是对「一切皆插件」理念的延伸,让样式定制也变成一种可配置的能力。
- 插件目录页:https://www.skillhub.cn/plugins/cholot-Zhou/dsh-ui-overrides
- GitHub 仓库:https://github.com/cholot-Zhou/dsh-ui-overrides