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。

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

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

小夜