为 DSH Web 端换装"虎鲸链路"皮肤:珍珠白机械舱、黑曜虎鲸操作员与电蓝链路信号,纯展示层、不触达任何 DSH 服务。
- 语言
- TypeScript
- 分支
- main
安装
$ dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale/orca-link在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
orca-link 是一套面向 DeepSeek Harness Web 端的展示型皮肤,把"虎鲸链路"主题铺到对话背景、侧栏、状态角色与系统图标上。它不改任何 DSH 行为——不开新服务、不发 Cordis 事件、不碰模型请求——只是给 Web 界面换一身黑白机械风皮肤。
核心能力
- 全局直角契约:圆角归零、状态信号点与 favicon 全部正方形化,按钮/输入框/卡片/菜单/弹窗/提示/标签/头像/滚动条统一一套直线视觉
- 运行时图标重绘:命中宿主的 SVG 图标只追加直线图形层(不破坏原节点),卸载即整体还原;覆盖发送、停止、收件箱、待办三态、上下文用量、文件夹等十余种场景
- 亮/暗各一组 16:9 场景:空态角色和工作台画面以 640ms 交叉淡入淡出切换,素材以 data URI 内嵌到 client bundle
- 侧栏常驻状态角色:十状态(待机/同步/工作/授权/输入/审阅/完成/失败/离线/就绪)、多帧连续动作,复用会话状态自动驱动
- 峰谷定价红绿灯:按北京时间实时显色(09:00-12:00 / 14:00-18:00 为高峰、其前 10 分钟为切换窗口、其余为空闲),悬浮查看详情卡
- 输入框动效:英雄页→工作页以 560ms 交叉淡化、向上滚动自动隐藏、左右把手可拖拽折叠为还原小条
- 移动端自动隐藏大幅场景与舞台装饰;
prefers-reduced-motion时停掉角色逐帧动画与打字机
技术实现
- 语言: TypeScript(同时被打成 CJS bundle 以被宿主 module loader 加载)
- 关键依赖:
@deepseek-ai/cordis(^4.0.1,对应 DSH rc.6+)、lightningcss(构建期编译 CSS Modules)、tsdown(构建打包) - 架构模式: Cordis
ctx.effect生命周期:apply()启动时由 13 个独立控制器分别接管场景、图标、状态角色、定价灯、composer 动效/折叠、hero 打字机、侧栏搜索补全、窗口恢复提示抑制、terminal 性能、settings overlay 等;ctx.effect(() => () => {...}, 'ui-skin-orca-link: technical chrome')注册的统一反激活器一次性还原所有 DOM、CSS 变量、Observer、setInterval、document.title、favicon - 入口文件:
src/index.ts(仅 host 端无操作的占位apply());真正的实现在src/client/index.ts,构建产物lib/client.js(含全部素材 data URI) - 宿主注入: 通过
cordis.patch.yml把ui-skin-orca-link注册到 Web 插件名单,由 DSH 皮肤中心按 home-layer 互斥切换
适用场景
想把 DSH Web 端换成"虎鲸链路"黑白机械风皮肤、喜欢扁平/直角视觉的用户;只关心装饰不想动 DSH 任何行为的人;关心隐私、希望素材全部本地化(无外网请求)的用户。前提是已经使用 DSH Web 端,并愿意在皮肤中心勾选启用。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.6+ | peerDependencies 锁 @deepseek-ai/cordis ^4.0.1(package.json:28-30),与同仓 maid-atelier 一致 |
| 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/orca-link
安装后还需要在 DSH 皮肤中心(
dsh-skin)勾选启用该皮肤才会触发apply()。
配置项
本插件无需额外配置。所有"参数"都以皮肤内固定值写死在源码里(如 LINK 状态十档文案、定价高峰窗口 09:00-12:00 / 14:00-18:00、composer 折叠阈值 56%、侧栏宽度阈值 96px 等),皮肤中心只负责开/关二选一。
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| 无 | — | 本插件无需额外配置 | — |
常见问题
Q: 装上后界面没变化也没报错,怎么办?
A: 仅安装不会自动激活。打开 DSH 皮肤中心(dsh-skin),在皮肤列表里勾选"虎鲸链路"即可生效;卸载同理,在皮肤中心取消勾选,反激活器会还原一切。
Q: 皮肤和 DSH 自带主题/其他第三方皮肤能并存吗?
A: 不能。cordis.patch.yml 走 home-layer 互斥切换(wiring.id 为 ui-skin-orca-link),同一时刻只能激活一套皮肤。
Q: 桌面端(Electron)能装吗?
A: 不能。package.json 显式声明 dsh.client.platform: "web",皮肤只注入到 Web GUI;桌面壳走自己的宿主。
Q: "LINK ACTIVE" 那块小灯有时变绿有时变红,规则是什么?
A: 定价红绿灯按北京时间(UTC+8)实时显色:09:00-12:00 与 14:00-18:00 为高峰(红)、高峰开始前 10 分钟为切换窗口(黄)、其余时段为空闲(绿,定价为高峰一半)。切换时间仅在 09:00 / 12:00 / 14:00 / 18:00 四个边界发生(src/client/pricing-light.ts:24-77)。
Q: 在浏览器里切换暗色主题,皮肤会跟着变吗?
A: 会。settings-overlay.ts 里的 MutationObserver 监听 data-ds-dark-theme(src/client/settings-overlay.ts:46-55),暗色时切到对应的机械舱夜景与电蓝信号配色。
Q: 卸载后页面布局乱了?
A: 极少见,但理论可能:若在 apply() 还未完成时强制卸载,部分 body 属性可能没还原。重新启用再卸载一次可恢复。
Q: 浏览器开启了"减少动效"偏好,皮肤会停掉动画吗?
A: 会。状态角色和 headline 打字机会检查 prefers-reduced-motion: reduce,开启时状态角色停止逐帧切换、headline 直接显示完整文本(src/client/status-character.ts:318-322 / src/client/headline-typewriter.ts:40-41,69-73)。
上手难度
入门 — 装好后在皮肤中心勾选一次即可,没有配置项、没有命令、没有快捷键,普通用户即可上手。
已知问题与限制
- ResizeObserver 在极老浏览器(IE、早期 Safari 版本)不可用时,侧栏宽度联动会降级为仅依赖
--orca-sidebar-width初始值,缩放时 CSS 变量不更新(src/client/index.ts:171-175) - 切到后台再切回时浏览器会自动重放"激活"提示,皮肤会抑制侧栏 tooltip 直到用户主动移动指针/按键以避免误触发(src/client/window-resume.ts:8-46),但极个别浏览器不触发
visibilitychange时提示仍可能出现 - 皮肤全部素材内嵌进
lib/client.js,首次安装需要下载/解压这个包 - 严禁任何商业性使用,且必须保留完整署名链(详见
NOTICE);修改并再分发时须以相同方式共享 - 开发构建需要在上游
dsh-web-ui仓库的packages/skins/orca-link/目录下进行(README.md:35-45),本仓库只分发成品
DeepSeek Harness Web GUI 的鲸鱼娘主题皮肤系列(独立分发仓库)。
效果预览
点击图片可查看完整尺寸。
住户
| 皮肤 | 包名 | 说明 | 许可 |
|---|---|---|---|
| maid-atelier | @dsh-external/dsh-client-ui-skin-maid-atelier | 深海女仆工坊:双女仆背景、深海蓝蕾丝界面与 Q 版侧栏 | CC BY-NC-SA 4.0 |
| orca-link | @dsh-external/dsh-client-ui-skin-orca-link | 虎鲸链路:珍珠白机械舱、黑曜虎鲸操作员与电蓝链路信号 | CC BY-NC-SA 4.0 |
版权所有人
| 版权所有人 | 版权所有内容 | 对应皮肤 | 个人主页 |
|---|---|---|---|
| 上善 | 鲸鱼娘角色形象原作 | maid-atelier / orca-link | Pixiv · Bilibili(上善无形) |
| ZipZipPipe | 加入 DeepSeek 元素的女仆鲸鱼娘二次设计 | maid-atelier | Pixiv · Bilibili(ZipZipPipe) |
*反馈问题尽可能在 issue 中发起,而不是跑去联系上面两位老师。但是,看鲸鱼娘二创可以去关注一下,谢谢喵
安装
懒人版
对你的 dsh 说:
安装一下这个皮肤包:https://github.com/Small-tailqwq/dsh-deep-whale
dsh 会按 dsh-skin-install 技能走完整流程:列出全部皮肤、交代署名链与许可、用绝对路径注册并激活你选的那一套。
手动安装(推荐绝对路径)
git clone https://github.com/Small-tailqwq/dsh-deep-whale # clone 到任意位置
dsh plugin --profile web add <clone 的绝对路径>/maid-atelier # 深海女仆工坊
dsh plugin --profile web add <clone 的绝对路径>/orca-link # 虎鲸链路
Windows 示例(正斜杠与反斜杠均可,pnpm 会自动规范化):
dsh plugin --profile web add C:/Users/<你>/code/dsh-deep-whale/maid-atelier
相对路径的规则(容易踩坑)
- 相对路径(
./、../开头)按 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 # 应看到 @dsh-external/dsh-client-ui-skin-* 的 link: 依赖
dsh --profile web --dump-config # 皮肤行在组合配置中,disabled 状态正确
刷新浏览器页面即可看到皮肤;皮肤开关走配置热重载,无需重启 dsh(新增/删除插件包才需要重启)。
安装失败排查
| 现象 | 原因 | 处理 |
|---|---|---|
ERR_PNPM_FETCH_404 ... <名字> | 传了裸目录名(如 add maid-atelier),被当成 npm 包名 | 改为绝对路径或 .//../ 前缀路径 |
命令成功但 dsh plugin list 没有该包 | 相对路径解析到了错误位置(clone 位置与假设不符) | 用绝对路径重新 add |
pnpm not found on PATH | 环境缺少 pnpm | 安装 pnpm(npm i -g pnpm)后重试 |
| 包在列表里但页面无效果 | 皮肤被 disabled(多皮肤互斥开关)或浏览器未刷新 | --dump-config 核对 disabled;刷新页面 |
懒人版 · 自带技能
本仓库自带 dsh-skin-install 技能(.agents/skills/)。dsh 在仓库目录内运行时自动发现该技能;对你的 dsh 说"安装一下这个皮肤包"或"切换皮肤",它会列出仓库全部皮肤、询问你要激活哪一套,并交代作者署名链与许可边界后再安装。无需自行克隆到 dsh 源码里,皮肤开关走配置热重载,无需重启。
许可
本仓库各皮肤为衍生创作,整体以 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享)发布,禁止商业性使用。署名链见各皮肤 NOTICE。
皮肤工程脚手架来自 zhu1090093659/dsh-web-ui ,本仓库仅分发皮肤成品,不包含脚手架。



