dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH自定义主题:可自行修改背景图片,主题色,表情包与文案。基于[dsh-vesna-theme](https://github.com/Mahiru0427/dsh-vesna-theme)
为 DeepSeek Harness Web / Desktop 制作的独立可自定义主题插件。出厂外观是延续原项目(Mahiru0427/dsh-vesna-theme)的青蓝与奶白的明暗双色,配一整张角色壁纸和六个卡通表情;这套外观的每一项都可以改成你自己的。
壁纸、明暗两套配色、欢迎语、主题名称与描述、浅色/深色的名字、六个表情与它们的名字全部可以自定义,并且可以导出/导入配置文件。
设置 → 通用 → 卡片下方有三个折叠区:
折叠区 · 可改内容 配色自定义 · 浅色与深色各 19 个颜色项,用十六进制色值(`#rrggbb`)直接改,左边色块实时预览,右边是这一项的名字。最后三项是三个辅助色(辅助色1 / 辅助色2 / 辅助色3,出厂值分别是珊瑚粉、淡金、淡紫)。改过的项会高亮,可单项清除,也可整组恢复。 文案与名称 · 主题名称、主题描述、欢迎语(默认「找我什么事呀,亲爱的朋友~」)、浅色名称(默认「春日浅色」)与深色名称(默认「夜宴深色」)。留空即回到内置文案。 图片与表情 · 全窗口壁纸,以及六个表情槽位(比耶→新会话、思考→欢迎区、读书→文件入口、疑惑→负面评价、点赞→正面评价、爱心→发送)。每个槽位可单独选图、单独改名字、单独恢复默认。
卡片底部:导出配置 / 导入配置 / 恢复默认配置。自定义的名称会同时出现在配色分组的标题、明暗切换按钮和表情图库上。
勾选「全窗口壁纸」后,卡片上多一个聊天框效果开关:
关掉「全窗口壁纸」,或点「默认配色」,上述效果一起撤下,原生界面完全回来;系统关闭透明效果时会自动调整。
配色输入框接受 #a1b2c3 也接受 a1b2c3:
导出得到 dsh-custom-theme-.json:
{
"format": "dsh-custom-theme",
"version": 1,
"palette": { "light": { "accent": "#227c89" }, "dark": {} },
"title": "", "description": "", "greeting": "找我什么事呀,亲爱的朋友~",
"modeNames": { "light": "春日浅色", "dark": "夜宴深色" },
"stickerNames": ["比耶", "", "", "", "", ""],
"images": { "wallpaper": "data:image/webp;base64,...", "stickers": ["data:...", null, null, null, null, null] }
}内容 · 位置 启用开关、壁纸/表情开关、聊天框效果 · localStorage 键 dsh-custom-theme.preference.v1 配色、文案与名称 · localStorage 键 dsh-custom-theme.custom.v1 壁纸与表情图片 · IndexedDB 数据库 dsh-custom-theme,对象仓库 assets
上传的图片会先在 canvas 里缩放并重新编码(壁纸最长边 2560,表情最长边 320,优先 WebP 以保留透明通道),再存入 IndexedDB。图片不会上传到任何服务器。
dsh plugin --profile web add github:km5473/dsh-customizable-theme发布到 NPM 之后也可以直接按包名安装(插件中心收录的是这种形式):
dsh plugin --profile web add dsh-customizable-themedsh-customizable-theme-0.1.3.tar.gz,你也可以复制项目主页让dsh帮你装。从旧名字的版本升级的话:先在旧版里导出配置,装好新包、重启,确认外观无误后再把旧插件移除,然后导入配置文件。启用开关与明暗偏好归 DSH 自己保存,重启后仍然保留。
dsh-customizable-theme,然后重新打开窗口。自定义记录留在本机,重新安装会沿用。ThemeRuntime.overrideTokens(source, { light, dark }) 覆盖 --dsw-alias-* 令牌,插件不替换程序文件、不改 DOM 结构。useSyncExternalStore 读控制器的不可变快照,所有状态只有一份。raised,所以运行中看着发灰;这条规则单独把该状态指到强调色(悬停用强调悬停色,图形用强调前景色)。它挂在 body[data-dct-theme] 上,跟着主题开关走,选「默认配色」时一切还原。node scripts/build.mjs # 生成 lib/client.js(内嵌素材,无运行时依赖)
node tests/controller.test.mjs # 状态、持久化与配置校验
node tests/plugin.smoke.mjs # 打包产物:真实渲染设置卡片
node scripts/verify-served-bundle.mjs <已安装的 lib/client.js> [origin] [entry-id]plugin.smoke.mjs 会用一个假的模块加载器把 lib/client.js 真正跑起来:解码内嵌素材、装配插件、渲染设置卡片的各种状态、检查卡片用到的每个文案键都存在于词典里,还要求卡片渲染出的每个 class 在 card.css 里都有规则(否则界面会静默掉样式)。部署前请让它先通过。
verify-served-bundle.mjs 复算宿主用来做缓存版本号的那串 sha1,再比对宿主实际返回的字节,因此「旧文件被当成新版」不可能蒙混过关。DSH 的网页服务需要启动时打印的带 token 链接才能打开首页,但插件包本身的路由不受影响,所以这个脚本不需要 token。
node scripts/build.mjs 可以把同一份代码构建成另一个模块 id,用于在过渡期让已启动的会话继续拿到新功能。
源码在 src,预构建产物在 lib,无新增 npm 依赖:
文件 · 职责 src/palette.js · 出厂配色、颜色校验、令牌层构建 src/config.js · 配置文件的构建与校验(纯函数,可测) src/controller.js · 状态、持久化、图片、覆盖层 src/image-store.js · IndexedDB 存取、上传图片处理 src/art.js · 壁纸/表情 CSS、按钮预览、欢迎语替换 src/glass.js · 聊天框高斯模糊(含开关标记与标记扫描)、高级模糊环、信息栏胶囊 src/client.js · 设置卡片与插件装配
data-composer-stats 标记,统计信息改成 _pill 胶囊。信息栏胶囊改挂宿主的 data-composer-dock,并要求 dock 里真有统计胶囊才绘制,空 dock 不会出现空胶囊;旧宿主的标记保留兜底。dsh-custom-theme 已被其他项目占用;本地存储键与导出格式沿用旧名,已调好的外观不会丢。原作者B站主页Cyrefirefly
本项目由上游主题改名而来,并在基础上扩展了配色与文案自定义、表情命名、配置导入导出;原项目的版权归原作者所有,MIT 许可的完整条款见 LICENSE。
这是非官方主题。MIT 许可仅适用于本插件代码,不包含角色名称与角色图像的权利。