Back to home

Vim0x3c

dsh-skin-appearance

DeepSeek Harness 外观定制插件:八套内置主题 + 自定义壁纸(透明度/模糊),Host 设置持久化 | Appearance plugin for dsh web

Stars
2
Language
TypeScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-skin-appearance

English | 中文

这是一个面向 DeepSeek Harness 的外观插件。 它保留 Harness 原生控件,只在设置中增加「外观定制」页面,提供:

  • DeepSeek 娘、QQ2008 水晶蓝、云海实验室、山海算境、深海星港、深海鲸歌和两套智能星图,共八套内置主题;
  • 本地背景图片选择,并在写入设置前自动缩小压缩;
  • 从上传图片自动提取主色、辅色、面板色和文字色,并联动浅色/深色外观;
  • 独立的背景透明度和模糊控制,默认透明度 100%、模糊 0 px;
  • 由 Host 设置文档支持的跨重启持久化;
  • 一键还原原生 Harness 外观。

主题预览

DeepSeek娘·深海回响QQ2008·水晶蓝
DeepSeek娘主题QQ2008主题
云海实验室山海算境
云海实验室主题山海算境主题
深海星港深海鲸歌
深海星港主题深海鲸歌主题
智能星图·墨智能星图·曦
智能星图墨主题智能星图曦主题

安装

插件是一个 dsh bundle,可以用 Harness CLI 安装到 web profile:

dsh plugin --profile web add /path/to/dsh-skin-appearance
dsh web

包中的 dsh.bundle.patch 会把插件加入 profile 的配置层。下次启动 Web 时,dsh.client 声明会让 Harness 发现浏览器 bundle,设置页面中就会出现「外观定制」。

如果插件已经发布到包仓库,可以把本地路径换成包名:

dsh plugin --profile web add dsh-skin-appearance

实现说明

Node 半边通过 Harness settings 服务注册 appearance 设置命名空间。浏览器半边通过 ctx.theme 注册调色板,通过 settings.section slot 注册设置页,并维护一个覆盖整个应用根节点的背景图片层。会话区、左侧工作区和右侧详情区使用不同强度的半透明表面,让同一张壁纸贯穿整个界面。背景层不使用 backdrop-filter,而是用渐变和半透明表面维持文字对比度,避免流式输出和滚动时触发整页重复合成。

上传图片会先解码,再按长边 1600 像素上限压缩成 JPEG data URL;独立的 48 像素采样画布会提取主色、色相分离的辅色、可读面板色和文字色,并判断应使用浅色还是深色外观。预设配色由 Harness theme runtime 管理,选择「默认」会交还内置的跟随系统偏好。

开发

这个目录采用 Harness 独立 client 插件的构建结构:

pnpm install
pnpm build

要在 Harness 源码 checkout 中联调,先构建 Harness,再把本目录安装到 web profile:

cd /path/to/deepseek-harness
pnpm install
pnpm build
dsh plugin --profile web add /path/to/dsh-skin-appearance
dsh web

Harness 服务被声明为 peer dependency,确保插件和宿主共用同一个 Cordis、settings、theme、React 实例,避免浏览器 bundle 内联出重复的服务身份。

许可证

MIT。