# open-sea-skin

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

## Metadata

- Author: [@d-dev0101](https://github.com/d-dev0101)
- Repo: <https://github.com/d-dev0101/open-sea-skin.git>
- GitHub: [d-dev0101/open-sea-skin](https://github.com/d-dev0101/open-sea-skin)
- Stars: 185
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Homepage: <https://d-dev0101.github.io/open-sea-skin/>
- Topics: `chrome-extension`, `deepseek`, `deepseek-harness`, `dsh`, `dsh-plugin`, `ocean-skin`, `theme`, `threejs`, `webgpu`
- Forks: 3
- Open Issues: 0
- Last push: 2026-08-19T03:29:16.000Z
- Added: 2026-08-19T00:00:00.000Z

## Install

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

## Wiki

## 一句话定位
为 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 Harness | 0.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 等原生依赖 |

## 安装方式
```bash
dsh plugin --profile web add github:d-dev0101/open-sea-skin
```

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

> 偏好存在浏览器本地：DSH 插件与静态安装器用 `localStorage` 键 `ossEnabled`、`ossSea`、`ossTime`、`ossGlass`、`ossAutoCycle`；浏览器扩展改用 `chrome.storage.sync`；原生源码集成则用 Harness 自己的设置服务。

## 常见问题

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

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

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

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

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

A: 先确认 `dsh web` 与 `dsh 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`）

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [open-sea-skin](https://deepseek-plugin.org/plugins/d-dev0101/open-sea-skin)
Wiki generated by AI (model: `MiniMax-M3`)
