dsh-custom-theme:在 DeepSeek Harness 中接入 tweakcn 主题

前言

DeepSeek Harness(DSH)的界面皮肤主要由设计令牌(design tokens)驱动,换一套配色往往要对着官方主题结构逐项改,或只能接受内置主题。若你已经在 tweakcn 或 shadcn 生态里配好了一套 CSS 变量主题,更希望「复制 → 粘贴 → 明暗两套一起生效」,而不是手写映射表。

下面介绍社区插件 dsh-custom-theme(维护者 cndoin):把 tweakcn 导出的 CSS 解析为 DSH 可用的亮色 / 暗色令牌,并可选壁纸与输入区液态玻璃效果。插件归类为 SkillHub 上的「趣味换装」,当前 GitHub 星标为 0;版本 1.0.0,许可证 MIT。

这是什么

dsh-custom-theme 面向使用 DSH web 配置档(默认 web)或桌面端托管配置档的开发者:在设置里粘贴主题 CSS,覆盖整机 UI 的别名层、具体表面、焦点环、圆角、字体等约 140–156 个设计令牌,外加 38 条静态色阶。数据来源声明为离线运行、无遥测。

它与「改模型输出速度」无关:README 明确说明不会改写对话渲染与 MarkdownText 流水线;玻璃与壁纸默认关闭时,不注入额外 CSS、SVG 滤镜或令牌覆盖。

核心功能

一次粘贴,明暗两套色板

解析器从粘贴内容中只读取 CSS 自定义属性声明,不把整段内容当作样式表插入 DOM。约定上 :root { … } 映射亮色,:root.dark { … }(及多种常见暗色选择器)映射暗色;单套主题时插件会按亮度推导配套方案。

对 url()、@import、expression()、javascript: 以及异常括号、分号等会拒绝,降低粘贴不可信 CSS 带来的风险。

全界面令牌覆盖

通过固定来源 id 调用 ctx.theme.overrideTokens('dsh-custom-theme', tokens),重复应用会替换同一层而非叠加。ThemePresenter 将令牌写到 body.style.setProperty。

壁纸启用时,仅允许两个 shell 令牌变半透明(--dsw-alias-bg-base、--dsw-specific-sidebar-fill),避免把代码块、轨迹表等层的背景一起改糊;未应用自定义主题时不覆盖任何 shell 令牌。

可选壁纸

支持图片或视频,提供 blur / dim / tint 滑块;可选本地文件(存储前缩放到 1920px 并重编码为 JPEG)。壁纸与主题粘贴相互独立,改动即时生效,无需再次点 Apply。

可选液态玻璃输入区

针对稳定属性 [data-composer-card] 的磨砂输入卡片,带跟随指针的高光;刻意不使用会挤压布局的 transform、composer 上的 SVG filter: url(...) 等(README 记录了早期位移滤镜导致卡顿的经验并已移除)。

输入格式兼容面

README 列出对 tweakcn v3/v4、多种颜色函数、shadcn registry JSON、{ light, dark } / cssVars、Markdown 代码围栏等格式的测试矩阵;npm test 在开发侧包含 97 个单元测试及多项兼容性脚本(运行插件本身不需要本地构建,仓库已提交生成的 client.js)。

安装与启用

环境要求

  • DSH 使用 CLI 管理的 web 配置档时,可按下列步骤安装;desktop 配置档由 Electron 应用管理,CLI 安装会被拒绝。
  • 开发与重建 client.js 需要 Node.js ≥ 22.12.0;日常使用无需 build。

web 配置档

先将插件源码目录放到 $HOME/.dsh/plugins/dsh-custom-theme(仓库地址见文末链接),再执行 README 中的 link 安装步骤:

dsh plugin --profile web add link:"$HOME/.dsh/plugins/dsh-custom-theme"
dsh plugin --profile web install

安装后需重启宿主进程(例如 dsh web),宿主侧仅在进程启动时挂载。

可用下面命令确认是否写入 profile 的 bundle:

grep -A6 '"dsh"' "$HOME/.dsh/profiles/web/package.json
# 应在 dsh.profile.bundles 中看到 dsh-custom-theme

若出现 declares no dsh.bundle,README 说明 link: 依赖有时不会自动建好根链接,需在 profile 的 package.json 里手动声明 "dsh-custom-theme": "link:<绝对路径>" 并重新执行 dsh plugin --profile web install(Windows 可用目录 junction,其他系统用符号链接)。

desktop 配置档

通过应用内插件管理器安装时,重载(Ctrl+R)或重启 Harness 后即可加载 client.js。状态保存在浏览器 localStorage 的 dsh-custom-theme/v1,换机不同步。

卸载

dsh plugin --profile web remove dsh-custom-theme

典型用法

  1. 在 Harness 中打开 Settings → Custom theme(注册在 settings.section,order: 32)。
  2. 在 tweakcn.com 选好主题,点 Copy theme,粘贴到文本框后点 Apply theme。
  3. 需要恢复时点 Restore default。

界面内置 Claude、Amethyst Haze、T3 Chat 三套示例格式,填充粘贴框但不会自动应用,须手动 Apply。壁纸与玻璃在独立卡片中开关,默认均为关闭。

若界面无变化,卡片底部 Run status JSON 会汇报开关状态、URL 校验、CSS 长度、DOM 层是否创建、令牌数量及 backdrop-filter 支持情况,可一并贴到 GitHub Issues。

适用场景与注意

适合:已在 tweakcn / shadcn 体系里维护 CSS 变量主题、希望在 DSH web UI 里快速试明暗配色,并可选壁纸或玻璃输入区的个人或团队开发者。

不适合:期望用客户端插件逐字控制模型流式输出节奏的场景——插件未暴露 per-chunk 钩子,也不会替换官方 Markdown、工具卡片与引用交互。

安全与权限:插件以当前 DSH 进程及渲染进程权限运行,会读写本地 profile 与浏览器存储。安装前请自行审阅 cndoin/dsh-custom-theme 源码与 MIT 许可证;社区目录 SkillHub 插件页 独立于 DeepSeek / 幻方,并非官方应用商店。

经过上面的步骤,你可以在不大改 DSH 的前提下,把 tweakcn 主题落到整套界面上,并按需开启壁纸或玻璃效果,且默认关闭时尽量不增加流式对话时的合成开销。

  • 目录页:https://www.skillhub.cn/plugins/cndoin/dsh-custom-theme
  • GitHub:https://github.com/cndoin/dsh-custom-theme
羽毛球分组比赛记分
小程序二维码

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

小夜