dsh-deep-whale/orca-link

1.5kStar50Fork21Issue2Watching

为 DSH Web 端换装"虎鲸链路"皮肤:珍珠白机械舱、黑曜虎鲸操作员与电蓝链路信号,纯展示层、不触达任何 DSH 服务。

语言
TypeScript
分支
main
dshdsh-plugin

安装

$ 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.ymlui-skin-orca-link 注册到 Web 插件名单,由 DSH 皮肤中心按 home-layer 互斥切换

适用场景

想把 DSH Web 端换成"虎鲸链路"黑白机械风皮肤、喜欢扁平/直角视觉的用户;只关心装饰不想动 DSH 任何行为的人;关心隐私、希望素材全部本地化(无外网请求)的用户。前提是已经使用 DSH Web 端,并愿意在皮肤中心勾选启用。

前置依赖与兼容性

依赖最低版本说明
DSH0.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.idui-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),本仓库只分发成品
dsh-deep-whale/orca-link — DeepSeek Harness 插件 | deepseek-plugin.org