Skip to content
dsh.fish
Bundle

dsh-fgo-chaldea

FGO Chaldea-inspired skin pack for DeepSeek Harness Web UI: 5 token themes (Chaldea night/dawn, Artoria, Morgan, Mash), original generated backdrops, gold trim, and a settings-row skin picker.

Source
Nuomi9
stars
1 stars
License
MIT
Updated
Updated 14 days ago

Readme

# dsh-fgo-chaldea

FGO 迦勒底风格的 DeepSeek Harness Web UI 皮肤插件。配色层走官方 `ctx.theme` token API,背景是**程序生成的原创星图 / 魔术回路 SVG**,外加金色刻线边框,不包含任何 FGO 官方美术素材。

## 皮肤列表

| id | 名称 | 基底 | 说明 |
| --- | --- | --- | --- |
| `fgo-chaldea` | 迦勒底 · 夜 | dark | 深蓝黑 + 蓝 + 金 + 令咒红 |
| `fgo-chaldea-light` | 迦勒底 · 晨 | light | 晨曦浅蓝白 + 蓝金 |
| `fgo-saber` | 阿尔托莉雅 · 蓝金 | light | 象牙白底 + 皇家蓝 + 金色剑饰感边框 |
| `fgo-morgan` | 摩根 · 黑紫 | dark | 黑紫底 + 月光银文字 + 紫色魔术回路 |
| `fgo-mash` | 玛修 · 白紫 | light | 白色装甲感底色 + 薰衣草紫 |

完整视觉层包括:星图背景、天体环、魔术回路、地平线金线、金色顶底线、四角金色刻线、淡入呼吸动画(尊重 `prefers-reduced-motion`)。设置 → 通用设置里会注册「FGO 迦勒底」选择卡;皮肤选择保存在 `localStorage`,刷新后自动恢复。插件只改展示层,不读取或修改会话、模型请求、工作区数据。

## 预览

打开 [`preview/index.html`](preview/index.html) 可以直接看 5 套皮肤的概念图(纯静态,不依赖 DSH):

![迦勒底 · 夜](preview/fgo-chaldea-dark.svg)
![迦勒底 · 晨](preview/fgo-chaldea-light.svg)
![阿尔托莉雅 · 蓝金](preview/fgo-saber.svg)
![摩根 · 黑紫](preview/fgo-morgan.svg)
![玛修 · 白紫](preview/fgo-mash.svg)

## 安装

前提:已安装并初始化 DeepSeek Harness(开发预览版 `0.1.0-rc.5/rc.6`),命令行里有 `dsh`。本项目使用 `0.1.0-rc.6` 验证。

### 本地目录安装

```bash
cd /path/to/deepseek-harness
dsh plugin --profile web add /absolute/path/to/dsh-fgo-chaldea
```

### 从 GitHub 安装(发布后)

```bash
cd /path/to/deepseek-harness
dsh plugin --profile web add github:your-name/dsh-fgo-chaldea
```

也可以指定分支或 tag:

```bash
dsh plugin --profile web add github:your-name/dsh-fgo-chaldea#main
```

重启 `dsh web`,打开 `http://127.0.0.1:3080`,进入 **设置 → 通用设置 → FGO 迦勒底**,选择任意皮肤。

## 卸载 / 禁用

```bash
dsh plugin --profile web remove dsh-fgo-chaldea
```

移除后主题选择会回到 DSH 原生外观,背景层、装饰层与 token 覆盖层会完整还原。

## 配色

### 迦勒底 · 夜(dark)

| 角色 | 颜色 |
| --- | --- |
| 主背景 | `#0a1020` |
| 表面层 1/2/3 | `#111a33` / `#172543` / `#1f3156` |
| 文字主/次 | `#edf2fa` / `#a8bad4` |
| 品牌蓝 | `#4f9cf7` |
| 警示金 | `#e3b96b` |
| 侧栏 | `#090e1c` |

### 迦勒底 · 晨(light)

| 角色 | 颜色 |
| --- | --- |
| 主背景 | `#f2f5fa` |
| 表面层 1/2/3 | `#ffffff` / `#e8eef7` / `#dce6f2` |
| 文字主/次 | `#1b2740` / `#4d5f7d` |
| 品牌蓝 | `#2f6fd6` |
| 金色 | `#b98a3d` |
| 侧栏 | `#e9eff7` |

### 从者变体

| 主题 | 主背景 | 品牌色 | 强调色 |
| --- | --- | --- | --- |
| 阿尔托莉雅 · 蓝金 | `#f7f4ec` | `#2456b8` | `#c9a227` |
| 摩根 · 黑紫 | `#0c0712` | `#9b6bff` | `#cfa96a` |
| 玛修 · 白紫 | `#f8f6fc` | `#6d5bd0` | `#b09a5b` |

## 目录结构

```text
lib/index.js        Host 半面:no-op 装载入口
lib/client.js       浏览器半面:主题注册、背景层、装饰、设置行
cordis.patch.yml    profile 补丁:把插件插进 web 插件表
scripts/smoke.cjs   无依赖冒烟测试
preview/            5 套皮肤的概念预览 SVG + HTML
```

## 工作原理

1. 用官方 `ctx.theme.register()` 注册 5 套 `ThemeDefinition`(`id + colorScheme + --dsw-alias-* tokens`)。
2. 激活任一皮肤时,用 `ctx.theme.overrideTokens()` 把主画布和侧栏改成半透明,露出 `z-index: -1` 的固定背景层;内层表面保持不透明以保证可读性。
3. 背景 SVG 在浏览器端确定性地生成(星星、魔术回路、天体环、地平线),每套主题有独立配色,打包前不依赖任何图片文件。
4. 金色细线和四角边框是独立 `pointer-events: none` 装饰层,颜色随皮肤切换。
5. 皮肤选择存 `localStorage`,刷新后自动恢复。

## 开发与测试

```bash
node scripts/smoke.cjs
node --check lib/client.js
node --check lib/index.js
```

想调整配色:直接改 `lib/client.js` 里的 `*_TOKENS` 常量和 `BACKDROP_PALETTES`。加新从者皮肤:复制一份 `*_TOKENS`,加一个 `BACKDROP_PALETTES` 条目,并补 `zh` / `en` 两个 locale key。

## 发布到 GitHub

本地已初始化 git 仓库时,最省事的方式是运行:

```bash
cd dsh-fgo-chaldea
gh auth login
bash scripts/publish.sh
```

等价的手动命令:

```bash
cd dsh-fgo-chaldea
git init   # 如果还没有 .git
git add .
git commit -m "dsh-fgo-chaldea: FGO Chaldea skin with 5 variants"

gh auth login
gh repo create dsh-fgo-chaldea --public --source=. --push
```

或者手动创建空仓库后:

```bash
git remote add origin https://github.com/your-name/dsh-fgo-chaldea.git
git branch -M main
git push -u origin main
```

## License & 声明

代码与生成的原创背景图以 MIT 发布,见 [LICENSE](LICENSE)。

本项目是粉丝自制皮肤,与 TYPE-MOON / Aniplex / Lasengle / FGO 官方无关,不代表官方认可或关联。仓库中不包含 FGO 官方立绘、图标、字体或游戏素材;从者名仅用于标识配色风格。

Install

dsh plugin --profile web add github:Nuomi9/dsh-fgo-chaldea

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source