DSH-Hiyuki-Frost-Sakura
Immersive Hiyuki dual-form skin for DeepSeek Harness Web, with frost/sakura transitions, themed controls, and native DSH layout.
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 24, 2026
- Updated
- Aug 24, 2026
Introduction
DSH Hiyuki Frost Sakura
一款面向 DeepSeek Harness Web(DSH)的《鸣潮》绯雪主题皮肤。它在不改变 DSH 原有布局、不代理会话操作的前提下,加入常态与战斗态两套本地背景、霜樱玻璃色调、平滑形态切换和预设优先的设置入口。
这是非官方同人项目,与 KURO GAMES(库洛游戏)不存在隶属、授权、赞助或合作关系。代码与生成式同人素材采用不同的权利说明,详见许可与素材声明和 THIRD_PARTY_NOTICES.md。
效果预览
DSH 0.1.1-rc.2 实机效果
| 常态待机 | 主题设置 | 战斗态 |
|---|---|---|
![]() | ![]() | ![]() |
实机图保留完整 DSH 布局,并对工作区名称与会话标题做了隐私模糊处理;普通对话显示常态,Agent 首次调用工具时自动进入战斗态。
完成任务后的运行统计

耗时、工具调用、首 token、生成速度、缓存命中和输入/输出 token 不增加额外底条:常态使用深霜墨色,战斗态自动切换为浅冰白色,并辅以克制的反向阴影,在两张复杂背景上保持清晰。
第一形态 · 常态

第二形态 · 战斗态

运行时只加载仓库内的 WebP;不从网络下载背景。两张图同时加载失败时会退回纯 CSS 冰霜渐变,图片故障不会阻止 DSH 启动。
功能
- 常态与战斗态双背景:普通对话和思考保持常态,当前 Agent 真正调用工具干活时自动进入战斗态;也可手动永久锁定任一形态。
- 常态转战斗态播放约 0.9 秒“冰雾掠境”,战斗态恢复常态播放约 1.15 秒“斜风疏樱”;没有持续运行的动画循环。
- 轻柔、标准、沉浸三档视觉强度。
- 单层霜瓷侧栏、圆角会话选中态,以及新建、搜索、视图、工作区、归档、设置和发送按钮的绯雪主题材质。
- 底部输入框默认 0% 透明(完全不透明),可独立调节到最高 90% 透明,不受视觉预设和形态切换覆盖。
- DSH 明暗主题适配,代码块、菜单、弹窗和输入区域保留高可读表面。
- 战斗态单独提高 Agent 正文、Think 与工具调用记录的对比度;用户消息气泡和常态文字保持 DSH 原有表现。
- 遵循系统“降低动态效果”偏好,也可在插件设置中单独关闭动态。
- 背景层完全忽略指针事件;已知按钮只增加视觉标记和材质,不替换事件、ARIA、快捷键或原 SVG 轮廓。
- 与
dsh-session-manage共存;皮肤不调用删除、归档、恢复、移动或工作区 API。 - Host 入口保持空操作;浏览器视觉异常不会进入 DSH Host 启动链。
兼容性
| 项目 | 状态 |
|---|---|
DSH 0.1.0-rc.6 | 最初的 API 与依赖目标 |
DSH 0.1.0-rc.7 | 已在真实 Windows Web Profile 完成启动、切换、卸载和重装验证 |
DSH 0.1.1-rc.2 | 当前开发依赖;已按最新设置插槽、主题和运行时接口适配 |
| Node.js | CI 使用 Node 22 |
| 包管理器 | pnpm 11;项目锁文件必须保留 |
| 本地安装脚本 | Windows PowerShell / PowerShell 7 |
更高版本的 DSH 仍可能调整客户端模块加载器、设置插槽或主题令牌。升级 DSH 后先使用 -WhatIf 检查安装目标,并保留可用的 Web Profile 备份。
安装
准备工作
- 安装 Node.js 22 和 pnpm 11。
- 下载或克隆本仓库,并在仓库根目录打开 PowerShell。
- 确认目标 DSH Web Profile 中存在
package.json。默认位置是$env:USERPROFILE\.dsh\profiles\web。 - 建议先退出正在运行的 DSH,或在安装后完整重启 DSH。
默认 Web Profile
先预览将要执行的操作;-WhatIf 不修改 Profile:
pwsh -File .\scripts\install-local.ps1 -WhatIf
确认路径正确后安装:
pwsh -File .\scripts\install-local.ps1
安装脚本会依次:
- 运行类型检查、全部测试、生产构建和素材校验;
- 只复制
package.json中files白名单允许发布的文件; - 在 Profile 清单中加入一个
file:./dsh-hiyuki-frost-sakura依赖; - 将皮肤 bundle 插在
@deepseek-ai/dsh-web-app后面; - 保留
dsh-session-manage及其他依赖、bundle 和配置; - 刷新 pnpm 的同版本本地依赖副本,并校验已安装
client.js的 SHA-256。
脚本不会修改 DSH 核心文件,也不会写入、归档、移动或删除任何会话。
自定义 Profile
非默认路径必须显式传入,以免误操作其他目录:
pwsh -File .\scripts\install-local.ps1 -ProfilePath 'D:\path\to\dsh-profile-web' -WhatIf
pwsh -File .\scripts\install-local.ps1 -ProfilePath 'D:\path\to\dsh-profile-web'
安装结束后完整重启 DSH。更新本地代码后重新运行同一安装命令即可;脚本支持重复执行,不会重复添加依赖或 bundle。
设置:自动、永久常态和永久战斗态
进入 DSH → 设置 → 通用设置 → 绯雪主题。所有设置即时生效并自动保存,不需要“应用”按钮;刷新页面或重启 DSH 后仍会保留。设置保存在当前浏览器 Profile 的本地存储中,不会写进会话文件。
总开关
- 绯雪主题:关闭后立即隐藏背景并释放主题覆盖;再次打开会恢复当前设置。
视觉强度
| 预设 | 背景与玻璃效果 | 动态装饰 | 适合情况 |
|---|---|---|---|
| 轻柔 | 约 45%,面板最实 | 关闭粒子 | 长时间阅读、偏好原生 DSH |
| 标准 | 约 70%,默认平衡值 | 最多 6 个稀疏粒子 | 日常使用 |
| 沉浸 | 约 90%,面板更通透 | 最多 8 个稀疏粒子 | 更强调角色与氛围 |
预设不会降低代码块、菜单和弹窗到危险透明度。如果文字仍显得太淡,优先切换为“轻柔”,而不是修改 DSH 核心 CSS。
底部输入框透明度
- 默认值是 0% 透明,也就是完全不透明;首次安装或配置损坏回退时都使用此值。
- 滑杆范围为 0%–90% 透明。向右拖动越透明,最高为 90%;即使拉满仍保留 10% 的输入框底色,以及背景模糊、边框和阴影,以保护占位文字、模型选择和发送按钮的可读性。
- 这个滑杆只控制页面底部的消息输入框卡片,不控制会话正文、代码块、侧栏、设置弹窗或背景图片。
- 该数值独立保存。切换轻柔/标准/沉浸、常态/战斗态、自动/手动形态,或刷新和重启 DSH,都不会把它改回预设值。
- 从旧版升级时,插件会把原先保存的“不透明度”换算成新滑杆显示值,旧版视觉观感保持不变。例如旧版保存 73% 不透明,升级后会显示为 27% 透明,但输入框实际效果不变。
- 如果调得过透导致当前壁纸区域难读,直接把滑杆恢复到 0%;不需要重装插件或清除整个 Profile。
形态选择
- 自动形态切换(默认):欢迎页、设置、归档、浏览已有消息、普通对话以及只有思考和文字输出的短对话都保持第一形态。只有当前可见会话中的 Agent 首次调用工具开始干活时,才切换为战斗态;同一轮任务后续继续调用工具不会重复播放切换动画。
- 自动恢复常态:任务完成、用户停止、取消或执行失败后,都会恢复常态。短暂思考本身不会触发战斗态。
- 后台任务隔离:后台其他会话调用工具不会改变当前页面;切换到一个正在调用工具的会话时,画面会同步为战斗态。若 DSH 暂时无法提供活动状态,插件会安全地保持常态。
- 在会话里永久保持第一形态:进入 DSH → 设置 → 通用设置 → 绯雪主题,关闭“自动形态切换”,再点“常态”。此后即使打开会话、产生思考或调用工具,也会始终保持第一形态。选择会自动保存,刷新页面或重启 DSH 后仍有效。
- 永久第二形态:关闭“自动形态切换”,再点“战斗态”。欢迎、设置、归档、普通对话和工具任务都会保持第二形态,选择同样会自动保存。
- 恢复自动切换:重新打开“自动形态切换”。手动形态会作为备用值保留,但当前画面重新由当前可见会话是否真正调用工具决定。
如果关闭自动切换后没有看到“常态/战斗态”二段按钮,先确认“绯雪主题”总开关仍处于开启状态,再关闭并重新打开一次设置面板。视觉强度、输入框透明度和动态效果都不会改变这套形态规则。
动态效果与降低动态效果
- 冰雾掠境(常态 → 战斗态):约 0.9 秒的冷蓝冰雾与霜晶扫过画面,只在当前任务首次调用工具时播放一次。
- 斜风疏樱(战斗态 → 常态):约 1.15 秒,16 片稀疏的白粉樱花斜向飘落,只在任务结束、停止、取消或失败后播放一次。
- 关闭插件的 动态效果:形态仍可切换,但只保留约 120ms 的短暂淡入淡出,不播放冰雾、霜晶或樱花。
- 操作系统或浏览器启用
prefers-reduced-motion: reduce时,系统偏好拥有更高优先级,即使插件动态开关开启,也会强制降低动态效果。 - 背景层不接收鼠标和键盘事件,切换过程中输入、滚动和按钮仍应可用。
与 dsh-session-manage 共存
皮肤只改变视觉,不包裹或替换会话管理按钮。归档、恢复、删除、文件夹分组和“未分组”兜底仍完全由 dsh-session-manage 负责。
- 安装脚本只插入本皮肤自己的 dependency 和 bundle。
- 卸载脚本只移除本皮肤自己的条目和目录。
- 如果会话归档或删除行为异常,应先单独检查
dsh-session-manage;皮肤没有这些数据接口,也不会尝试“修复”会话数据。 - 手动编辑 Profile 清单时不要删除或重排
dsh-session-manage,也不要把本皮肤重复加入 bundles。
卸载
预览卸载范围:
pwsh -File .\scripts\uninstall-local.ps1 -WhatIf
执行卸载:
pwsh -File .\scripts\uninstall-local.ps1
自定义 Profile 同样使用 -ProfilePath。脚本会从清单中移除皮肤依赖和 bundle,运行 pnpm install 刷新 Profile,再删除皮肤目录;失败时会恢复原始 Profile 清单。卸载后重启 DSH。
卸载不会删除插件写入浏览器本地存储的偏好键 dsh-hiyuki-frost-sakura:v1,但没有插件时该键不会生效。需要彻底清除偏好时,可在对应 DSH 站点的浏览器存储中删除这个键。
故障排查
DSH 显示 “Failed to load plugins”
- 记录错误中显示的插件名,不要修改 DSH 核心文件。
- 在仓库目录运行
pwsh -File .\scripts\uninstall-local.ps1 -WhatIf,确认目标是正确的 Web Profile。 - 执行卸载并重启 DSH;确认原界面可进入。
- 更新仓库后重新安装。当前 bundle 必须以
window.__ModuleLoader__.load(...)注册;普通 ESM bundle 会被 rc.7 拒绝。
插件已加载但没有人物背景
- 完整重启 DSH,而不只是刷新旧页面。
- 重新运行安装脚本;它会刷新 pnpm 对同版本
file:依赖的缓存副本,并验证 bundle 哈希。 - 在设置中确认“绯雪主题”已开启,视觉强度不是被外部修改成无效值。
- 单图加载失败会使用另一张图或渐变;两图都失败也不应导致 DSH 无法启动。
Profile 路径或 pnpm 安装失败
- 默认路径必须以
.dsh\profiles\web结尾;其他位置必须显式传入-ProfilePath。 - Profile 必须已有
package.json和dsh.profile.bundles;脚本不会凭空创建未知结构。 - 某些 Profile 设置了
autoInstallPeers: false,pnpm 可能报告 peer dependency 警告;只要安装命令成功退出且 DSH 能启动,这类警告不等于皮肤加载失败。
设置损坏或表现异常
插件会忽略未知字段;类型错误或无法迁移时恢复标准默认值。仍有问题时,清除站点本地存储键 dsh-hiyuki-frost-sakura:v1,刷新后会回到:主题开启、标准强度、输入框透明度 0%、动态开启、自动切换开启、手动常态备用值。存储键名称保留 v1 是为了原地迁移旧用户数据,键内配置版本已经升级,不代表迁移失败。
安全模式停用
即使 DSH 页面进不去,也可以从 PowerShell 运行卸载脚本,因为脚本不依赖 DSH 前端启动。先使用 -WhatIf 核对路径,再执行卸载并重启。不要通过删除整个 Web Profile、重装 DSH 或修改核心包来停用本皮肤。
开发与验证
pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm check
pnpm pack --dry-run
pnpm check:类型检查、全部测试、生产构建和素材尺寸/格式/差异校验。pnpm test:smoke:客户端启动、降低动态效果和失败清理的快速检查。node scripts/validate-assets.mjs:验证两张 4K PNG 源图和两张 WebP 运行图。scripts/hash-core.ps1:生成 DSH 前端与 loader 核心文件的 SHA-256 报告,用于确认安装没有修改核心。- CI 在 Windows 和 Ubuntu、Node 22 上运行冻结锁文件安装与完整检查。
发布包只应包含构建后的 lib、运行时 WebP、Cordis patch、README、LICENSE、第三方声明和 package metadata。4K PNG 源图、测试、QA 证据、本机路径和会话数据不得进入 npm 包。
许可与素材声明
仓库中的程序代码采用 MIT License。素材不是 MIT 代码授权的一部分:assets/source 与 assets/web 中的绯雪图片属于生成式非官方同人素材,受 THIRD_PARTY_NOTICES.md 的独立限制和权利声明约束。
《鸣潮》(Wuthering Waves)、绯雪(Hiyuki)及相关名称、角色、世界观和识别性元素的权利归 KURO GAMES 或相应权利人所有。本项目不主张拥有这些第三方权利,不建议将同人素材用于商业用途,也不得把素材单独出售或宣称为可自由再授权的原创角色资产。
隐私与安全
- 背景素材随包提供,不需要 API 密钥,也不会在运行时访问图像生成服务。
- 插件不读取会话正文,不发送遥测,不操作会话文件。
- 安装脚本限制写入选定 Profile 的子路径,并提供
-WhatIf预览。 - 提交或发布前应扫描 API 密钥、本机绝对路径、私有会话 ID 和下载的第三方图片。


