# dsh-ui-web

> 为 dsh web GUI 提供「龙的传人」主题皮肤：双主题分别配不屈龙魂与万里长城画作，亮色朱砂 / 暗色鎏金龙印 favicon，不影响模型请求。

## Metadata

- Author: [@CAPTAIN1275](https://github.com/CAPTAIN1275)
- Repo: <https://github.com/CAPTAIN1275/dsh-ui-web.git>
- GitHub: [CAPTAIN1275/dsh-ui-web](https://github.com/CAPTAIN1275/dsh-ui-web)
- Stars: 34
- Language: TypeScript
- License: [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html)
- Topics: `dsh-plugin`, `dsh-plugin-market`, `dsh-plugins`
- Forks: 2
- Open Issues: 0
- Last push: 2026-08-16T18:08:27.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/skins/dragon-heir
```

## Wiki

## 一句话定位
「龙的传人（Dragon Heir）」是 dsh web GUI 的主题皮肤插件：把整套界面换上墨龙 / 长城双主题画作背景，配朱砂 / 鎏金两枚龙印 favicon，半透明面板让画作透出来。它只改变 DOM 外观，不影响模型请求和对话数据。

## 核心能力
- 在浏览器全视口挂载墨龙 / 长城双主题背景图（WebP base64 内嵌，无需联网下载）
- 跟随宿主基础主题实时切换亮 / 暗画作、scrim 遮罩与亮 / 对比度滤镜
- 把 dsh 主题色板重映射为「朱砂 / 鎏金 + 宣纸 / 青黛」双调色板（亮 / 暗双套）
- 让主面板等大面积表面变为半透明，背景透光
- 注入朱砂（亮）或鎏金（暗）的龙印 SVG favicon，替换浏览器标签页图标
- 关闭（dispose）时完整撤回：移除 body 属性、移除背景层、移除注入的 favicon
- 主动避开 backdrop-filter：避免固定定位覆盖层（如设置面板）被锁进父容器

## 技术实现
- **语言**: TypeScript + CSS Modules
- **关键依赖**: `@deepseek-ai/cordis`（仅类型导入，effect 生命周期）、`lightningcss`（CSS 编译）、`tsdown`（构建）
- **架构模式**: DSH 客户端皮肤半区插件；`apply(ctx)` 通过 `ctx.effect(...)` 注册 disposer，关闭时按 ThemePresenter 规范撤回所有写入；不注入任何 cordis 服务、不发事件；通过 `cordis.patch.yml` 在 bundle 层挂载 `ui-skin-dragon-heir` 行
- **入口文件**: `src/index.ts`（host 侧空壳）+ `src/client/index.ts`（核心逻辑，96 行）+ `src/client/art.ts`（画作与图标 base64 常量）

## 适用场景
喜欢中国风墨色画作与朱砂 / 鎏金配色的普通用户，把 dsh web GUI 换成更具东方韵味的视觉风格：亮色看墨龙穿云、暗色看长城暮色，面板带宣纸 / 青黛磨砂感。适合日常长时间使用、希望桌面氛围更沉稳的人群；不影响任何对话和模型行为。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | >= 0.1.0-rc.6 | 仓库使用官方 NPM SDK 包（`@deepseek-ai/cordis@^4.0.1`），与 `@deepseek-ai/dsh@0.1.0-rc.6` 对齐 |
| Node | 未声明 | 包内和仓库根 `package.json` 均未设置 `engines` |
| 平台 | 跨平台 | 仅作用于 DSH web GUI 浏览器端；macOS / Windows / Linux 均可运行宿主 |
| 原生模块 | 无 | 纯浏览器端实现，无 Node 原生模块依赖 |

## 安装方式

```bash
dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/skins/dragon-heir
```

或者一次性装齐所有皮肤（推荐）：

```bash
dsh plugin --profile web add @captain1275/dsh-skins
```

安装完成后还需要激活：

```bash
dsh-skin use dragon-heir
```

## 配置项
本插件无需额外配置。`apply()` 内部通过 `ctx.effect(...)` 自动注册 disposer，无需用户手动维护生命周期。皮肤不开放任何配置字段，画作、scrim、滤镜、favicon 都已硬编码到 `src/client/art.ts` 与 `src/client/dragon-heir.module.css` 中。

## 常见问题

**Q: 这个皮肤影响我的对话记录和模型请求吗？**

A: 不影响。它只修改浏览器 DOM（背景图、面板颜色、favicon），不注入任何 cordis 服务、不发请求、不触碰模型 API，也不会修改 KV Cache 行为。

**Q: 一次能同时启用多个皮肤吗？**

A: 不能。同一时刻只激活一个皮肤，切换时新皮肤接管、旧皮肤完整卸载；切换用 `dsh-skin use dragon-heir`。

**Q: 关闭后会留下痕迹吗？**

A: 不会。effect disposer 会撤回它写入的所有内容：移除 body 属性、移除背景层、移除注入的 favicon，原页面样式完整恢复。这点由 `tests/apply.spec.ts` 的「retracts everything on fiber dispose」用例守护。

**Q: 装了之后为什么界面没变？**

A: 仅安装到 profile 不等于已激活。还需要执行 `dsh-skin use dragon-heir` 才会套用该皮肤。

**Q: 支持深色模式吗？**

A: 支持。皮肤会跟随宿主基础主题切换：亮色主题显示墨龙「不屈龙魂」配朱砂龙印，深色主题显示「万里长城」配鎏金龙印；亮 / 暗切换通过 MutationObserver 监听 `data-ds-dark-theme` 实现，无需重新挂载。

**Q: 第一次安装需要先本地构建吗？**

A: 不需要。通过 git 链接安装时 `prepare` 脚本会自动构建 `lib/`；但 pnpm ≥10 首次安装 git 依赖可能需要把打印的包键加入 `pnpm-workspace.yaml` 的 `allowBuilds` 列表再重试。

**Q: 跟 aionui 右侧面板（文件树、Git Graph）会冲突吗？**

A: 不会。CSS 末尾专门处理 aionui 的 dialog、ref badge 与 Git Graph chip 选择器胶囊，把 token 重新映射到同色板（亮色朱砂、暗色鎏金），保持整体视觉一致。

**Q: 跟其它皮肤比有什么不一样？**

A: 这个皮肤的核心卖点是「墨龙 + 长城」双主题画作与朱砂 / 鎏金龙印配色；同仓库还有 aurora（极光，可换自定义背景图 / 视频）、blue-fantasy（鲸鱼娘靛蓝）皮肤，以及由聚合包 `@captain1275/dsh-skins` 打包的其它主题可选。

## 上手难度
入门 — 一条命令安装、一条命令激活，没有任何配置项，普通用户即可上手。

## 已知问题与限制
- 同一时刻只能激活一个皮肤；切换会完全卸载当前皮肤
- 故意不使用 `backdrop-filter` 模糊祖先元素：会破坏 fixed 定位覆盖层（如设置面板）的包含块，使其被锁在父容器内
- 墨龙 / 长城背景图均为内嵌 WebP base64，会增加少量 bundle 体积
- 当前源码内未发现 TODO / FIXME / HACK 等显式已知问题

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-ui-web](https://deepseek-plugin.org/plugins/CAPTAIN1275/dsh-ui-web/packages/skins/dragon-heir)
Wiki generated by AI (model: `MiniMax-M3`)
