Back to home

FunctionHookTJU

dsh-custom-wallpaper

deepseek harness 可自定义主题壁纸,主题色,磨砂玻璃,不透明度

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-custom-wallpaper

适用于 DeepSeek Harness (DSH) 的动态 Cordis 插件:自定义主题色、壁纸与面板不透明度,支持磨砂玻璃模糊,设置自动持久化。

功能123

  • 主题色:自定义强调色(品牌主色)与背景色,自动推导边框、文字、侧栏等派生配色
  • 壁纸:4 个渐变预设(无 / 暮色 / 晨曦 / 深海)、任意图片 URL、本地图片(大图自动压缩后写入配置)
  • 不透明度:面板 20%–100% 半透明,数值越低壁纸透出越明显;开启壁纸时面板最高 90% 不透明,壁纸始终可见
  • 磨砂玻璃:0–30px 模糊强度,作用于壁纸层(filter: blur + 轻微放大消除边缘留白),不破坏界面 fixed 弹层布局
  • 持久化:全部设置写入 localStorage(key: dsh.custom-appearance.v1),关闭设置面板或刷新页面后自动恢复
  • 入口:设置 → 「外观定制」分区(位于「通用」之后)

安装

方式 A:持久安装到 DSH profile(推荐,重启后仍生效)

插件已按 DSH 持久插件规范打包成本仓库根目录的 npm 包 dsh-plugin-custom-wallpaper

  • package.json — 包元数据 + dsh.client.platform: "web" 声明 + exports["./client"]
  • lib/index.js — host 半(空实现,仅为让 profile 的 cordis loader 有可导入的插件入口)
  • lib/client.js — 客户端 bundle(window.__ModuleLoader__.load 注册工厂,功能与 client.js 一致)

应用到本机 DSH 的步骤:

  1. 把包安装进 web profile 的 node_modules: C:\Users\12252\.dsh\profiles\node_modules\dsh-plugin-custom-wallpaper\(已复制)
  2. 在 profile 的 patch 层注册插件:编辑 C:\Users\12252\.dsh\profiles\web\cordis.patch.yml,在 insert 列表中追加 { id: custom-wallpaper, name: dsh-plugin-custom-wallpaper }(已完成)
  3. 重启 DSH(npx @deepseek-ai/dsh web),客户端刷新后插件即生效
  4. 验证:设置 → 「插件」页应出现 dsh-plugin-custom-wallpaper; 设置 → 「外观定制」分区出现全部控件

以后修改插件:改本仓库 lib/ 下的源码 → 重新复制到 profile 的 node_modules(或 pnpm 重装)→ 重启 DSH。DSH 从 profile 的 node_modules 副本加载,仓库文件只是源码仓库。

方式 B:会话内动态加载(临时,重启失效)

插件亦可作为纯客户端动态包(无 Host 半)。在 DSH 会话中:

  1. cordis_define 新建插件(plugin.kind: "new"idPrefixtheme),把 client.js 的内容原样作为 code.client
  2. cordis_run 激活返回的 pluginId / packageId
  3. 客户端包首次激活需要授权(运行卡片上单击 ✓ 授权当前包,双击 ✓✓ 授权该插件后续所有版本)。

注意:cordis_* 工具只在含 Cordis 工具链的 preset(如「创造模式」)会话中可用。

文件

  • client.js — 动态包的 code.client 函数体(纯 JS:无 JSX / TypeScript / import)
  • lib/client.js — 持久插件的客户端 bundle(__ModuleLoader__ 工厂版,功能与 client.js 相同)
  • lib/index.js — 持久插件的 host 半(空实现)
  • package.json — 持久插件的包元数据(dsh.client / exports["./client"]
  • README.md — 本说明

实现要点

  • 壁纸渲染在 body::before 固定全屏层;面板 token(--dsw-alias-bg-base-layer-1/2-overlay--dsw-specific-sidebar-fill、边框、文字等)通过 theme.overrideTokens 覆盖为半透明/派生色;
  • 设置弹窗遮罩与图片灯箱的模糊由产品自带 token --dsw-mask-blur 驱动,跟随「模糊强度」滑块;
  • 本地图片经 FileReader 读为 data URL,超过 2560px 或 1.2MB 的位图用 canvas 缩放重编码(PNG 保透明,其余转 JPEG),避免撑爆 localStorage 配额;
  • 状态保存在插件级(而非设置面板组件),关闭设置面板不会撤销主题;theme.overrideTokensstyles.insert 均持有 disposer,随插件停止自动清理。

版本历史

  • v5 — 磨砂玻璃改为壁纸层 filter: blur,修复 v4 中 backdrop-filter 将设置弹窗吸入侧栏(containing block + overflow 裁剪)导致的布局错乱
  • v4 — 磨砂玻璃(主面板 backdrop-filter;因破坏 fixed 弹层被 v5 取代)
  • v3 — 本地图片(大图 canvas 压缩)+ localStorage 持久化
  • v2 — 支持本地图片(FileReader → data URL)
  • v1 — 主题色 / 壁纸(渐变 + URL)/ 不透明度

说明

  • 动态包是进程级的临时扩展:DSH 完全重启后需重新 cordis_define + cordis_run
  • 持久包(方式 A)随 profile 加载,DSH 重启后自动恢复,是日常使用推荐形态。
  • 本仓库保存两类源码,方便随时恢复与继续开发。