dsh-client-ui-alice-skin
#最近新出的游戏爱丽丝与彼岸,画风不错也挺好玩的就做了个界面插件,大家对画风感兴趣可以去steam下一个玩
Alice Nation 主题皮肤 —— 给 DeepSeek Harness 的 Web 界面换上一层「爱丽丝」风格的配色与装饰, 并带一个右下角的角色面板:点一下头像,整个界面就跟着换成那位角色的配色和立绘。


拖到任意位置:

换一位角色:

它做了什么
整站配色重绘 —— 不去改 DSH 的组件,而是重写它本来就读取的那层设计令牌
(--dsw-alias-bg-*、--dsw-alias-label-*、--dsw-alias-border-*、--dsw-alias-brand-*、
--dsw-specific-* 等 60 多个变量)。所以侧栏、输入框、气泡、按钮、代码块、滚动条、
设置卡片会一起变色,深浅两种主题都适配。
角色氛围图 —— 右侧一层低透明度的角色立绘,用径向遮罩融进背景,不影响阅读。
角色面板 —— 右下角常驻卡片:立绘 + 名字 + 一句台词。上面是 12 个圆形头像的 选择器,点谁换谁:
| 角色 | 来源 | 主题色 |
|---|---|---|
| 爱丽丝 / 爱丽丝·蓝 / 爱丽丝·夜 / 爱丽丝·礼 | Player, Player2..4 |
玫瑰 / 天蓝 / 紫罗兰 / 鎏金 |
| 梅莉 | RMeili |
蜜桃 |
| 女王 | Rqueen |
淡紫 |
| 兔执事 / 雪兔 | Rrabbit, Rrabbit2 |
薄荷 / 冰蓝 |
| 小璃 | XiaoLi |
樱粉 |
| 主管 / 熊掌柜 / 猫女仆 | Supervisor, RKuma, Cat |
蜜色 / 钢灰 / 藕荷 |
交互
- 点头像 → 换角色:主题色、氛围立绘、卡片立绘一起以 0.4 秒交叉淡入切换
- 拖动卡片或头像栏的空白处 → 整个面板跟着走(鼠标/触屏都行),松手即记住位置,刷新不丢; 不会被拖出窗口(贴边自动夹住),窗口变小时也会自动收回可见区域
- 点卡片 → 收起 / 展开头像选择器(拖动过的那一下不会被误判成点击)
- 卡片右上角 ✦ → 开关背景氛围图:就是右侧那张大立绘淡出/淡入(见下方说明)
- 选择、位置、开关状态都记在
localStorage,刷新后还在
✦ 氛围图开关到底是什么效果
它只控制右侧那张大面积的角色立绘(默认约 12% 不透明度、径向遮罩融进背景)。 关掉之后右侧恢复成纯渐变底色,其余东西一个都不变 —— 主题色、头像栏、卡片、文字都不受影响。 觉得大图干扰阅读就关掉,想要氛围就打开。开着时 ✦ 是实心、关掉是空心 ✧,鼠标悬停会浮出「氛围图」标签。
| 开着(默认) | 关掉 |
|---|---|
![]() |
![]() |
安装
插件已作为 bundle 装进 desktop profile。重新安装:
dsh plugin --profile desktop add link:E:/chajian/alice-skin
它在 profile 里注册为一个 bundle(dsh.bundle.patch),加载器条目 id 是
ui-alice-skin;要临时关掉,在 ~/.dsh/profiles/desktop/cordis.patch.yml 里加:
- id: ui-alice-skin
disabled: true
装好后刷新一次页面即可看到(DSH 的 client HMR 一般会自己推送,没动静就 F5)。
结构
alice-skin/
├─ package.json # dsh.bundle(profile 层) + dsh.client(浏览器半边)
├─ cordis.patch.yml # 唯一的 insert 行:id: ui-alice-skin
├─ lib/index.js # 宿主半边:注册 /dsh-alice-skin 静态资源路由
├─ lib/client.js # 浏览器半边:注入 CSS + 角色面板(手写 __ModuleLoader__ bundle)
├─ assets/
│ ├─ manifest.json # 角色名 / 台词 / 主题色
│ ├─ portraits/*.webp # 560px 立绘卡(12 张,约 440 KiB)
│ └─ avatars/*.webp # 128px 圆形头像(12 张,约 75 KiB)
├─ tools/
│ ├─ extract_unity.py # 用 UnityPy 从 AssetBundle 里导出 Sprite/Texture2D
│ └─ build_assets.py # 按角色表裁立绘 + 圆头像,输出 webp 和 manifest
└─ docs/ # README 用的截图
tools/ 里两个脚本顶部的路径常量指向本机位置,换机器时改那两行即可
(依赖 UnityPy + Pillow:pip install UnityPy Pillow)。
宿主半边只做一件事:把 assets/ 通过 /dsh-alice-skin/… 发出去(带目录穿越防护、
只发 GET/HEAD、10 分钟缓存)。浏览器半边是手写的 window.__ModuleLoader__.load
工厂模块,不复用任何 DSH 内部组件,所以 DSH 升级时不会因为组件改名而崩掉 ——
它只依赖公开的设计令牌和 document.body[data-ds-dark-theme]。
拖拽用 Pointer Events 实现:按下后移动超过 4px 才算拖,否则仍按点击处理;位置以
左下角为锚点(left + bottom),这样上方头像栏展开/收起时卡片本身不会跳。
localStorage 键:dsh-alice-skin:character / :dock / :aura / :position。
换成你自己的图
- 把新立绘放进
assets/portraits/<id>.webp(竖版,建议 372×512 或等比), 头像放assets/avatars/<id>.webp(正方形)。 - 在
lib/client.js顶部的CHARACTERS里加一行:{ id, name, tagline, accent },accent就是整站主题色。 - 同步一下
assets/manifest.json(可选,仅供查阅),刷新页面。
要重新从游戏里抽图:tools/extract_unity.py 先把 AssetBundle 里的图导出成 PNG,
再用 tools/build_assets.py 按角色表裁立绘和头像(两者都依赖 UnityPy + Pillow)。
说明
- 立绘、头像来自本地游戏 Alice Nation 的 AssetBundle,仅供本机个人界面美化使用; 角色名与台词是本插件为界面配的,与游戏原剧情无关。
- 只读取了角色卡与小图标,没有导出任何剧情 CG。

No comments yet. Be the first to write one.