它到底是什么
Deep Whale 是给 DSH Web GUI 用的皮肤与素材包,不是给 Harness 增加行为的代码插件。README 把它描述为鲸鱼娘主题皮肤系列的独立分发仓库:它改变的是界面的样子——配色、角色插画、装饰层与侧栏处理——并没有宣称带来新的 Agent 能力、工具或服务。
这个定位决定了后面每一条该怎么读。安装 Deep Whale 更接近装一套主题,而不是装一个功能,它的打包方式也印证了这一点。
三个包,以及那个不是皮肤的包
这个仓库并不只发一个包。下面每一项都是独立子目录,各自有包名,需要分别安装:
maid-atelier——@dsh-external/dsh-client-ui-skin-maid-atelier,README 描述为「深海女仆工坊」:双女仆背景、深海蓝蕾丝界面与 Q 版侧栏。orca-link——@dsh-external/dsh-client-ui-skin-orca-link,描述为「虎鲸链路」:珍珠白机械舱、虎鲸娘角色与电蓝链路信号。skin-manager——@dsh-external/dsh-client-ui-skin-deep-whale-manager,一个通用的皮肤发现、切换与皮肤自声明配置面板。
README 明确写着 skin-manager 不是皮肤,而是控制面板;它建议保留这个包,因为切换与互斥都靠它。真正的皮肤只有 maid-atelier 与 orca-link 两套,会互相冲突的也只有这两套。
装之前必读:皮肤默认启用,而且互斥行要写进两个文件
这是 README 标为必读的操作陷阱。皮肤的启停由 Cordis patch 层里的 disabled 行决定:patch 里没有某皮肤行的 disabled 行,该皮肤就默认启用。所以只装一套皮肤时它开箱即用;而一次装了两套、又从未切换过,它们就会同时运行。
README 对后果写得很具体:装饰层互相叠加、侧栏与设置区被搅乱,典型症状是设置按钮消失、侧栏宽度与布局异常、界面混乱(原版界面是正常的)。让两套皮肤同时启用不是审美偏好问题,而是一个坏掉的界面状态。
因此安装时必须补上互斥行:两套皮肤里必须有一套是 disabled: true,README 的说法是至多只能有一套是 false。管理器提供了兜底:一行安装后首次重启时,它合并 profile 层与 home 层的状态,检测到实际同时启用了两套皮肤,就自动原子回退到官方默认并写入互斥行。此前合法地启用零套或一套的选择不会被改写,所以全新安装不会出现皮肤叠加窗口,也无需在安装前手工预置互斥行。
如果你要自己补互斥行、或者事后修复它们,改的就是这里。管理器会同时写入两个 patch 层:~/.dsh/profiles/web/cordis.patch.yml 与 home 层的 ~/.dsh/cordis.patch.yml,其中 home 层优先级更高。README 说两层缺一不可,手工编辑也必须往两个文件里追加。
写入的行形如「id + disabled 布尔值」,例如把 maid-atelier 的 wiring id 设为 false、把 orca-link 那行设为 true。README 说明它保留非皮肤的 YAML,而不是整文件覆盖 patch,同时警告:要把默认模板里单独一行 [] 整体替换成列表——「注释 + [] + 其他条目」是非法 YAML,配置解析会失败,此时服务器会保留上一个可用配置继续运行,修好并刷新即可。
运行要求与重启规则
- 需要 pnpm ≥ 9。
#path:子目录语法从 pnpm 9 才开始支持,README 说 pnpm 8 会把path:规格当作 commit 引用而报错。 - 三个包以 GitHub 依赖形式直接安装,无需 clone;README 说也可以用本地 clone 目录替代,用于本地开发或弱网环境。但 GitHub 依赖与本地 link 针对的是同一批包名,混用会以最后一次安装为准。
- 首次安装、以及新增或删除插件包时需要重启。 切换皮肤不需要重启:经「设置 → 皮肤管理」点击切换即热重载,再刷新页面即可。
- 安装前把目标皮肤设为唯一启用项的那条脚本是可选优化;跳过它也安全,因为管理器首次启动时会兜底回退到官方默认。
- README 给的验证路径是:先确认 profile 里出现三个
@dsh-external/*依赖,再核对 dump 出来的配置;冷启动后还要在浏览器控制台确认启动页确实引用了管理器与当前启用皮肤的client.js——它特别提醒,仅有配置 entry 并不代表浏览器包已经注册。
已知限制与失败模式
README 给出的是排查表,而不是「一路顺畅」的承诺。GitHub 规格拼写错误、网络不可用、或本地安装时直接写裸目录名,都会表现为 404 类拉取失败。相对路径按你执行命令的目录解析,而不是皮肤仓库目录;裸目录名会被当成 npm 包名去 registry 拉取而失败,必须写成 ./maid-atelier、../dsh-deep-whale/maid-atelier 或绝对路径。在 Windows 上,没有加引号的 # 会被当作注释截断。
有两件事 README 没有说明,请不要自行假设:它没有给出支持的 DSH 版本范围,也没有针对 Harness 升级的发布说明或兼容性政策;遥测有没有,同样只字未提。皮肤改的是界面外框,而这恰好是上游 UI 变动最容易打破的部分,所以每次 Harness 升级都应当目视核对,而不是默认无事。
许可:代码 MIT,美术不可商用
这个拆分很重要,也很容易搞错。仓库自有代码是 MIT,美术资源不是。两套皮肤的全部美术——包括 README 说明为 AI 生成及加工的图片——按 CC BY-NC-SA 4.0 使用,禁止商业性使用。README 还写明:图片即使嵌入源码、CSS 或构建产物,也不属于 MIT 授权范围,所以分发构建结果并不能绕开美术条款。署名链见各自皮肤的 NOTICE,许可正文见 LICENSE-ARTWORK。README 同时把角色形象归功于具名原作者,并请求把问题发到 issue,而不是去联系这两位;它还说明皮肤工程脚手架来自另一个项目,本仓库只分发成品,不含脚手架。
什么时候用它、什么时候不要用
如果你想让自己这套 DSH Web GUI 变成这个系列的样子,并且清楚自己装的是装饰而不是能力,那就用它——同时用管理器,并保持恰好一套皮肤启用。
不要在已安装 @linxin666/dsh-web-all(DSH Web)的环境里叠加本仓库的包。README 在这一点上很直接:DSH Web 环境请改从该 bundle 自带的皮肤中心安装它的 maid-atelier 与 orca-link 适配版,不要在同一 profile 中再叠装本仓库的 standalone 包,否则组件与样式契约不一致,界面可能显示异常。如果你需要商业性使用这些美术、无法升级 pnpm、或者不愿意维护 patch 里的互斥行,就跳过它——也请记住,这个包只决定界面长什么样,Harness 本身的运行并不依赖它。
FAQ
可以两套皮肤同时启用吗?
不可以。patch 里没有 disabled 行就代表该皮肤默认启用,所以装了两套却从未切换时它们会同时运行,README 报告的后果是界面损坏:设置按钮消失、侧栏宽度与布局异常。管理器会在首次重启时检测到这一点,自动原子回退到官方默认并写入它需要的互斥行——而原本合法的「零套或一套启用」的选择不会被改写。
这些美术可以用在商业项目里吗?
不可以。仓库代码是 MIT,但两套皮肤的全部美术——包括 AI 生成及加工的图片——采用 CC BY-NC-SA 4.0 且禁止商业性使用;README 明确说明图片即使嵌入源码、CSS 或构建产物也不属于 MIT 授权范围。署名信息在各自皮肤的 NOTICE 文件中。
它会修改 DSH 本体吗?
不会改 DSH 源码。它往 Cordis patch 层写入 disabled 行,profile 层与 home 层两个文件都要写,并保留非皮肤的 YAML;开关入口在管理器的「设置 → 皮肤管理」。
启用皮肤之后需要重启吗?
切换本身不需要。只有首次安装、以及新增或删除插件包时才需要重启;此后切换皮肤是热重载,刷新页面即可。
可以和 DSH Web 一起装吗?
不要以 standalone 包的形式一起装。如果已经安装了 @linxin666/dsh-web-all,README 要求改用该 bundle 皮肤中心里的 maid-atelier 与 orca-link 适配版,而不是把本仓库的包叠进同一个 profile。