dsh-background:为 DSH Web/Desktop 恢复整窗背景图

前言

DeepSeek Harness(DSH)在 0.2.x 里移除了旧版「设置 → 通用 → 背景图」。如果你习惯用一张本地图铺满界面、又让侧边栏和会话区保持半透明以便读正文,就需要自己补这一层能力。社区插件 dsh-background(维护者 waterc07,SkillHub 分类「趣味换装」)把该功能以 bundle 形式接回 DSH:选图、恢复默认、关闭背景都在右下角面板完成,状态写在 $DSH_HOME/dsh-background/,不依赖浏览器存储,也不受 Desktop 每次启动随机 loopback 端口的影响。

下面介绍插件定位、能力、安装步骤与日常使用;事实均来自项目 README 与 package.json(版本 1.0.0,MIT 许可)。

这是什么

dsh-background 是面向 DSH Web / Desktop web 客户端的背景图插件:任意 JPEG / PNG / WebP 可铺满整窗并固定不随内容滚动;左侧栏、会话列、内容列等大块表面会按浅色 / 深色主题自动半透明,正文对比度仍由罩层保证。插件只在本机 loopback 同源页面上通过 HTTP 路由读写本地文件,不发起外部网络请求,运行时无额外 npm 依赖。

核心功能

整窗背景与半透明

  • 背景由 CSS 变量 --dsh-wallpaper-image 驱动,cover + background-attachment: fixed 铺满窗口。
  • 浅色主题下罩层约 74% 主题底色,深色主题(data-ds-dark-theme)下约 55%;client 还会扫描列内大面积纯色块并按主题 token 做 color-mix(),卸载或「移除」时可还原。

右下角三步操作

点击右下角圆形按钮打开面板(再点、Esc 或点面板外关闭):

  1. 选择图片:从本地选图;浏览器端最长边缩至 2560px 并编码为 JPEG(质量从 0.9 逐步降到 0.58,直至不超过大小上限)。
  2. 恢复默认:删除自定义文件,回到随包分发的 assets/default.jpg。
  3. 移除:关闭背景,半透明表面恢复原样;已保存的 background.bin 仍保留在磁盘上。

面板内可预览当前背景,操作中有文字提示。

持久化与默认图

数据目录(未设置 DSH_HOME 时:Windows 为 %USERPROFILE%\.dsh\dsh-background\,macOS / Linux 为 ~/.dsh/dsh-background/):

$DSH_HOME/dsh-background/
├─ state.json       # {"mode":"default"|"custom"|"off","rev":<毫秒时间戳>}
└─ background.bin   # 自定义背景的原始字节

无自定义图时使用内置默认图;host 不可用时 client 回退到 bundle 内联的同一张默认图。

图片限制(README 表格)

项目 限制
原始文件 ≤ 40 MB,且为 image/*
缩放 最长边 ≤ 2560px
保存格式 JPEG(透明通道不保留)
存储 编码后 data URL ≤ 2,000,000 字符(约 1.5 MB,超出需换图)

插件没有用户可配置项;配置按 $DSH_HOME 共享,不区分 profile,也不支持轮播或多套主题。

安装与启用

环境要求:DSH 0.2.x(README 写明在 0.2.1-rc.3 验证);Web 或 Desktop 界面。TUI / headless 不加载 web client bundle,插件无效。本地改源码构建需 Node.js 18+;仅在 DSH 里运行插件不需要系统 Node。

官方 README 给出的安装流程如下(PowerShell 示例;路径随 DSH_HOME 或默认 %USERPROFILE%\.dsh 变化)。

1、放入插件目录

$dshHome = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $env:USERPROFILE '.dsh' }
$pluginDir = Join-Path $dshHome 'plugins\dsh-background'
New-Item -ItemType Directory -Force (Split-Path $pluginDir) | Out-Null
git clone https://github.com/waterc07/dsh-background.git $pluginDir

2、链接到 profile

将 $profileName 设为 desktop 或 web:

$profileName = 'desktop'
$profileDir = Join-Path $dshHome "profiles\$profileName"
New-Item -ItemType Junction -Path (Join-Path $profileDir 'node_modules\dsh-background') -Target $pluginDir

也可用 DSH 插件命令(内部通过 pnpm 建链):

dsh plugin --profile $profileName add $pluginDir

3、注册 bundle

编辑 $dshHome\profiles\<profile>\package.json:在 dependencies 中加入 dsh-background,并把 dsh-background 追加到 dsh.profile.bundles 列表末尾(顺序即层叠顺序):

{
  "dependencies": {
    "dsh-background": "link:../../plugins/dsh-background"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "...",
        "dsh-background"
      ]
    }
  }
}

通常无需再改 profile 的 cordis.patch.yml。

4、重启 DSH

完全退出并重新启动 DeepSeek Harness(或重新执行 dsh --profile desktop)。右下角出现背景按钮即表示加载成功。首次安装须完整重启;仅刷新页面不足以注册 host 路由。

卸载:删除 profile 下 node_modules\dsh-background 链接,并从 dependencies 与 bundles 中移除 dsh-background 后重启;确认不需要时可手动删除 $DSH_HOME/dsh-background/。

典型用法

经过上面的步骤启用后,日常只需操作右下角面板:

  • 需要个性化:点「选择图片」,选本地图,等待缩放与保存完成。
  • 想回到插件自带默认机甲赛事演示图(assets/default.jpg):点「恢复默认」。
  • 暂时不要任何背景、恢复不透明 UI:点「移除」。

若把 DSH Web 暴露到局域网或公网,背景相关 API 仅允许 loopback 同源访问,远程 origin 会收到 403,这是 README 中的已知限制。

Host 侧路由示例(仅供理解数据流,正常使用不必手调):

方法 路径 说明
GET /api/dsh-background/state 当前 mode 与 rev
GET /api/dsh-background/image 返回 JPEG 字节;off 时 404
POST /api/dsh-background/set body 为 dataUrl 设自定义图
POST /api/dsh-background/reset 恢复默认
POST /api/dsh-background/remove 关闭背景

适用场景与注意

适合谁:在 DSH 0.2.x 的 Web / Desktop 里希望恢复「整窗壁纸 + 半透明壳层」、且愿意把图片只存在本机 $DSH_HOME 的用户。

实现依赖:半透明逻辑绑定 DSH 内部类名(如 _frame、_sidebarCol)与主题变量;DSH 大版本若改样式结构,背景可能仍在但半透明需插件跟进。不提供裁剪、模糊、亮度调节;PNG / WebP 统一转 JPEG。

安全与信任:插件以当前 DSH 进程权限读写 $DSH_HOME/dsh-background/ 并通过 loopback HTTP 服务图片;安装前请自行审阅 源码与 MIT 许可证。SkillHub 目录页(waterc07/dsh-background)是社区插件索引,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」,本插件是其中一条可选扩展。

README 另说明:assets/default.jpg 为演示用照片,版权归原权利人,不在 MIT 范围内;公开分发前请确认授权或替换后执行 node scripts/build.mjs 重建 lib/。

结尾

dsh-background 用 host + client 两半 bundle 把 0.2.x 去掉的背景图能力补回来:右下角面板完成选图 / 默认 / 移除,数据落在 $DSH_HOME/dsh-background/,零运行时依赖、无外网请求。需要详情、截图与开发构建说明时,见 GitHub 仓库 waterc07/dsh-background 与 SkillHub 条目 https://www.skillhub.cn/plugins/waterc07/dsh-background。

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

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

Xiaoye