dsh-deep-whale

1.2kStar41Fork26Issue2Watching

DSH Web 端"深海女仆工坊"主题皮肤:双女仆背景、深海蓝蕾丝 UI 与 Q 版侧栏,纯展示层,激活即生效,卸载即复原。

语言
TypeScript
分支
main
dshdsh-plugin

安装

$ dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

dsh-deep-whale 是鲸鱼娘主题皮肤系列仓库,当前收录一套"深海女仆工坊"(maid-atelier)皮肤,用于改造 DeepSeek Harness Web 界面的视觉外观,让对话背景、侧栏、图标与配色统一为深海蓝+女仆主题。

核心能力

  • 替换对话区背景为双女仆工坊场景(亮模式宫殿日景 / 暗模式宫殿夜景自动切换)
  • 装饰可折叠侧栏:Q 版鲸鱼娘角色、蕾丝边框、底部装饰条与导航栏装饰
  • 改造设置对话框、输入框容器、轨迹/检查视图,提供对应的装饰框与状态钩子
  • 替换浏览器 favicon 与窗口标题栏(Web App 标头颜色设为深海蓝)
  • 内嵌 11 个素材到 client bundle(base64 data URI),激活不依赖任何远程 URL/资源服务器/临时文件
  • 通过 dsh-skin 实现皮肤中心互斥切换、热重载,卸载即复原(DOM、CSS、title、theme-color 全部恢复)

技术实现

  • 语言: TypeScript(ESM + CJS 双输出)
  • 关键依赖: @deepseek-ai/cordis ^4.0.1(插件宿主框架);tsdown 0.22.14(构建 bundle);lightningcss ^1.32.0(在 tsdown 插件中处理 CSS Modules)
  • 架构模式: 客户端皮肤插件(client-only skin)。仅在浏览器端加载(dsh.client.platform: web),无 host 侧服务、无 Cordis 事件、无模型请求;通过 cordis.patch.yml 在 web 插件白名单中插入 ui-skin-maid-atelier 条目,由皮肤中心/dsh-skin 互斥调度
  • 入口文件: src/index.ts(host 端 stub,apply() 为空);src/client/index.ts(真正的 apply(ctx),实现所有 DOM/CSS 装饰与生命周期管理)

适用场景

希望 DSH Web 桌面看起来不那么"工具感"、喜欢二次元动漫风格的普通用户。如果你正在使用 DSH 0.1.0-rc.6 或更高版本、希望换一套不依赖网络的静态主题皮肤、并想要对原版界面"加滤镜"而不是改造功能,本插件是合适的选择。

前置依赖与兼容性

依赖最低版本说明
DSH0.1.0-rc.6+源码引用了 rc.6 行为(src/client/index.ts:562),皮肤中心走 home-layer 互斥切换(cordis.patch.yml:4)
@deepseek-ai/cordis^4.0.1运行时由宿主注入,本仓库不直接安装(package.json:29, peerDependencies)
平台跨平台浏览器端皮肤,依赖 DOM 与 ResizeObserver/WCO API;不支持 Native shell 端
原生模块全部素材以 data URI 内嵌进 client.js,无需原生二进制

安装方式

dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale

配置项

本插件无需额外配置。皮肤元数据由仓库内的 skin.json 声明(id/名字/作者/配色/预览/wiring),载入后通过 data-dsh-maid-atelier 作用域标识(skin.json:17)作用于 body 元素,与皮肤中心/dsh-skin 互斥切换(skin.json:19-22, wiring.id=ui-skin-maid-atelier)。本插件没有独立的用户级配置项。

常见问题

Q: 这个皮肤包能装在 DSH 桌面端吗?

A: 不能。package.json 声明 dsh.client.platform: web(package.json:21-22),皮肤只在浏览器端加载;桌面壳走另一套宿主,本仓库的皮肤挂不到上面。

Q: 皮肤装上后和官方皮肤/其他第三方皮肤能并存吗?

A: 不能。皮肤中心走 home-layer 互斥切换(cordis.patch.yml:4),它的 wiring.idui-skin-maid-atelier,同一时刻只能激活一个皮肤。

Q: 安装后界面没有变化也没有报错,怎么办?

A: 皮肤要靠皮肤中心/dsh-skin 勾选启用。仅把插件包装进 DSH 不会让 apply() 跑起来;按 README 在皮肤中心勾选 maid-atelier 即可(maid-atelier/README.md:21)。

Q: 皮肤会拖慢 DSH 吗?需要联网吗?

A: 不会拖慢,也不会外联。所有 11 张 webp(背景、角色、装饰)由 tsdown 在 build 阶段转成 data URI 内嵌进 lib/client.js(maid-atelier/README.md:8-11),激活皮肤时不请求任何远程 URL 或资源服务器。

Q: 浏览器没启用 WebGL 加速会怎么样?

A: apply() 启动时会检测加速 WebGL(try webgl2 / webgl with failIfMajorPerformanceCaveat),若没有就给 body 加 data-maid-low-power 标识(src/client/index.ts:163-178, 402),CSS 走更轻的 CPU-safe 路径,视觉上略有简化但仍可用。

Q: 卸载会留下垃圾吗?

A: 不会。apply() 通过 ctx.effect 注册的反激活器(src/client/index.ts:349-391)会恢复所有 body 属性、移除所有 [data-skin-chrome] 节点、还原 body 样式、还原 document.title、断开所有 MutationObserver / ResizeObserver / windowControlsOverlay 监听。

Q: 可以商用吗?需要署名吗?

A: 不可商用,且必须保留完整署名链。皮肤以 CC BY-NC-SA 4.0 发布(package.json:27),禁止商业用途;署名链包含原作上善、二创 ZipZipPipe、本仓三创 Small-tailqwq(NOTICE:1-25)。

上手难度

入门 — 安装后启用即生效,不需要任何配置或代码改动;底层 icon/CSS/DOM 装饰全部由 apply() 自动接管。

已知问题与限制

  • 在 DSH 0.1.0-rc.6 工作台"窄搜索栏"展开/折叠瞬间偶发重置焦点为此前的折叠态:本皮肤通过 requestAnimationFrame 重投递一次点击和 focus(src/client/index.ts:562-595)兼容该行为;更高版本已自带保持,新版本下该通道自动失效。
  • 无加速 WebGL 的浏览器或低功耗设备:装饰元素走简化路径,整体视觉表现略弱于完整效果(src/client/index.ts:163-178, 402)。
  • 桌面封装端(Naitive shell)无法挂载此皮肤:本仓库只分发 Web 端(package.json:21-22)。
  • 素材为二次/三次衍生作品,受 CC BY-NC-SA 4.0 限制,不可商用、二创必须以同协议共享(NOTICE:24-25)。