dsh-theme-dracula:为 DeepSeek Harness 整站套用 Dracula 配色

前言

DeepSeek Harness(DSH)的 Web 界面有一套设计 token(--dsw-alias-*、--dsw-specific-* 等)驱动的深色外观。若你长期用 Dracula 配色习惯 #20212B / #282A36 / #44475A 这类色值,仅靠浏览器用户样式很难完整覆盖侧栏、输入框、菜单和 Shiki 代码高亮——DSH 里不少模块走独立 token 层,只改静态变量会漏色。

下面介绍社区插件 dsh-theme-dracula(维护者 PuerJJJ):在 token 层重述整站颜色,并在 设置 → 通用设置 里用开关切换,分类属于 DSH 社区目录中的「趣味换装」。

这是什么

dsh-theme-dracula 是面向 DeepSeek Harness 的 Dracula 深色皮肤插件。它不改业务逻辑,通过宿主注入 CSS 变量与客户端设置项,把侧栏、对话区、输入框、菜单、设置页和代码高亮换成与 draculatheme.com 上的 DeepSeek 移植版 对齐的取值。

当前 package 版本为 0.1.1,许可证 MIT。GitHub 仓库:PuerJJJ/dsh-theme-dracula;社区目录页:skillhub.cn 插件页(与 DeepSeek / 幻方无官方从属,仅为社区收录站点)。

核心功能

整站 token 换肤

插件覆盖四层变量,而不是只改一层 alias:

  • 101 个 --dsw-alias-* 通用别名;
  • 11 个 --dsw-specific-*(侧栏、输入框、气泡、菜单等模块层;README 说明不改这层时侧栏不会跟着变色);
  • 11 个 --shiki-token-*(DSH 代码高亮走 theme: "css-variables",改变量即可);
  • think 渐变、选区色,以及 --dsh-boot-bg 等补充项。

首帧即是 Dracula,且不抢浅色

宿主半在每次页面渲染时注入 <style> 与首帧脚本。脚本在客户端 bundle 之前执行:读 localStorage 开关、挂到 globalThis.__DSH_DRACULA__,再按 body[data-ds-dark-theme] 决定是否给 <body> 加 data-dsh-dracula,并用 MutationObserver 跟随外观切换,避免先闪一下内置深色再换肤。

只在 DSH 处于深色外观时生效;用户切到「浅色」后主题自动让位。

设置页开关,而非 ui-theme 第三方 id

客户端半向 settings.general.item 槽位注册一行(order 12):左侧标题、描述与八色圆点,右侧为 Switch。开关写回 localStorage,paint() 仅 toggling data-dsh-dracula。

README 明确说明:没有注册成 ui-theme 第三方主题——ui-theme 只持久化 light | dark | system,字体或外观变更会把第三方 id 顶回内置值;本插件用 CSS 皮肤层跟随外观,行为更稳。

零依赖实现

宿主半与客户端半均为手写实现,宿主半只使用 Node 内建模块,不引入 @deepseek-ai/*,不需要构建步骤。

安装与启用

插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证。社区目录星标数以页面展示为准(线索中为 0)。

插件市场(收录后)

在 DeepSeek Harness 的「插件」页搜索 dsh-theme-dracula,安装后重启应用。

本地安装

在克隆或解压得到的仓库目录下执行(命令来自仓库 README):

cd dsh-theme-dracula
node scripts/install.mjs --profile desktop           # dry-run:先看清要改什么
node scripts/install.mjs --profile desktop --apply   # 建软链并登记到 dsh.profile.bundles

脚本只在 $DSH_HOME/profiles/<profile>/node_modules/ 下建立指向本包的软链,并把包名追加进该 profile 的 dsh.profile.bundles;写入前会备份 package.json.bak-dracula,不改 dependencies、不动 pnpm-lock.yaml。

重启 DeepSeek Harness 后,打开 设置 → 通用设置,找到 「Dracula 主题」 并打开开关。

卸载

node scripts/install.mjs --profile desktop --uninstall --apply

或手动删除 node_modules/dsh-theme-dracula 软链、从 dsh.profile.bundles 移除包名,然后重启。

典型用法

  1. 完成上述安装并重启 DSH。
  2. 保持界面为深色外观(系统或应用内深色均可;浅色下插件不生效)。
  3. 进入 设置 → 通用设置,打开 Dracula 主题 开关。
  4. 侧栏、聊天、Composer、菜单与代码块应呈现 Dracula 调色板;再次关闭开关即恢复 DSH 默认 token 配色。

维护者提供的自检命令(可选):

node scripts/verify.mjs
# 可选:对比内置 alias token 表
node scripts/verify.mjs --audit /tmp/dsh-probe/alias-table.txt

工作原理简述

宿主半 lib/index.js 订阅 webserver/index-inject,向页面注入样式与脚本。样式写在 :root:root body[data-dsh-dracula]{…} 下,用重复伪类提高特异度,压过设计平台运行时 append 的规则,不依赖注入顺序。

客户端半 lib/client.js 通过 window.__ModuleLoader__.load({ id: "dsh-theme-dracula", … }) 加载,inject = ["theme", "slots", "locale"]:监听 theme/change,注册设置项与中英文案。

与 draculatheme.com/deepseek 的关系:后者是给 chat.deepseek.com 的 Stylus 样式,覆盖 --dsw-static-* 与 Prism 类名;本插件在同一套配色下重述 DSH 的 alias、specific 与 Shiki token 三层,避免 Harness 内大面积漏色。

选区色未直接用 Dracula 的 #44475a(与行内代码背景相同会糊在一起),改为 #bd93f9 42% 叠底,便于在页面与代码块中辨认选中内容。

适用场景与注意

  • 适合:长期在 DSH Desktop/Web GUI 工作、偏好 Dracula 配色、希望侧栏与代码高亮一并统一、且接受在通用设置里多一个开关的用户。
  • 注意:插件不替代 DSH 自带的 light/dark/system 选择;浅色模式下自动关闭视觉生效。本地安装会修改 profile 下的 dsh.profile.bundles 与 node_modules 软链,建议先跑 dry-run。DSH 生态理念是「一切皆插件」;安装来源以 GitHub 与社区目录页为准,自行审计后再启用。

结尾

dsh-theme-dracula 把 Dracula 配色落到 DSH 整站设计 token 上,深色下可开关、首帧不闪、代码高亮一并跟随。需要详情与截图见 GitHub README,在 Harness 内找插件可看 社区目录页。

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

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

小夜