@skzhang/dsh-appearance:DSH Web 界面外观管理插件

前言

DeepSeek Harness (DSH) 生态强调插件化与模块化。对于习惯定制开发环境的用户而言,分散在多个插件中的主题切换、字体配置以及视觉特效往往显得繁琐。@skzhang/dsh-appearance 插件将界面外观的配置收敛到一个统一的入口,提供主题管理、字体排版调整以及液态玻璃效果支持,旨在让 Web 端的视觉定制更加集中和高效。

功能说明

主题管理

插件提供 DSH 自带的浅色、深色和跟随系统三种模式,并与 DSH 自身的 ui-theme.preference 双向同步。除此之外,还支持多种预设主题(如 Catppuccin、Dracula、GitHub、Ayu 等)。

预设主题并非简单的背景色替换,而是通过算法从种子色推导出 90 余个 DSH token。这些 token 覆盖了背景层级、分割线、输入框、菜单、选中态、滚动条、代码块、提示框及侧边栏等所有视觉元素。推导过程使用 color-mix 处理透明度与混色,确保在浅色和深色预设之间切换时保持良好的可读性。颜色值直接取自官方调色板,写入位置与官方主题一致(body 层),避免自定义样式被覆盖。

字体与排版

支持自定义 UI 字体和代码字体,输入框会自动扫描系统字体目录供选择。字号范围在 10-24px 之间。

插件支持字体平滑(通过 -webkit-font-smoothing 实现),但该效果仅作用于网页 CSS 文本,不影响系统级原生控件。在排版方面,可调整会话流密度(控制消息条目间的间距,0 为最紧凑),以及工具调用的行间距(通过 padding-block 实现,不参与窗口测量逻辑)。

液态玻璃效果

该功能仅作用于页面中真实存在的浮层,包括菜单(role="menu")和对话框(role="dialog"[aria-modal=true])。用户可调节模糊、透光程度及浮层范围。

为了保证可用性,透光效果设有下限,无论滑杆如何调整,菜单始终保持可读。关闭该功能时,插件会主动清除 dsh-desktop-assist 插件可能遗留的玻璃样式,防止半透明层叠加导致的视觉混乱。

持久化存储

外观设置通过 DSH 的 settings seam 写入宿主的 settings.yaml。插件具备智能同步逻辑:
1. 若宿主分区已有用户层配置,启动时直接采用。
2. 若宿主从未接受过写入,保留本地选择并补写到宿主,防止默认值覆盖。
3. 写入失败时采用指数退避重试机制,直到分区内容与本地一致。在 memory 模式下,仅依赖 localStorage。

安装与启用

通过 DSH 插件命令安装:

dsh plugin --profile web add @skzhang/dsh-appearance

安装完成后,重启 dsh web 或重新打开 Desktop 应用即可生效。在界面的「设置 → 外观」中即可看到全部设置项,无需额外配置。

开发与许可

该插件使用 MIT 许可证开源。源码结构清晰,src/client.js 为浏览器端实现,scripts/build.mjs 负责打包。项目支持 node:test,无需额外配置即可运行。

项目地址:https://github.com/shkzhang/dsh-appearance

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

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

Xiaoye