DeepSeek Harness plugin

dsh-bestui

Adaptive wallpaper and appearance studio for the DeepSeek Harness Web UI, with image-derived light/dark palettes, colors, blur, fonts, radius, opacity, and scaling.

Jump to install

Source facts

Repository
BPZ0726/dsh-bestui
Latest update
Aug 17, 2026
Category
Just for Fun
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/BPZ0726/dsh-bestui
Plugin: dsh-bestui
Author: BPZ0726

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

BestUI · 壁纸主题插件

![License: MIT](LICENSE) ![Node](package.json) ![npm](https://www.npmjs.com/package/dsh-bestui) ![CI](https://github.com/BPZ0726/dsh-bestui/actions/workflows/ci.yml)

> 给 DeepSeek Harness Web GUI 的背景主题插件(又名 *壁纸主题 / Wallpaper theme*)。 > A background theme plugin for the DeepSeek Harness Web GUI, a.k.a. 壁纸主题.

> 预览版提示 / Preview: BestUI 0.1.x 面向仍在快速迭代的 DeepSeek Harness > Developer Preview,宿主升级后可能需要同步适配。

---

功能特性 / Features

  • 🖼 上传图片当背景 / Wallpaper upload:本地选图即用,超限图片自动压缩(降采样 + JPEG 重编码),动画 GIF 保留动画,设置持久保存在浏览器 localStorage
  • 🪟 透明部件不透明度 / Per-surface opacity:背景基底 / 第二层表面 / 侧边栏各配独立滑块与「默认」勾选;数值越小壁纸透出越多。其余表面固定不透明(颜色仍可自定义)。
  • 🎨 元素颜色自定义 / Per-element colors:14 个设计 token(表面 / 边框 / 品牌色 / 主次文字 / 状态色)+ 9 个额外元素色(悬停 / 选中按下 / 滚动条 / 提示气泡等),每个都按 浅色 / 深色 两套方案分别取色,边框按 shell 同款透明度渲染。

- 颜色自定义与「启用」开关无关:关闭壁纸后自定义配色仍然生效。 - 「恢复默认配色」= 产品 design-platform 原始色板(逐值一致),旧方案自动迁移。

  • 自动配色 / Auto palette

- 有背景图 → canvas 采样(32×32 降采样 + 色桶统计),浅色方案取自图片亮部、深色方案取自暗部,并按图片明暗自动切换浅/深主题; - 无背景图 → 中性配色与产品默认一致,随系统深浅自动切换。

  • 🔤 字体与界面 / Fonts & interface:字体风格 / 字重 / 字体大小(纯文字缩放,不动控件)/ 文字色相;界面缩放、按钮 / 输入框 / 卡片 / 设置窗口圆角、设置窗口宽高,全部带「默认」勾选。
  • 📤 方案导出 / 导入 / Scheme export & import:一键导出完整方案为 JSON(壁纸、配色、字体、圆角、不透明度),导入整体替换并完整校验迁移。
  • ♻️ 停用易恢复 / Unload-safe styling:视觉效果基于 theme.overrideTokens 覆盖层 + 受控样式标签,不注册第三方主题 id;停用/卸载会移除样式覆盖,可与其它主题插件并存。若曾按壁纸明暗自动切换主题,主题偏好需在宿主设置中手动切回。

截图 / Screenshots

> TODO:在此处添加 设置 → 常规 → 壁纸主题 的效果截图(建议浅色/深色各一张,另附壁纸透出示意)。

快速上手 / Quick Start

node scripts/build.mjs   # 重新生成 dist/ 两个 bundle(零依赖,无需 npm install)
node test/smoke.mjs      # 28 项冒烟测试

> 要求 Node.js ≥ 18(使用 Node.js 24 验证)。构建与测试零第三方依赖

安装 / Installation

方式 A:从 npm 安装(推荐)

dsh plugin --profile web add dsh-bestui

重启 dsh web 后生效,此后每次启动自动加载。

方式 B:从 GitHub 安装

dsh plugin --profile web add github:BPZ0726/dsh-bestui

方式 C:本地开发目录安装

dsh plugin --profile web add "<path-to-this-repo>"

dsh plugin add 未自动写入,在 ~/.dsh/profiles/web/cordis.patch.yml 中追加:

- id: ui-wallpaper-theme
  name: 'dsh-bestui'

方式 D:现场预览(动态 Cordis 包,免重启)

在带 cordis 工具预设cordis_define / cordis_run)的会话里:

1. cordis_defineplugin.kind = "new"idPrefix 用 3–6 位小写字母(如 wpthe), code.client 填 [dist/dynamic-client.js](dist/dynamic-client.js) 的完整原文(不要改写); code.host 可省略——本插件是纯浏览器插件。 2. cordis_run 运行返回的 pluginId/packageId;客户端包首次运行需在页面右上角 Cordis 面板点一次批准。 3. 到 设置 → 常规 查看「壁纸主题 · BestUI」设置行。

> 动态包在页面刷新后不自动恢复(在 Cordis 面板对该包点一次「加载回来」即可);设置本身在 > localStorage(key:dsh-wallpaper-theme/v1)不丢失。永久化请走方式 A。

使用说明 / Usage

打开 设置 → 常规,在「外观」下方找到「壁纸主题 · BestUI」:

1. 勾选 启用,点 上传图片(支持 JPG / PNG / WebP / GIF;动画 GIF 保留动画)。 上传后自动给三个表面一组推荐透明度,可再逐个调整;图片控件含适应方式、位置、模糊、变暗/提亮。 2. 透明部件不透明度:右侧「默认」= 完全不透明跟随产品;取消勾选后拖滑块,数值越小壁纸透出越多。 3. 元素颜色:每个元素两栏取色器(浅 / 深),分别对应浅色与深色方案;「交互与滚动条」组 的取色器右侧数字是透明度(0–1)。颜色设置与「启用」无关,关闭壁纸后配色仍生效。 4. 自动配色(默认开):上传图片后自动按图生成配色并按图片明暗切主题(可关「上传后跟随图片 明暗切换主题」);想回到内置观感点「恢复默认配色」。 5. 导出方案 / 导入方案:导出 JSON 存档或迁移到另一台设备;导入会整体替换当前方案。 6. 改动即时生效并写入 localStorage,刷新页面后保留;「全部重置」清除壁纸与所有自定义。

> 隐私提醒:导出的 JSON 包含完整壁纸数据。分享方案文件前,请确认壁纸不含私人照片、 > 路径、账号信息或其他不希望公开的内容。

English quick usage: enable → upload an image; per-surface opacity sliders with a "default" checkbox; per-element light/dark color pickers; auto palette from the image (or neutral when no image); export/import your whole scheme as JSON.

架构与兼容性 / Architecture & Compatibility

主题服务(dsh-client-ui-theme)会把当前主题的 alias token 内联写到 body 上。本插件 不注册新主题 id,而是调用 ctx.theme.overrideTokens(source, tokens) 叠加一层 token 覆盖层——它组合在任意当前生效主题之上(light / dark / system / 其它第三方主题),并由 fiber 保证「卸载即撤销」。背景层是 position: fixed; z-index: -1 的 div( data-dsw-wallpaper),半透明表面色(rgba)叠在它上面让壁纸自然透出;明暗切换由 body[data-ds-dark-theme] 纯 CSS 翻转,不依赖事件订阅。额外元素色(shell 未纳入 token 注册表的变量)通过独立样式标签直接声明在 body + !important,避免被宿主 body 级同名声明覆盖。

同一份零 import 源码(lib/runtime.js + lib/ui.js)由 scripts/build.mjs 生成两种形态:

形态文件用途
静态预编译 bundledist/client.js方式 A 永久安装,宿主原样提供
动态客户端半区dist/dynamic-client.js方式 B Cordis 现场预览
  • 浏览器兼容:仅用广泛能力(rgba、canvas 2d、FileReader、React 18

useSyncExternalStore、CSS 变量);不支持的路径全部静默降级。

  • 持久化localStorage 按 origin 隔离;超限图片自动压缩到 ~2MB 以内;私密模式降级为内存态。
  • 并存:与注册主题 id 的插件(如 infinity)不冲突——未启用且配色未改动时不注册任何覆盖层。

目录结构 / Project Layout

dsh-bestui/
├── package.json              # dsh.client 清单(platform: web, inject: theme/slots)
├── lib/
│   ├── index.js              # 宿主空插件(浏览器专用,占位让客户端名录收录)
│   ├── runtime.js            # 纯逻辑核心:颜色数学、图片采样、配色生成、store、运行时
│   └── ui.js                 # 设置行 React 组件工厂(createUi(React, api))
├── scripts/
│   ├── build.mjs             # 生成 dist/ 下两个 bundle(零依赖)
│   └── verify-spill.mjs      # 发布校验:cordon inspect 溢出 JSON ↔ dist 逐字节比对
├── test/smoke.mjs            # 冒烟测试(node test/smoke.mjs)
├── dist/                     # 构建产物(随仓库提交,可直接取用)
│   ├── client.js
│   └── dynamic-client.js
├── docs/HANDOFF.md           # 模型会话内部交接文档(如何现场加载/修改插件)
├── .github/workflows/ci.yml  # 每次 push/PR 自动 build + smoke
└── CHANGELOG.md              # 版本历史

开发 / Development

node scripts/build.mjs                # 重新生成 dist/ 两个 bundle
node test/smoke.mjs                   # 逻辑 + 双 bundle 挂载冒烟测试
node scripts/verify-spill.mjs <spill.json> dist/dynamic-client.js  # 发布前逐字节校验
  • lib/runtime.jslib/ui.js 保持零 import(动态半区无法 import;静态 bundle 只从

shell 共享模块表取 react)。

  • 改完核心必须重跑 builddist/ 是产物,宿主直接提供该文件,不会现场编译)。
  • 发布新版本:改 lib/*buildtest → 用 cordis_define(kind: "existing")追加

Package → cordis_run 更新 → 用 verify-spill.mjs 校验字节一致。详见 docs/HANDOFF.md

版本历史 / Changelog

见 [CHANGELOG.md](CHANGELOG.md)。当前公开预览版为 0.1.0

许可 / License

[MIT](LICENSE) © 2026 BPZ0726