open-sea-skin

185Star3Fork0Issue1Watching

为 DeepSeek Harness 提供实时 WebGPU 海洋皮肤与半透明玻璃界面,支持波浪大小、昼夜、玻璃透明度调节,所有资源本地运行、不上传数据。

语言
JavaScript
License
MIT
分支
main
chrome-extensiondeepseekdeepseek-harnessdshdsh-pluginocean-skinthemethreejs

安装

$ dsh plugin --profile web add github:d-dev0101/open-sea-skin

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

一句话定位

为 DeepSeek Harness 换上实时 WebGPU 大海背景与半透明玻璃界面,并把波浪大小、日光、玻璃亮度做成可即时调节的左下角快捷控制。

核心能力

  • 在 Harness 三个界面栏之后挂一张实时 WebGPU 海面(5 组 Gerstner 浪、FBM 细节、Fresnel 天空反射、太阳闪烁与白沫),并把整个 Harness 切换为半透明玻璃主题
  • 通过左下角按钮直接调波浪大小、白天/黄昏、自动昼夜循环与玻璃不透明度(40%–90%),拖动即时生效并自动保存
  • 12 分钟自动昼夜循环;手动拖动「日光」会让画面停在当前时间,再打开自动循环可继续
  • 一行 DSH 插件命令完成安装,并通过宿主路由 /open-sea-skin 提供皮肤所用的本地资源
  • 提供 Chrome/Edge 浏览器扩展、静态前端注入脚本与 Harness 源码集成三种备用安装方式,同一套 UI 与渲染器
  • 跨路径共用同一个 iframe 标识,避免 DSH 插件、扩展、静态安装器同时存在时出现重复渲染

技术实现

  • 语言: JavaScript(原生 ECMAScript 模块,少量 TypeScript 仅存在于 harness-plugin/ 源码集成路径)
  • 关键依赖: three.js 0.178.0(完整 modules + WebGPU 后端 + TSL,已 vendored)、DeepSeek Harness Host webServer、Cordis 注入点(cordis.patch.yml)
  • 架构模式: DSH 插件方式在宿主 webServer 上注册 /open-sea-skin 前缀路由读取 native-dist/ 静态资源;客户端再注入一个 iframe 加载 skin.html + ocean.js,并通过 postMessage 把偏好参数传给渲染器
  • 入口文件: plugin/index.js(Host 路由注册,plugin/client.js(浏览器客户端控制器,可选经 cordis.patch.yml 注入)

适用场景

想要让 DeepSeek Harness 看起来不再像普通后台、想加点活气的用户。装上后聊天界面背后会有持续起伏的海面,正午、下午、黄昏的金光会缓慢切换;同时想保留 Harness 原生视觉风格的人也可以降低玻璃不透明度,让背景当陪衬。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness0.1.0-rc.6插件在该版本实测通过;老版本界面层级可能与皮肤叠加冲突
Node.js(本地开发/构建)>=20仓库 engines 字段声明,仅构建脚本需要
浏览器(DSH 插件、扩展)Chrome 113+ / Edge 113+渲染依赖 WebGPU,且扩展 manifest.json 声明 minimum_chrome_version: 113
平台跨平台只要浏览器支持 WebGPU 即可,macOS / Windows / Linux 均无限制
原生模块全部为纯前端 JavaScript、three.js 与字体,无 node-pty / node:sqlite 等原生依赖

安装方式

dsh plugin --profile web add github:d-dev0101/open-sea-skin

配置项

配置类型范围说明默认值
启用皮肤开关开 / 关关闭后整片海面与玻璃界面都不显示开启
波浪大小数值滑块0–100越大浪越高、间距越密45
日光位置数值滑块0–1000 为黄昏、100 为正午;拖动后停止自动循环55
玻璃不透明度数值滑块40%–90%调节 Harness 卡片、侧栏的半透明程度72%
自动昼夜循环开关开 / 关开启时按 12 分钟节奏缓慢推进日光开启
渲染质量(仅原生 Harness 集成)选项auto / low / high自动检测低性能设备并降级网格与帧率auto

偏好存在浏览器本地:DSH 插件与静态安装器用 localStorageossEnabledossSeaossTimeossGlassossAutoCycle;浏览器扩展改用 chrome.storage.sync;原生源码集成则用 Harness 自己的设置服务。

常见问题

Q: 这个插件需要 WebGPU 吗?老一点的电脑能用吗?

A: 需要。皮肤的海面完全跑在 WebGPU 上,没有 WebGPU 时背景不会显示,只剩玻璃配色。系统会自动识别低性能设备并降低网格精度与帧率,无需手动调节。

Q: 插件会收集或上传我的对话内容吗?

A: 不会。three.js、字体与所有渲染资源都打包在本地,没有任何 CDN、遥测或分析接口。偏好只存到浏览器的本地存储或宿主设置服务。

Q: 装上 DSH 插件后左下角按钮没出现怎么办?

A: 先确认 dsh webdsh plugin add 指向同一个 profile,然后重启 dsh web 进程并做一次浏览器硬刷新。DSH 插件、浏览器扩展、静态安装器三种方式不要同时启用,会有重复渲染拦截。

Q: 怎么彻底卸载?

A: DSH 插件用 dsh plugin --profile web remove open-sea-skin;浏览器扩展在 chrome://extensions(Edge 在 edge://extensions)里移除;静态安装器用 --uninstall。本地偏好只是孤立数据,删除不影响其他功能。

Q: 必须用 DSH 插件方式吗?还有别的安装途径吗?

A: 不是必须。仓库还提供 Chrome/Edge 浏览器扩展(仅作用于 127.0.0.1 / localhost 上的 Harness)和一次性 curl 注入脚本(直接改 Harness 已构建的前端),以及把皮肤原生接入 Harness 源码的集成方式。

Q: 自动昼夜循环可以关掉吗?

A: 可以。手动拖「日光」滑块就会停在当前时间并自动关闭自动循环;想恢复只需再次开启自动循环开关即可。

Q: 浏览器扩展会影响其他本地开发网站吗?

A: 不会。扩展只匹配 127.0.0.1 和 localhost,并且在注入前会校验页面标题、root 节点与服务端启动标记,确认是 DeepSeek Harness 后才挂皮肤,其他本地项目保持原样。

Q: 玻璃不透明度能调到多低?

A: 范围固定 40%–90%,默认 72%。这是为了在深色与浅色主题下都保留足够的文字对比度,避免玻璃完全透明造成可读性问题。

上手难度

入门 — 单条 DSH 插件命令即可启用,左下角按钮提供图形化控制,不需要配置环境或阅读源码。

已知问题与限制

  • 浏览器扩展最低支持 Chrome 113 / Edge 113,更早版本直接无法加载扩展(来源:extension/manifest.json:7
  • DSH 插件安装后必须重启 dsh web 进程并刷新一次浏览器,否则左下角按钮不会显示(来源:docs/dsh-plugin.md:30-32
  • 静态安装器必须在 Harness 停止状态下执行,且执行后需重新启动 dsh web;如执行后浏览器提示 Failed to load plugins,先确认 Harness 进程是否仍在运行(来源:README.md:115-118
  • 三种安装方式(DSH 插件、浏览器扩展、静态安装器)共享同一份 iframe 标识,但建议只启用一种,避免排查时混淆状态(来源:docs/dsh-plugin.md:46-52
  • 自动昼夜循环没有独立的总开关 UI,必须通过手动拖动「日光」并再启用反向动作恢复(来源:shared/skin-core.js:333-339
  • 渲染器只接受来自 window.parent 与预期父域名的 postMessage 消息,其他来源的指令会被忽略(来源:docs/architecture.md:84-90
open-sea-skin — DeepSeek Harness 插件 | deepseek-plugin.org