DeepSeek Harness 外观一体化工具。对 8 个界面区域分别调节透明度与毛玻璃模糊(主背景、侧边栏、卡片面板、输入框与控件、设置面板、对话文本框、轨迹页、产出物/高亮内容;安装 dsh-better-sidebar 后为 9 个)。用任意图片或视频做壁纸,配有拖动平移、滚轮缩放的位置编辑器与 5 种布局模式(适应/填充/拉伸/平铺/居中);视频静音循环播放、刷新不丢失,并自动截取一帧用于预览、取色与构图。把多张图片加入轮换池(随机/顺序,每次刷新/每天/每周)自动更换。还包含 PS 风格色轮、一键从壁纸提取主题色、6 套预设 + 命名配置、昼夜自动切换与主题一键导出导入。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-any-background
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Tkingxiao/dsh-any-background
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
一个 DeepSeek Harness 外观插件:自定义主题色、背景壁纸(图片 / 视频 / 算法生成),以及逐表面的透明度与模糊度控制。兼容 DSH 0.2.0-rc.1 直至 0.2.1-rc.3,其上所有版本一并放行。
截图
功能特性
色彩与主题
- PS 风格色轮 — 色环取色相、内嵌方形调饱和度与明度,实时生成 30+ 个 CSS 设计令牌。
- 精确 HSL / RGB 输入 — 数值输入,与色轮双向同步。
- 智能取色 / 吸管取色 — 一键从壁纸提取主题色(采样可见区域、剔除灰色与近黑近白),或在壁纸上悬停取任意一点;视频壁纸自动截帧参与。全程在客户端完成。
- 强制界面明暗 — 亮 / 暗 / 自动。「自动」下表面与字体方向由主题色明度决定(深色 → 浅字,浅色 → 深字),未选主题色时按壁纸亮度判断。
- 主题导出 / 导入 — 一键导出自包含的
dsh-any-theme.json(配置 + 壁纸 + 整个轮换池),随时导入还原。 - 外观预设与档案 — 六套一键预设,外加可重命名、可复制的自定义档案;删除有二次确认。
背景与壁纸
- 图片壁纸 — 上传任意图片作为背景。
- 视频壁纸 — 静音循环播放,刷新不丢失(落盘持久化 + HTTP Range 流式播放),并自动截取一帧用于预览、取色与位置编辑。
- 位置编辑器与布局模式 — 拖动平移、滚轮或双指缩放、一键重置;适应 / 填充 / 拉伸 / 平铺 / 居中,图片与视频的位置各存各的,互不覆盖。
- 动态生成背景 — 网格渐变 / Shader / 几何图案,可调扩散范围与色彩强度、锁定种子。
- 壁纸轮换 — 缩略图选择器组池,按随机或顺序、每次刷新 / 每小时 / 每天 / 每周更换;页面开着也会按时推进。
- 昼夜自动切换 — 指定日间与夜间两套配置,按固定时段或跟随系统深色模式自动切换。
逐表面的透明度与模糊
- 十一个部件各自一对滑块 — 主背景、侧边栏、卡片面板、输入框与控件、设置面板、对话文本框、轨迹页、右方侧边栏(或 bettersidebar)、产出物 / 高亮内容、顶栏浮层、标题栏。
- 滑块就是磨砂量,0 就是没有磨砂 — 会盖掉宿主默认的菜单磨砂;每个部件的默认值仍是 30px,所以全新安装保持宿主的磨砂观感。
- 透明度改的是宿主令牌本身 — 不在原色上再叠一层新色,壁纸从内容后方透出来。
- 产出物 / 高亮内容共用一支滑块 — 代码块(含语言顶栏)、行内
code芯片与产出物 chip 同步。 - 右方侧边栏 / bettersidebar 同一对滑块两种身份 — 未装 dsh-better-sidebar 时驱动官方右侧栏,装了之后接管它的底部工作台面板(官方侧栏同样生效)。
- 桌面壳(Windows)还管标题条带 — 「侧栏」那对滑块同时驱动侧栏正上方的条带分段,切口随侧栏宽度拖动与折叠跟进(宽度 0 时整条交还「标题栏」);「标题栏」卡片驱动其余分段与原生按钮区,并提供「标题条带文字」四态(自动 / 跟随主题 / 始终白 / 始终黑)供条带发浅时裁定文字颜色。
界面部件
- 侧边栏「主题」页面(双模式) — 同一套五页(色彩 / 界面 / 字体 / 背景 / 配置)注册到官方右侧栏引导页或 dsh-better-sidebar 的侧栏,与设置面板三处共用一份状态,改一处处处同步;宿主没有该扩展点时静默不注册。
- 对话视图卡片 — 消息列表自动包成半透明卡片,轨迹页可整页调节。
- 顶栏浮层与标题栏各自可调 — Agent Team 面板、后台任务列表、会话头部下拉菜单,以及会话顶部那条标题 / 页签行,都有独立的透明度 + 模糊。
- 自定义字体 — 上传 ttf / otf / woff / woff2(上限 100 MB)应用到整个界面,代码块保持等宽;可随时停用或移除。
- 分组文字描边 — 与界面页同一套分组,每组独立
-webkit-text-stroke(0–4px,0 = 关闭),颜色可自动反色 / 灰 / 黑 / 白 / 主题色 / 自定义;代码块、inline code、图标与宿主的流光文字自动豁免。 - 第三方插件兼容 — 认出 dsh-better-display 时把它那条吸顶总结栏钉在 20% 底板 + 30px 磨砂、不随滑块;其它插件的表面若吃了本插件接管的令牌会在控制台点名,设置页可以整体关掉。
其它
- 文件持久化 — 所有设置落盘在
~/.dsh/.dsh-any-background-data/,不依赖localStorage。 - 中英双语界面 — 自动跟随宿主语言设置。
- 主题守护 — 宿主重置主题后自动重新激活自定义主题。
更新日志(只保留最近两个版本)
v0.4.3(跟到 dsh 0.2.1-rc.5 与新开的 0.2.2 线)
- 新增核对的宿主构建:
0.2.1-rc.4、0.2.1-rc.5、0.2.2-alpha.2。 rc.4/rc.5不改动任何东西。 把 rc.3 装机目录里 296 个@deepseek-ai/dsh-*包、5604 个产物文件逐个取哈希:跨到 rc.5 只有 30 个文件变过,且没有一个是本插件读的那张样式表——三处只是内联的版本号字符串,其余是宿主设置页标签的提示条改成按需弹出、以及思考过程正文插槽多传一个rawText。令牌、[class*="…"]类形状、z-index、data-slot一个都没动,于是两个构建并入v0-2-1的档位,判定从line升为exact。0.2.2是一条新补丁线,另开v0-2-2事实目录。 这一版动静大(1151 个文件改动、1709 个新增),但本插件声称的每一项事实逐条重读后仍然成立:_handle{z-index:11}/_leadingSeat{z-index:15}/_overlayLayer{z-index:20}逐字节一致(所以侧栏列z-index:1的上限和标题行z-10的论证照旧),菜单霜的四个令牌与 8 个--dsw-menu-backdrop-filter消费者不变,宿主仍在body上合成--dsw-font-family(字体规则的!important仍须胜出),5 个会话头部插槽键不变;本插件写到的 75 个宿主选择器全部还能命中。宿主侧的 peer 门禁实现逐字节未变。0.2.2上两处值得记下的宿主改动:--dsw-specific-sidebar-nav-item-hover被宿主删掉了(连它唯一的消费者一起),本插件仍会写这个令牌——写了没人读,且宿主自己本来也不再画那个悬停底色,相对宿主默认观感没有退步;ui-plugin-manager新增一处用「主界面」接管的那个令牌做底板(页面头部一条pointer-events:none的垫层),默认值下什么都不画,但这是「谁在读这个令牌」清单上新增的一行。- 兼容门禁新增一致性自检:
npm test现在会核对engines.dsh、六条 peer、dsh.compatibility.dsh四处是否点名了每一个已核对构建、是否都留着不设上界的尾巴,并核对lib/里确实带着这些构建与对应的渠道(改了src/忘了重新 bundle 会被直接抓住)。 - 装完或更新后请重启一次宿主——兼容门禁在组装 profile 时才跑。
v0.4.4(真机核对 0.2.2-rc.1 · issue #34 第三方登记与反馈 · issue #33 数值输入与区域高亮)
- 真机核对
0.2.2-rc.1。 在 launcherhomes/0.2.2-rc.1建隔离测试档(本地插件用 link,另装 dshmarket1.73.16/ dsh-better-sidebar0.30.1/ dsh-update-checker1.7.3)启动dsh web:兼容门禁放行,read回host.version=0.2.2-rc.1 / channel=0.2.2,配置写入与重读落盘一致;独立 headless Chrome 开机抓到 179 张style[data-plugin],三条「未登记」日志与 issue #34 逐字吻合。于是该构建进入四处门禁与dshReleases,判定从line升为exact。 - 适配层事实复核:三处证据字面量变了,但没有一处是规则输入。 逐个读该 tag 的 98 个
lib/client.js:_handle{z-index:11}/_leadingSeat{z-index:15}/_overlayLayer{z-index:20}、菜单令牌名、9 个--dsw-menu-backdrop-filter消费者、data-shimmer/data-shell-bottom/data-rightbar-col、会话头部插槽键全都还在。变的是--dsw-menu-surface-fill(#f8f9fa94/#43454a73→#fcfdfeb3/#303136a3)、--dsw-font-family(收成单条var(--dsh-font-family-text-default),仍是body声明,字体规则的!important照旧胜出)、以及--dsh-dockkit-float-top不再发出(本档不发 promotion,不受影响)。适配层只读令牌名,答案不变;细节记进v0-2-2/adapter.ts。像素级模糊/遮挡 A/B 仍未跑。 - issue #34:三家从「未登记」变成有结论。 补两条低风险钉值——dshmarket 的「任务」浮层(
--dsw-alias-bg-layer-1)与 dsh-update-checker 的两个按钮(--dsw-alias-bg-layer-2)——只重发令牌字面量,不动background/ 几何 / 磨砂;四个选择器名在该宿主产物里 0 命中。dsh-better-sidebar登记为已核对、故意不钉:它的整块面板正是「主界面」滑块要调的东西,替用户钉死等于把滑块拿走。钉值仍集中在一张-third-party动态表里,开关一撤到底。 - 反馈不再依赖控制台。 设置卡片逐行列出包名、状态与令牌,并有「复制诊断行」按钮(带宿主版本与开关状态);生产构建开不了 DevTools 也能一键复制,剪贴板不可用时给可手动选中的文本框。
- issue #33 的第 1、2 项。 ① 滑块数值可输入:每个滑块旁多了数字框,拖动时双向同步,越界收敛、空值不提交;仍走原来的零延迟 DOM 路径,不引入重渲染。② 悬停高亮对应区域:悬停任一模块卡片,会在真实界面上框出它管的区域。三列直接复用
setBlur/applyPartOpacities涂色的同一批节点,其余区域只用插件自己规则里的data-*标记与运行时标签,不写宿主节点、不碰第三方 z-index——只画一个fixed+pointer-events:none的描边层,鼠标离开或离开设置页即整层移除;位置靠捕获阶段的scroll/resize事件更新,不挂 rAF。配色复用插件自己的明暗判定器rScheme()(强制方向 > 主题色明度 > 壁纸亮度判定),取它的反色:暗界面铺白色半透明板、亮界面铺黑色半透明板,标签同样反色,全程纯中性黑白。既不碰从壁纸提取的--dsw-alias-brand-primary(换主题色就会撞背景),也不引入固定强调色(遇到同色壁纸照样撞)。色块以 2.4sease-in-out持续缓慢呼吸(填充 opacity 22% ↔ 100%,不是入场闪一下),动画只作用于填充伪元素,虚线和标签保持静止;prefers-reduced-motion下退化为静态色块,嵌套目标只画最外层以免透明度叠加。实测暗底白板 / 亮底黑板的亮度差0.243 / 0.240,反过来选错方向只有0.015 / 0;琥珀色壁纸上白 / 黑板分别0.067 / 0.178,都不撞色。当前页面没有该区域时明确提示,而不是画一个猜测的框,这也正是 issue 里「某些界面没有对话不会出现」的诚实答案。其余三项(逐模块注释、会话结束 token 用量模块、模型选择器子菜单)需要逐界面的结构探测,本版未做。 - 装完或更新后请重启一次宿主——兼容门禁在组装 profile 时才跑。
安装
方式一:npm 安装(推荐)
# 已发布到 npm registry
dsh plugin --profile web add dsh-any-background
# 或直接安装 GitHub 仓库
dsh plugin --profile web add github:Tkingxiao/dsh-any-background
然后启动:
dsh web
插件会出现在设置面板的 “主题” 分类中。
方式二:npx(无需全局安装)
npx @deepseek-ai/dsh plugin --profile web add dsh-any-background
npx @deepseek-ai/dsh web
方式三:本地构建(开发)
lib/ 目录已提交,安装后无需构建。修改 src/ 后重新构建:
git clone https://github.com/Tkingxiao/dsh-any-background.git
cd dsh-any-background
pnpm install
pnpm run bundle
pnpm dsh plugin --profile web add "dsh-any-background"
pnpm dsh web
兼容性
dsh web:0.2.0-rc.1~0.2.2-rc.1,其上所有版本一并放行。 门禁先逐一列出核对过的构建,再以不设上界的>=0.2.0-rc.1收尾。这是有意的:宿主强制的正是这份 peer 列表,范围没写到的版本会在导入任何模块之前被整行禁用——一条写到头的范围等于在一款还能工作的插件前面砌墙。(更准确地说:宿主app-boot的unmetRequirements在engines.dsh存在时只看它自己、忽略 peer,所以四处都要写、但真正决定加载的是engines.dsh。)没见过的构建怎么跑:取最近的一份事实,并在日志里写清它离
exact有多远。一份过期事实最坏的代价是某个滑块不再淡出宿主已经搬走的那个表面,而一道失败关闭的版本检查代价是整个插件。核对过的构建(
dsh.compatibility.dshReleases):宿主构建 事实目录 说明 0.2.0-rc.1v0-2-0-rc-1按 tag 逐包 diff 核实 0.2.0-rc.2v0-2-0-rc-2同上;这一版改了吸顶菜单分组标题取色的令牌,所以另开一份事实 0.2.1-alpha.1~0.2.1-rc.5v0-2-1事实未变,并入同一份;每个核对过的构建各占一行,判定为 exact。rc.4/rc.5的产物与rc.3逐个文件哈希一致0.2.2-alpha.2v0-2-2新开的补丁线,另开一份事实;逐条重读后答案与 v0-2-1相同(层级阶梯、菜单霜令牌、字体令牌、头部插槽键、75 个宿主选择器命中)0.2.2-rc.1v0-2-2真机核对:门禁 / RPC / 开机自检全过;98 个产物文件里规则输入全部仍命中,三处证据字面量变动已记进适配层注释;判定 exact0.2.2-rc.1之上沿用该行最近的核对结果 未核对的新构建取档位并写日志 版本事实按 release 隔离:宿主版本由 Node 半侧解析、随
readRPC 下发,样式与逻辑只向适配层提问(这块表面归谁、磨砂挂在哪一层、菜单该重写哪些令牌),不比较版本字符串;适配新宿主 = 新增一个版本目录并在注册表登记。安装或更新插件后仍需重启宿主:兼容检查发生在组装 profile 时,而不是插件更新时。依赖特定宿主结构的功能(右侧栏面板模糊、官方侧栏「主题」卡片)只在对应宿主上启用,其余功能在整个范围内表现一致。
0.1.5/0.1.6/0.1.7已移出兼容范围:那些事实目录断言的东西再没有核对过,而一张没人核对的表比没有表更糟;更旧的宿主会在组装期被明确拒绝,而不是被一份错的适配事实悄悄改版式。DSHA — DeepSeek Harness 安卓启动器(免 ROOT、免 Termux)。包内 dsh 为
0.1.5-rc.2,低于本插件的兼容下界:peer 门禁会在组装期拒绝它,插件在那上面根本不加载。deepseek-harness-desktop — 支持。Windows 专属行为(标题条带、原生按钮区)只在桌面壳上生效。
权限、副作用与边界
- 接入形态:官方 Profile Bundle——
package.json声明dsh.bundle.patch: ./cordis.patch.yml(loader 插入层),仓库直接提交可用的预构建产物(lib/index.js、lib/client.js)。无安装脚本、无 postinstall、无 native 二进制,安装时不执行任何构建。 - 文件系统:服务端只在
<dsh 主目录>/.dsh-any-background-data/内读写(配置、壁纸、轮换池、视频、字体),不触碰该目录之外的任何路径;配置写入为原子写(临时文件 + rename)。这些文件落在真实磁盘上,不受 generation 恢复影响、也不会被其回滚——删除该目录即彻底重置插件。 - 网络:只有当用户自己粘贴 http/https 图片或视频网址并点击「应用」时才发起一次出站下载;无遥测、无其它外部调用。
- Shell / native:无。不用
child_process、不加载 native 模块、不运行动态下载的二进制。 - HTTP 面:只在本机 dsh web 服务下注册
/dsh-any-background/{video,wallpaper,font}(GET/HEAD 流式)与对应*/upload(POST,上限 100 MB),以及专用 RPC 通道/dsh-any-background;不新增对外监听端口。 - 是否需要重启:首次安装后需(重新)启动
dsh web加载客户端 bundle;此后设置变更实时生效、自动落盘。更换插件版本需重启以加载新的lib/client.js。 - 测试与验证:
pnpm run typecheck(tsc 全量类型检查)、pnpm run bundle(tsdown 产出lib/)、npm test(起真实宿主半侧,跑「写盘 → 重读 → 档案」往返与上传围栏断言)。视觉类改动另有两条路径:本地 mock 页量 computed 值,以及在真实dsh web上逐个滑块实测。 - 已知限制:
- 样式依赖宿主 DOM 的稳定标记(如
[data-sidebar-right-panel])与 CSS 令牌名;宿主大版本重构样式层时选择器可能失效,表现为相关滑块不再作用于对应表面(只影响观感,不影响稳定性)。版本相关的那部分选择器集中在对应的版本目录里,宿主改版通常只需改那一份。 -webkit-text-stroke在部分单行省略号容器边缘约有 1px 裁切。- 有一条规则是对其它插件的有意让步:dsh-better-display 的吸顶车道用的正是「主界面」透明度接管的那个令牌,所以认出该插件后会把它钉在 20% 底板 + 30px 磨砂上、不随滑块;对方若改名,这条规则就匹配不到,车道回到它自己的画法。
- 样式依赖宿主 DOM 的稳定标记(如
Star History
许可
MIT
链接
同类插件
elysia395/dsh-wallpaper-engine★ 6657
前置要求:DeepSeek Harness 0.1.5-rc.1+(DSH Desktop ≥ 2.0.7)且 dsh-better-sidebar ≥ 0.19.0,安装或更新本插件前请先更新两者。把本机 Wallpaper Engine 的 Video/Web 壁纸实时播放到聊天界面后方,Scene 壁纸由内置渲染器输出完整场景帧,支持内容分级/类型过滤、自定义壁纸上传与 iOS 液态玻璃设置窗口。
Small-tailqwq/dsh-deep-whale#maid-atelier★ 3098
DSH Web 鲸鱼娘皮肤系列(深海女仆工坊 maid-atelier)。
Nwflower/dsh-claude-style★ 585
为 DSH Web GUI 复刻 Claude Code Desktop 的视觉与交互——象牙白/暖黑双画布、陶烬橙强调色、三字体排版、权限分段控件与品牌切换,以 CSS 覆盖与客户端 DOM override 实现。
d-dev0101/open-sea-skin★ 391
实时 WebGPU 海洋皮肤,可快捷调节波浪、日光、玻璃不透明度与自动昼夜循环。
kingOfSoySauce/dsh-liang-skin★ 387
自适应推理等级滑块皮肤,将当前模型可用档位映射到 0–30 视觉强度,并同步人物、背景和界面配色。
RevolutionLA/dsh-dream-skin★ 301
一键换肤插件:8 套原创主题、背景壁纸(透明度/模糊)、强调色、主题包导入/导出+分享链接、收藏与随机,纯原生 token 系统接入。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。