DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

lubanaishuxue /

lubanaishuxue/dsh-private-background

Verified

Custom wallpaper for the DeepSeek Harness UI — local images, GIFs, videos, gradients or solid colors, with blur, dim, focus position, per-panel opacity and a liquid-glass material. Everything stays on your machine.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@d42bb9e0

dsh-private-background

给 DeepSeek Harness 的界面换一张底图。

本地图片、动图(GIF / 动态 WebP / APNG)、视频、渐变、纯色五种来源。模糊、压暗、取景位置、面板浓度都能调,对话区和输入框各自独立一档,字体颜色可以按背景明暗自动反色。

所有素材只存在你自己的电脑上,不上传、不进会话记录、不经过模型。

非官方插件,由第三方开发,DSH 官方不提供支持。它通过官方插件接口注册面板与样式,不修改客户端文件、不注入脚本、不触碰账号与凭据 —— 但装任何插件前都建议先看一眼代码。

版本 1.3.1 · 在 Windows + DSH 桌面版 0.2.1-rc.2 上开发和测试。


安装

前置条件:Node.js ≥ 20、DSH 自带 dsh 命令、pnpm 在 PATH 上(DSH 用 pnpm 装插件,缺了会直接报 pnpm was not found)。

# 桌面版
dsh plugin --profile desktop add github:lubanaishuxue/dsh-private-background

机器上没有 git 时用源码包地址:

dsh plugin --profile desktop add https://github.com/lubanaishuxue/dsh-private-background/archive/refs/heads/main.tar.gz

从本地目录装(自己改代码时用这个):

dsh plugin --profile desktop add D:/path/to/dsh-private-background

装完重启 DSH(插件行和客户端 bundle 都是启动时扫描的)。重新打开窗口不算。

装好后有两处入口,是同一个表单:

  • 左栏底部的壁纸图标 —— 点一下主区域直接变成设置页
  • 设置 → 插件 → 界面背景

一分钟上手

  1. 点左栏底部的壁纸图标
  2. 背景类型选「图片」
  3. 点「添加图片」,选一张 —— JPG、PNG、GIF、WebP、MP4 都行
  4. 拖压暗和面板不透明度,直到字看得清
  5. 人没在画面中间,就在预览图上拖着挪
  6. 想让壁纸铺满整个窗口(含左侧对话栏),打开「同时应用到左侧对话栏」

改完即时生效、自动保存,没有「应用」按钮,也不用重启。


设置页

左栏图标打开的这个页面是透的 —— 调滑杆的时候壁纸就在它后面,改一个数立刻能看见,不用来回切。切回对话就点原来的对话图标,设置页会自己退出去。

从上到下六块:

区块 内容
背景类型 关闭 / 图片 / 渐变 / 纯色
来源 图库、6 个渐变预设、或色板 + 自选颜色
取景位置 在预览图上拖,或拖「左右」「上下」两条滑杆(只对图片有)
作用范围 「同时应用到左侧对话栏」开关
字体颜色 跟随主题 / 自动 / 浅色 / 深色 / 自定义
观感 5 条滑杆 + 质感开关

最底下两个东西:左边「恢复默认」,右边一行诊断读数 样式 / 激活 / 框架 / 三栏(见排错)。


背景类型

选项 效果
关闭 恢复 DSH 原样,什么都没变
图片 用图库里的图 —— 静图、动图、视频都可以
渐变 6 个内置预设:极光、夜幕、落日、深海、青柠、纸感
纯色 6 个色板,或点「自选颜色」调任意色

图库:点一张立即切换,不用确认。每张图上有「删除」;动图和视频的缩略图左下角带一个角标。


动图与视频

选文件时可以直接选 GIF、动态 WebP、APNG、MP4、WebM。三者的像素存在方式不一样,处理方式也不一样:

类型 怎么存 怎么放
静图(JPG / PNG / 静态 WebP 等) 缩到 2560px 再压成 JPEG background-image
动图(GIF / 动态 WebP / APNG) 原始字节,一个字节都不动 background-image 指向原始字节
视频(MP4 / WebM) 原始字节 壁纸层里放一个静音循环的 <video>

动图和视频不能过 canvas —— 一张 GIF 画进 canvas 再读出来就只剩第一帧了。所以它们按原样存进 IndexedDB,代价是不再受「缩到 2560px」的保护,因此单独设了 96 MB 的单文件上限。

视频会抽第一帧做封面,这一帧同时用于图库缩略图、设置页预览、以及判断壁纸该配黑字还是白字 —— 亮度测量从来不读视频本体。

系统开了「减少动态效果」时,动图和视频都只显示那一帧。


同一个文件不会加两次

再选一张图库里已经有的图,不会再出现第二格。插件会认出这是同一份内容,直接切到那一张,并提示「这个文件已经在图库里了」。图片、动图、视频都管。

认的是内容,不是文件名 —— 同一张图改个名字再选照样拦得住;两张不同的图碰巧同名也不会被误判。

做法是给每一份存下来的内容算一个 SHA-256 指纹,比的是这串值。按「存下来的那份」而不是「你选的那个文件」算,是因为照片在存之前会被重新压成 JPEG,原文件的字节根本没留下来。

老图库不用管:之前加进去的图会在插件启动后自动补上指纹(一次就够,补完写回)。


一次加一整个文件夹

图库下方有一个**「浏览文件夹」**。选一个文件夹,插件把里面所有图片和视频列出来 —— 已经加过的直接不出现,剩下的点一张加一张,加完就从列表里消失。底部会告诉你「3 张已经在图库里,没有列出来」。

判断「这个文件我是不是已经有了」靠的是上传时记下的文件名 + 大小 + 修改时间,不解码不哈希,所以扫描是秒出的。

为什么不能只记路径、不存图片? 浏览器不给。网页拿到的文件对象里只有文件名、大小、类型,没有路径;就算有,刷新一次之后也没权限再读那个位置 —— 否则任何网页都能扫你的硬盘。所以图片必须复制一份进本机数据库,这也是 96 MB 上限和 2560px 缩图的由来。

为什么每次都要重新选一次文件夹? 同一个原因:插件没法「记住这个文件夹,下次自动打开」。换来的是不用在文件对话框里一个个挑。

⚠️ 已知缺口:在这个功能之前加进去的图没有记这三样,所以它们会照常出现在列表里。点下去不会重复添加(指纹会拦住并提示),只是多一步。


取景位置

图比窗口宽(或高)的时候,cover 会把两边裁掉。裁掉哪边由你决定 —— 在设置页的预览图上直接拖,人物就跟着回来了。

  • 也可以拖「左右」「上下」两条滑杆,或点「居中」回到正中。
  • 每张图各记各的位置,竖构图照片和横构图视频本来就该裁在不同地方。
  • 新传一张图从居中开始,不继承上一张的偏移 —— 偏移是这张图的构图,不是界面风格。
  • 某个方向没有多余部分可裁(比如竖图放进横窗口的上下方向),那个方向拖不动。这不是坏了。

作用范围

同时应用到左侧对话栏 —— 默认关。

  • 关:只有右边工作区换背景,左侧对话列表保持 DSH 原样。
  • 开:整窗铺满,左侧栏也变成半透明玻璃,标题栏跟着通栏。

字体颜色

模式 行为
跟随主题 什么都不改,用 DSH 自己的配色(默认)
自动 看背景实际明暗,暗背景配浅字、亮背景配深字
浅色 / 深色 固定,不看背景
自定义 你指定主色,其余几级文字由它自动推导

「自动」是推荐选项,尤其你会在亮图和暗图之间切换时 —— 它每次都重算,不会停在上一张图的判断上。


五条滑杆

前四条永远在,第五条会跟着「质感」换 —— 这是唯一一个容易找不到的控件。

滑杆 范围 管什么 什么时候动它
模糊 0–40px 壁纸本身糊多少 只在你不想看清图片细节时加
压暗 0–80% 全场压一层黑 字看不清主要调这个,不是模糊
面板不透明度 0–100% 三栏的底色浓度 想多露壁纸就降,字发虚就升
对话区不透明度 0–100% 中间聊天区单独一档 同上,只管对话区
输入框不透明度(实心时) 0–100% 发消息那个框单独一档 框里的字发虚就升
玻璃模糊(液态玻璃时) 0–40px 所有磨砂面板的模糊量 想要更「磨砂」就加

默认值:模糊 20 · 压暗 15 · 面板 50 · 对话区 0 · 输入框 50。

质感:实心 / 液态玻璃

  • 实心(默认):各块按上面的不透明度铺底色,没有模糊、没有高光。
  • 液态玻璃:输入框、底部状态栏、头部胶囊、代码块、文件卡片、消息气泡一起变成磨砂半透明,边缘带一道高光。字压在图上更容易读,因为背景被磨平了。

切到液态玻璃后,第五条滑杆从「输入框不透明度」变成「玻璃模糊」。

设置弹窗(Ctrl+, 打开的那一个,含「费用」「桌宠配置」等分区)走同一套材料:面板半透明 + 磨砂,里面的卡片是一层薄白纱浮在面板上,分区之间没有分界。


每张背景各记一套参数

换一张图,滑杆会跳回那张图自己上次调好的值,不会互相污染。

跟着背景走 全局共用
模糊、压暗、取景位置、面板不透明度、对话区不透明度、输入框不透明度、质感 玻璃模糊、作用范围、字体颜色

分界线是**「这张图长什么样」还是「界面长什么样」**。玻璃模糊是材质 —— 一个对话框随背后的图换磨砂强度,读起来像 bug 而不像功能。字体和作用范围同理。

  • 新传一张图,继承你当前这套 —— 传图是换画,不是换风格。唯一例外是取景位置(新图从居中开始)。
  • 删掉一张图,它那套参数一起删。
  • 删掉正在用的那张,壁纸滑到顶替它位置的那一格;图库空了才回到「关闭」。
  • 「恢复默认」只重置当前这张背景的滑杆,不动你选的那张图。

切换壁纸时的过渡

换壁纸不是硬切。新图在 0.6 秒里淡入,旧图原样留在下面,中间不会黑一下。

  • 图片之间、渐变之间、色值之间,以及三者互相切换,都走同一套。
  • 拖滑杆不过渡 —— 那是调参,不是换画。
  • 关闭壁纸仍然是立刻消失,没有东西可淡。
  • 系统开了「减少动态效果」时自动关掉过渡。
  • 连点图库不会叠出鬼影:每次点击都把新点的那张另起一层叠在最上面淡入,下面的一动不动,最后一次点击之后 0.6 秒落定。

调参顺序(省事的顺序)

大多数人第一次会直接拖模糊,然后发现字还是看不清。建议这个顺序:

  1. 先选图,别急着拖滑杆
  2. 压暗调到字能读 —— 绝大多数「看不清」是压暗不够,不是模糊不够
  3. 面板不透明度微调:想多露壁纸就降,字发虚就升
  4. 模糊最后加,只在不想看清图片细节时用
  5. 想要磨砂质感再开液态玻璃,然后调玻璃模糊

原因:模糊是把壁纸磨平,代价是图没了;压暗只是把它压黑,图还在。先压暗,后模糊。


出问题了

设置页最底下那行读数

样式 / 激活 / 框架 / 三栏 后面跟四个符号,一眼定位四类故障:

读数 显示 ✗ 意味着
样式 样式表没注入 —— 插件根本没跑起来
激活 <html> 没被标记上
框架 没定位到 DSH 的外壳结构
三栏 栏数不对,宿主布局变了

「框架」或「三栏」有 ✗ 时页面还会多出一行错误提示。提 issue 时把那一行贴上来,它比截图有用。

常见现象

现象 原因 / 办法
左边栏还是实色 「同时应用到左侧对话栏」没开。默认行为,不是 bug
标题栏是一条侧栏色的实心横带 同上。只改工作区时,标题栏不属于工作区
右上角三个按钮是实色块 整窗模式下按钮颜色取自整张壁纸的平均明暗,角落特别亮或特别暗时对比度不理想
设置页背景是纯黑 不是 bug —— 这一页故意不铺底,因为它是你唯一想看看壁纸效果的地方
右侧面板打开才变玻璃 故意的,收起时不画
图传上去变糊了 大图会被压到 2560px 宽再存,省内存
换图后滑杆全变了 不是 bug,每张图各有一套参数
左栏图标点了没反应 插件没加载成功。看 DSH 启动日志里有没有 dsh-private-background

已知边界

  • 作用范围靠 DSH 的外壳结构定位,宿主大改布局会失效。失效时设置页会提示,其他界面不受影响。
  • 只改工作区时,标题栏整条是侧栏色 —— 想让壁纸顶到窗口最上沿就切成整窗。
  • WebP 一律按动图处理(靠 MIME 判断不了「这张 WebP 到底动不动」),所以静态 WebP 不享受缩图,会比你预期的大一些。
  • 视频壁纸会一直解码,比静图费电。笔记本上建议插电时再用。
  • 只在 Windows + DSH 桌面版上测试过,macOS / Linux 未验证。
  • 插件停用后所有改动自动撤回,DSH 恢复原样,设置留在本机。

隐私

  • 图片、动图、视频只写进 DSH 自己页面下的 IndexedDB,不出这台电脑。
  • 没有网络请求,没有统计上报,没有账号。
  • 卸载插件后,数据库随该页面的存储一起清掉;也可以在设置页里逐张删除。

开发

node tools/smoke-test.cjs   # 306 项:模块契约、槽位注册、样式表、状态机
node tools/store-test.cjs   # 94 项:存储与判重

改动 client.js 后跑这两个,全绿再提交。设计取舍、宿主结构取证、每个断言在钉什么 —— 在 ENGINEERING.md。

许可证

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit d42bb9e05ce3

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout