dsh-custom-style:在 DSH 网页端做样式工作台

前言

DeepSeek Harness(DSH)的网页界面由官方设计令牌和组件样式驱动。想微调字号、圆角或某块区域的配色,常见做法是改浏览器用户样式,或依赖换肤类插件整包切换主题——前者难持久、难分享,后者往往不能精确到单个组件。社区插件 dsh-custom-style(维护者 wupup,SkillHub 分类「趣味换装」)把全局 CSS、点选改样式、令牌覆盖和密度滑块收进 设置 里的一个页面,配置可导出 JSON,并与其它换肤插件分层共存。

这是什么

dsh-custom-style 是面向 DSH web profile 的界面样式自定义插件:不注册主题、不占用 ctx.theme,输出为独立的 CSS 覆盖层与 --dsw-* 变量覆盖。项目在 GitHub 上标明为非官方社区作品,与 DeepSeek 无隶属或背书关系;DSH 生态本身是「一切皆插件」,SkillHub 等目录站亦与官方无从属关系。

核心功能

设置页内按标签页分工,下列能力均来自项目 README 说明。

全局 CSS

直接编写任意 CSS,实时注入并自动保存。编辑器带撤销,并对大括号、引号、注释做配对检查(语法不完整时会提示,而不是静默无效)。「插入变量」菜单可将 var(--dsw-…) 插入到光标位置。

点选元素

开启点选模式后,设置面板会自动隐藏,避免遮挡页面;鼠标悬停高亮边框,点击即为该元素编写规则,结束后面板恢复并保留选中结果。顶部有提示条,可点「停止点选」或按 Esc 退出。插件会生成相对稳定的 CSS 选择器(优先语义化 id、data-*,跳过哈希类名),并展示计算样式与匹配元素数量。点选生成的规则使用 !important,以应对 DSH 组件 CSS Modules 带来的优先级问题。

主题变量

列出从当前已安装 DSH 样式表提取的全部 163 个 --dsw-* 设计令牌(非猜测列表),按品牌色、文字、边框、背景、状态色等分组且可搜索。每个令牌可分别设置浅色与深色两套值,支持单项恢复。

界面密度

五个滑块实时预览:字体缩放、界面密度、全局圆角、内容宽度上限、气泡圆角。README 说明密度相关调整作用于字号、行高及 .markdown 等语义选择器,不依赖私有压缩类名;若要精细控制具体组件,应使用点选元素。

预设与分享

内置 7 套预设一键套用;可将当前全部配置导出为 JSON 备份或分享,支持导入他人配置与一键清空。

安装与启用

插件需装入 web profile,默认路径为 $DSH_HOME/profiles/web(Windows 上通常为 C:\Users\<你>\.dsh\profiles\web)。

推荐:从 GitHub 安装

dsh plugin --profile web add github:wupup/dsh-custom-style

仓库已提交构建产物 lib/client.js,一般无需本地构建;仅当你修改 src/ 源码时才需要 npm run build。

改 profile 后必须重启 web 服务

只刷新浏览器不会加载新插件。DSH 在启动时扫描 profile 并将各插件客户端 bundle 快照进内存,通过 /plugins/<包名>/client.js 提供;服务启动之后安装的插件该路由会 404。

# Ctrl+C 停掉当前服务,然后重新启动
dsh web

浏览器访问 http://127.0.0.1:3080,进入 设置 → 自定义样式(英文界面为 Custom Style)。

自查是否已加载(200 表示已加载,404 表示需重启):

Invoke-WebRequest http://127.0.0.1:3080/plugins/dsh-custom-style/client.js -UseBasicParsing |
  Select-Object StatusCode

若 dsh plugin 失败,README 还给出手动复制到 node_modules、编辑 package.json 的 dsh.profile.bundles,以及 pnpm link 等备选路径;细节见仓库中文文档「安装」一节。

典型用法

  1. 按上一节完成安装并 重启 dsh web,打开设置中的「自定义样式」。
  2. 快速换观感:在「预设与分享」中选一套内置预设,再用「界面密度」滑块微调字号与圆角。
  3. 改品牌色或文字色:打开「主题变量」,搜索目标 --dsw-* 令牌,分别设置浅色/深色值;改错可对单项恢复。
  4. 改某一具体区域:切到「点选元素」,在页面上点击目标,在生成的选择器下写声明;需要时用「全局 CSS」补全复杂规则或插入 var(--dsw-…)。
  5. 备份或分享:导出当前配置为 JSON;在另一环境导入同一文件即可复现(仍须本插件已安装且 web 服务已加载该 bundle)。

配置权威副本保存在 $DSH_HOME/custom-style.json(经宿主 /custom-style/api 读写);浏览器 localStorage(键 dsh-custom-style:state)用于首屏缓存。卸载插件不会自动删除 custom-style.json,可自行删除。

与其它换肤插件共存

本插件不注册主题。换肤插件(如 README 提到的 dsh-dream-skin)切换皮肤后,此处的自定义 CSS 与变量覆盖仍可生效;反之也不会锁死主题选择。覆盖层注入在 <head> 最末尾,规则写在 body 层级,主要靠源码顺序覆盖而非全局滥用 !important。若换肤插件与本插件修改同一 --dsh-* 令牌,后加载者生效;要避免冲突,可对具体组件用点选规则,而不是在两处改同一令牌。

适用场景与注意

适合谁:长期在本地或自托管 DSH web 上使用、希望界面密度和配色贴合个人习惯,又需要可导出、可分享的样式方案的用户;与现有换肤插件叠加做「主题 + 微调」也符合项目设计。

安装前请知悉:

  • 插件在 当前 dsh 进程权限 下运行;宿主侧提供 /custom-style/api 持久化路由,README 描述了针对 loopback 与跨站请求的「信任围栏」,不是用户认证。写入前请自行阅读仓库 lib/index.js 与 README「安全说明」。
  • 插件不收集、不上传数据,文档称无外部网络请求;持久化仅承载视觉偏好,请求体上限 16 MB。
  • 令牌面板改动的是别名层(如 --dsw-alias-*、色板层 --dsw-static-*),不会重算所有派生令牌(阴影、高度等仍按原逻辑)。
  • 自定义 CSS 写坏时浏览器会忽略无效声明,并有编辑器侧配对提示;点选时若找不到 role="dialog" 的设置弹层,会退化为不自动隐藏,需手动关设置再点选。

结尾

dsh-custom-style 把 DSH 网页端的样式调整收敛到一个设置工作台:全局 CSS、点选、163 个设计令牌、密度滑块与 JSON 预设,并与换肤类插件分层配合。安装命令为 dsh plugin --profile web add github:wupup/dsh-custom-style,改 profile 后务必重启 dsh web。

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

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

小夜