dsh-deep-whale
简体中文 · English · Tiếng Việt
DeepSeek Harness Web GUI 的鲸鱼娘主题皮肤系列(独立分发仓库)。
效果预览
点击图片可查看完整尺寸。
| 皮肤 | 亮色模式 | 暗色模式 |
|---|---|---|
| maid-atelier | ![]() |
![]() |
| orca-link | ![]() |
![]() |
住户
| 皮肤 | 包名 | 说明 | 许可 |
|---|---|---|---|
| maid-atelier | @smalltailqwq/dsh-client-ui-skin-maid-atelier |
深海女仆工坊:双女仆背景、深海蓝蕾丝界面与 Q 版侧栏 | MIT (code) / CC BY-NC-SA 4.0 (artwork) |
| orca-link | @smalltailqwq/dsh-client-ui-skin-orca-link |
虎鲸链路:珍珠白机械舱、虎鲸娘角色与电蓝链路信号 | MIT (code) / CC BY-NC-SA 4.0 (artwork) |
| skin-manager | @smalltailqwq/dsh-client-ui-skin-deep-whale-manager |
通用皮肤发现、切换与皮肤自声明配置面板 | MIT |
版权所有人
| 版权所有人 | 版权所有内容 | 对应皮肤 | 个人主页 |
|---|---|---|---|
| 上善 | 鲸鱼娘角色形象原作 | maid-atelier / orca-link | Pixiv · Bilibili(上善无形) |
| ZipZipPipe | 加入 DeepSeek 元素的女仆鲸鱼娘二次设计 | maid-atelier | Pixiv · Bilibili(ZipZipPipe) |
*反馈问题尽可能在 issue 中发起,而不是跑去联系上面两位老师。但是,看鲸鱼娘二创可以去关注一下,谢谢喵
安装
一行安装(推荐)
**先确认发行版:**下面的命令只用于直接运行 DSH 的 standalone 环境。若已安装
@linxin666/dsh-web-all(dsh-web),请改从 dsh-web 自带的皮肤中心/安装入口安装其maid-atelier与orca-link适配版;不要在同一 profile 中再叠装本仓库的 standalone 包,否则组件与样式契约不一致,界面可能显示异常。
三个发行包(皮肤管理器 + 两套皮肤)已发布到 npm。未指定 dist-tag 时安装稳定的 latest,无需 clone。
Linux / macOS / WSL:
dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-deep-whale-manager' && dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-maid-atelier' && dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-orca-link'
PowerShell(用 ; 分隔命令):
dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-deep-whale-manager'; dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-maid-atelier'; dsh plugin --profile web add '@smalltailqwq/dsh-client-ui-skin-orca-link'
只想用其中一套皮肤时,把不需要的那行删掉(skin-manager 建议保留,切换与互斥都靠它)。
首次安装是新增插件包,需要重启一次 DSH。重启时 skin-manager 会检测“两套皮肤同时启用”并自动原子回退到官方默认,所以首次安装不会出现皮肤叠加窗口;随后打开「设置 → 皮肤管理」点击目标皮肤「切换」即热重载生效,此后切换不再需要重启,也不需要 AI 参与。
需要直接跟随 GitHub
main时,也可用github:Small-tailqwq/dsh-deep-whale#path:/<子目录>(需要 pnpm ≥ 9);本地开发见独立子包安装。npm、GitHub 与本地 link 是同一包名的不同来源,混用时以最后一次add为准。
更新
Linux / macOS / WSL:
dsh plugin --profile web update @smalltailqwq/dsh-client-ui-skin-deep-whale-manager @smalltailqwq/dsh-client-ui-skin-maid-atelier @smalltailqwq/dsh-client-ui-skin-orca-link
PowerShell(@ 开头 token 建议加引号):
dsh plugin --profile web update '@smalltailqwq/dsh-client-ui-skin-deep-whale-manager' '@smalltailqwq/dsh-client-ui-skin-maid-atelier' '@smalltailqwq/dsh-client-ui-skin-orca-link'
npm 依赖默认跟随 latest;update 重新解析该标签当前指向的版本。GitHub 依赖则重新解析仓库最新提交。也可以不带包名执行 dsh plugin --profile web update(更新 profile 全部依赖,只装了本仓库皮肤时效果相同)。bundle 内容更新走配置热重载;只有新增/删除插件包才需要重启。
从旧占位 scope 迁移
0.1.3 之前从 GitHub 安装的版本使用 @dsh-external/* 依赖键;它只是本项目过去的源码占位符。必须先移除三个旧键,再运行上面的 npm 一行安装,否则 DSH 可能同时保留两组插件身份:
dsh plugin --profile web remove '@dsh-external/dsh-client-ui-skin-orca-link'
dsh plugin --profile web remove '@dsh-external/dsh-client-ui-skin-maid-atelier'
dsh plugin --profile web remove '@dsh-external/dsh-client-ui-skin-deep-whale-manager'
随后重启一次 DSH。皮肤偏好按 maid-atelier / orca-link 的 skin id 保存,不会随 npm scope 改名。
懒得敲命令?让 AI 装
把下面这段话发给任意 AI(或 dsh 本体)即可。INSTALL.md 是标准安装入口:AI 会读到它后引导到仓库自带的 dsh-skin-install 技能——普通安装执行的是上面这一行命令,迁移旧安装、本地开发、测试指定提交等场景则按技能流程处理(预置互斥、绝对路径 link、冷启动验证),比手敲更稳。
读取 https://github.com/Small-tailqwq/dsh-deep-whale/INSTALL.md 并按其中的指引安装本仓库皮肤
皮肤互斥机制(必读)
- 先分清:
skin-manager不是皮肤,而是皮肤管理器(提供发现、切换与定制面板),需要常驻启用;互斥的对象是皮肤本身——本仓库的皮肤是 maid-atelier 与 orca-link。 - 皮肤启停由 patch 层控制:profile 的
~/.dsh/profiles/web/cordis.patch.yml与 home 层的~/.dsh/cordis.patch.yml里各自的- id: <wiring.id>+disabled: true/false行(两层都要写,home 层优先级更高)。 - patch 里没有某皮肤行的
disabled行 → 该皮肤默认启用。所以只装一套皮肤时它开箱即用;一次装两套、又从未切换时它们会同时运行:装饰层互相叠加、侧栏/设置区被搅乱,典型症状是设置按钮消失、侧栏宽度/布局异常、界面混乱(原版正常)。 - 互斥由 skin-manager 兜底:一行安装同时注册三包,首次重启时管理器合并 profile→home 两层状态,检测到实际同时启用两套及以上皮肤 → 自动原子回退到“官方默认”并写入互斥行;已有零套或一套启用的合法选择不会被改写。无需在安装前手工预置。
- skin-manager(设置 → 皮肤管理)激活时会自动把互斥行写入两个 patch 层;手写时“只保留一套”必须显式停用其余每一套。
- 安装了皮肤管理器后,皮肤定制项(如“不那么二次元模式”的可见时段)保存在当前浏览器,由管理器统一应用。
独立子包安装(本地开发与弱网备用)
普通用户不需要使用本节:npm 一行安装无需 clone。本节用于本地开发、指定提交测试,或 registry 网络不可用时。npm/GitHub 依赖与本地 link 针对同一包名,用哪种就执行哪种,不要混跑。
git clone --depth 1 https://github.com/Small-tailqwq/dsh-deep-whale # clone 到任意位置(浅克隆足够,跳过历史)
node <clone 的绝对路径>/.agents/skills/dsh-skin-install/scripts/stage-mutual-exclusion.mjs --profile web --target maid-atelier
dsh plugin --profile web add <clone 的绝对路径>/skin-manager # 常驻皮肤管理面板(推荐)
dsh plugin --profile web add <clone 的绝对路径>/maid-atelier # 深海女仆工坊
dsh plugin --profile web add <clone 的绝对路径>/orca-link # 虎鲸链路
第一条
node命令是可选优化:它在plugin add前把目标皮肤设为唯一启用项,使第一次启动直接就是目标皮肤;保留非皮肤 YAML,不整文件覆盖 patch。跳过它也安全——首次启动时 skin-manager 兜底会回退到官方默认,进「设置 → 皮肤管理」切换即可。要默认启用虎鲸则把 target 改成orca-link,要保持原版则改成official。
方式 A(推荐):设置 → 皮肤管理 → 点击要用的那一套「切换」。管理器自动把互斥 disabled 行写入两个 patch 层并热重载,刷新页面即可。
方式 B:手写两个 patch 层。把下面的行追加到 ~/.dsh/profiles/web/cordis.patch.yml 和 ~/.dsh/cordis.patch.yml(两者缺一不可,home 层覆盖 profile 层):
# 示例:只启用 maid-atelier;改为 orca-link 时把 false 移到它那行,两套皮肤只能有一套是 false
- id: ui-skin-maid-atelier
disabled: false
- id: ui-skin-orca-link
disabled: true
- id: ui-skin-deep-whale-manager
disabled: false
若 patch 文件还是 dsh 的默认模板(注释 + 一行
[]),请用上面的列表整体替换[]那一行——“注释 +[]+ 其他条目”是非法 YAML,配置解析会失败(服务器会保留上一个可用配置继续运行,修复后并刷新即可)。
Windows 示例(正斜杠与反斜杠均可,pnpm 会自动规范化):
dsh plugin --profile web add C:/Users/<你>/code/dsh-deep-whale/skin-manager
dsh plugin --profile web add C:/Users/<你>/code/dsh-deep-whale/maid-atelier
装多了 / 出现异常怎么办
症状:设置按钮消失、侧栏被装饰层覆盖或宽度异常、界面混乱(停用皮肤后恢复)。
- 打开 设置 → 皮肤管理,点击「官方默认」或任一皮肤——管理器会自动写互斥行并热重载,刷新即可恢复;
- 管理器不可用时(或配置已被写坏):运行上方
stage-mutual-exclusion.mjs,用--target official或目标皮肤恢复两个 patch 层; - 也可以直接摘掉不用的包:
dsh plugin --profile web remove <包名>,摘除后同样检查互斥行。
相对路径的规则(容易踩坑)
- 相对路径(
./、../开头)按 dsh 命令的调用目录解析,不是皮肤仓库目录。 - 不要直接写裸目录名:
dsh plugin --profile web add maid-atelier会被当作 npm 包名去 registry 拉取而 404 失败。请用./maid-atelier(已在皮肤仓库目录内)、../dsh-deep-whale/maid-atelier(与 dsh-deep-whale 同级)或绝对路径。 cd <harness>后用../dsh-deep-whale/maid-atelier的前提是 dsh-deep-whale 与你的 harness 目录同级;clone 到别处时相对路径会 link 到错误位置(命令不报错、但皮肤不生效)。不确定就用绝对路径。
安装后验证
dsh plugin --profile web list # 应看到三个 @smalltailqwq/dsh-client-ui-skin-* 依赖
dsh --profile web --dump-config # manager 行 disabled: false;两套皮肤互斥:skins 恰一套 false
一行安装后、尚未重启前
--dump-config的状态取决于你的 patch 层:干净环境下两套皮肤都还没有互斥行(默认启用,是正常过渡态——首次重启时 skin-manager 兜底回退并写入互斥行);若 home 层残留过互斥行(之前装过本仓库皮肤又卸载),则直接沿用该状态。冷启动后还必须在浏览器控制台检查 client roster(仅有配置 entry 不代表浏览器包已注册)。启动页 HTML 必须引用 manager 与启用皮肤的/plugins/<真实包名>/client.js;不同 DSH 版本载体不同(旧版在window.__DSH_BOOT__JSON 里,0.1.1rc2+ 是直接<script src>标签),下面这条两种版本都能用:
document.documentElement.outerHTML.match(/\/plugins\/@smalltailqwq\/[^"'\s]+/g) ?? []
结果必须包含 manager 与当前启用的皮肤包名;被停用的皮肤可以不出现。刷新浏览器页面即可看到皮肤;皮肤开关走配置热重载,无需重启 dsh(新增/删除插件包才需要重启)。
常见安装失败排查
| 现象 | 原因 | 处理 |
|---|---|---|
ERR_PNPM_FETCH_404 |
npm 包名/GitHub spec 拼写错误、网络不可用,或独立子包用了裸目录名 | 正式安装复制上方 npm 包名;开发 link 使用绝对路径 |
The matching commit.../无法解析 ref |
pnpm < 9,#path: 子目录语法不被支持 |
升级 pnpm 到 ≥ 9(npm i -g pnpm@latest) |
ERR_PNPM_EXOTIC_SUBDEP |
尝试安装会再带 Git 依赖的“根包/聚合包”(pnpm 11 安全策略,本仓库不提供此类包) | 按本页 npm 一行命令安装三个发行包 |
pnpm not found on PATH |
环境缺少 pnpm | 安装 pnpm(npm i -g pnpm)后重试 |
| 包在列表里但页面无效果 | 皮肤被 disabled(多皮肤互斥开关)或浏览器未刷新 |
--dump-config 核对 disabled;刷新页面 |
| PowerShell 命令不完整/报错 | # 未加引号被当注释截断 |
spec 一律单引号包裹 |
贡献者
感谢以下开发者对 dsh-deep-whale 的贡献:
有价值但未合入的 PR
以下 PR 因与现有上游实现冲突未能合入,但其功能需求已在仓库中落地,特此致谢:
- @yaoyiqun — 按所选模型切换角色位置(#15)
- @Chartreuse310 — 对话区衬线字体(#22)
- @Vergemesh — 原版/鲸鱼娘皮肤即时切换(#27)
- @joejojoking-cloud — top-trim 装饰层级(#26)、字符舞台层级(#31)修复
许可
项目自有代码采用 MIT,许可范围见 LICENSE。美术资源保留原作者版权与既有授权:两套皮肤的全部美术(包括 AI 生成及加工的图片)按 CC BY-NC-SA 4.0 使用,禁止商业性使用,署名链见各自 NOTICE,许可正文见 LICENSE-ARTWORK。图片即使嵌入源码、CSS 或构建产物,也不属于 MIT 授权范围。第三方材料保留其适用许可;历史版本已授出的权限不因本说明而撤销。
皮肤工程脚手架来自 zhu1090093659/dsh-web-ui,本仓库仅分发皮肤成品,不包含脚手架。




