dsh-deep-whale/maid-atelier

1.2kStar41Fork26Issue2Watching

为 DSH Web 端换装"深海女仆工坊"皮肤:双女仆背景、深海蓝蕾丝 UI 与 Q 版侧栏,纯展示层。

语言
TypeScript
分支
main
dshdsh-plugin

安装

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

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

一句话定位

maid-atelier 是一套面向 DeepSeek Harness Web 端的展示型皮肤,把"深海女仆工坊"主题铺到对话背景、侧栏、装饰条和系统图标上。它不改任何 DSH 行为——不开新服务、不发 Cordis 事件、不碰模型请求——只是给 Web 界面换一身皮肤。

核心能力

  • 把对话区背景换成"双女仆工坊"插画,自动跟随系统亮/暗主题切换宫殿日景与夜景
  • 装饰可折叠侧栏:在侧栏四角嵌入蕾丝角饰、侧栏顶部挂一只 Q 版角色、给会话树节点补"工作区/会话行"标签
  • 为输入框(composer)加边框和底饰:着陆页有大幅角色,切换到对话页时角色以 560ms 动画退到安全边
  • 自动跟着 DSH 主题改 favicon、文档标题、系统 theme-color(深海蓝 #0b193f
  • 监听侧栏宽度的 ResizeObserver,实时同步 --maid-sidebar-width 等 CSS 变量,幕布随侧栏宽度"瞬移跟手"
  • 监听 DSH UI 变化(设置面板、对话激活、better-sidebar、cordis-panel 等)的 MutationObserver,自动在 body 上挂载/撤销对应状态属性,给 CSS 提供钩子

技术实现

  • 语言: TypeScript(同时被打成 ESM)
  • 关键依赖: @deepseek-ai/cordis(^4.0.1,对应 DSH rc.6+)、lightningcss(构建期编译 CSS Modules)、tsdown(构建打包)
  • 架构模式: Cordis ctx.effect 生命周期:apply() 启动时注册一个反激活器,DSH 卸载/热切换时一次性还原所有 DOM、CSS、Observer、document.title、theme-color
  • 入口文件: src/index.ts(仅 host 端无操作的占位);真正的实现是 src/client/index.ts,构建产物 lib/client.js(2.7 MB,已含所有素材 data URI)
  • 宿主注入: 通过 cordis.patch.ymlui-skin-maid-atelier 注册到 Web 插件名单,由 DSH 皮肤中心(dsh-skin)按 home-layer 互斥切换

适用场景

想把 DSH Web 端换成"鲸鱼娘"主题的动漫风格用户;只需要装饰不想动 DSH 任何行为的人;关心离线/隐私、希望素材全部本地化(无外网请求)的用户。前提是已经使用 DSH Web 端,并愿意在皮肤中心做一次勾选启用。

前置依赖与兼容性

依赖最低版本说明
DSH0.1.0-rc.6+peerDependencies 锁 @deepseek-ai/cordis ^4.0.1;源码注释明确针对 rc.6 的侧栏搜索行为做了兼容(src/client/index.ts:562)
Node未声明仓库不要求 Node;本皮肤只在浏览器端加载,构建由仓库所有者完成
平台跨平台dsh.client.platform = "web"(package.json:14-22),所有带现代浏览器的桌面/移动 OS 都可运行
原生模块全部素材以 data URI 内嵌进 client.js,不依赖任何 Node 原生模块或外部资源

安装方式

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

安装后还需要在 DSH 皮肤中心(dsh-skin)勾选启用该皮肤才会触发 apply()

配置项

本插件无需额外配置。所有"参数"都以皮肤内固定值写死在源码里(如系统 chrome 颜色 #0b193f、侧栏三档宽度断点 120/220px、ResizeObserver 节流等),皮肤中心只负责开/关二选一。

配置类型说明默认值
本插件无需额外配置

常见问题

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

A: 仅安装不会自动激活。打开 DSH 皮肤中心(dsh-skin),在皮肤列表里勾选"深海女仆工坊"即可生效;卸载同理,在皮肤中心取消勾选,反激活器会还原一切。

Q: 皮肤和 DSH 自带主题/其他第三方皮肤能并存吗?

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

Q: 桌面端(Electron)能装吗?

A: 不行。package.json 显式声明 dsh.client.platform: "web",皮肤只注入到 Web GUI;桌面壳走自己的宿主。

Q: 切换皮肤后设置面板打不开/侧栏宽度不变?

A: 多数情况是因为 DSH 仍在加载或 better-sidebar 等并发插件在改 DOM,触发了 MutationObserver 的恢复循环。刷新一次页面让两个插件的 Observer 都建立起来即可。

Q: 卸载后页面布局乱了?

A: 极少见,但理论可能:若在 apply() 还未完成时强制卸载,部分 body 属性可能没还原。重新启用再卸载一次可恢复。

Q: 浏览器关闭 WebGL 加速会怎样?

A: apply() 启动时 hasAcceleratedWebGL() 探测失败,会在 body 上挂 data-maid-low-power,CSS 走轻量渲染路径——视觉略有简化,主体功能不受影响。

Q: 暗色主题会自动切换吗?

A: 会。MutationObserver 监听 data-ds-dark-theme 属性变化,暗色时切换为宫殿夜景背景与对应装饰图层。

上手难度

入门 — 装好后在皮肤中心勾选一次即可,没有配置项、没有命令、没有快捷键,普通用户即可上手。

已知问题与限制

  • 在无 WebGL 加速或软件渲染的浏览器上,装饰效果会降级为"低功耗"路径(src/client/index.ts:163-178, 402)
  • 针对 DSH rc.6 的"侧栏搜索按钮在 click 同帧挂载 wide search 与 outside-click 监听"行为有兼容代码(src/client/index.ts:562-595),如果未来 DSH 修复该行为,rc.6+ 的工作区版本会跳过这段恢复逻辑
  • 皮肤全部素材内嵌进 lib/client.js(约 2.7 MB),首次安装需要下载/解压这个包
  • 严禁任何商业性使用,且必须保留三创署名链(详见 NOTICE);修改并再分发时须以相同方式共享
  • 开发构建需要在上游 dsh-web-ui 仓库的 skins/maid-atelier/ 目录下进行(README.md:35-45),本仓库只分发成品