为 DSH Web GUI 提供 Windows XP Luna 蓝复古皮肤:蓝色窗口条、四色旗标、米色状态栏、绿色开始按钮和 Bliss 蓝天桌面,仅改动浏览器外观。
- 语言
- TypeScript
- License
- Apache-2.0
- 分支
- main
安装
$ dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/skins/xp在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
XP(Luna)皮肤是 DSH Web GUI 的一款复古外观替换:把默认界面变成 Windows XP 的 Luna 蓝窗口条、四色旗标、绿色「开始」按钮和 Bliss 蓝天桌面,仅改动浏览器外观,不影响任何业务功能。
核心能力
- 注入 Luna 蓝渐变标题栏:固定顶部、带四色窗口旗标图标和最小化/最大化/关闭三个窗口按钮
- 注入米色状态栏:左侧显示「就绪」「DeepSeek 在线」,右侧保留「大写/数字/滚动」三个凹陷指示灯
- 侧边栏底部加挂绿色「开始」按钮:点击会触发原生设置入口的同一段逻辑
- 资源管理器风格树行:浅蓝悬停态 +
#316ac5蓝色选中态 - Bliss 蓝天桌面背景 + 全局直角:基于
body[data-dsh-xp]作用域渲染 - 标题与 favicon:固定文档标题为「Windows XP · DeepSeek 在线」,并注入四色旗标 favicon
技术实现
- 语言: TypeScript
- 关键依赖: @deepseek-ai/cordis(dsh 插件运行时,devDependencies 中显式声明)、CSS Modules(xp.module.css,随 bundle 自动注入)
- 架构模式: 纯客户端皮肤插件——宿主侧
apply()是空实现,皮肤逻辑全在src/client/index.ts的apply(ctx)里:通过body.dataset.dshXp = ''打开作用域、用document.createElement直接拼出标题栏/状态栏/开始按钮、用MutationObserver在侧边栏重渲染后重新挂载开始按钮、用ctx.effect(..., 'ui-skin-xp: window chrome')注册 disposer 把所有写入撤回 - 入口文件: 宿主
src/index.ts,浏览器src/client/index.ts,样式src/client/xp.module.css,注册清单cordis.patch.yml
适用场景
怀念 Windows XP 时代外观、想让 DSH Web GUI 看起来像经典桌面系统的用户;或者团队演示、教学场景里希望界面更有辨识度、又不想改任何业务逻辑的人。它只动皮肤,不影响对话、模型调用、KV 缓存。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | package.json 的 peerDependencies 为空,未显式声明 SDK 版本要求 |
| Node | 未声明 | package.json 未设置 engines 字段 |
| 平台 | 跨平台 | 仅修改浏览器 DOM 与 CSS,无 os/cpu 限制 |
| 原生模块 | 无 | 纯前端 DOM/CSS 工作,不依赖任何原生模块 |
安装方式
dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/skins/xp
配置项
本插件无需额外配置。安装后通过 monorepo 提供的 dsh-skin use xp 命令激活皮肤;同一时刻只允许一个皮肤处于激活状态,不需要任何开关或参数。
常见问题
Q: 启用 XP 皮肤会影响对话或模型请求吗?
A: 不会。皮肤只改动浏览器 DOM 与文档标题,不注入任何 Cordis 服务、不发送任何事件,也不会触及模型请求;卸载后 effect disposer 会逐一回滚全部写入。
Q: 皮肤中心「开始」按钮能弹出开始菜单吗?
A: 不能。它只是把点击事件转发给侧边栏底部已有的设置触发按钮(button[aria-haspopup="dialog"]),相当于复用原生设置入口,并不是真的开始菜单。
Q: 多个皮肤能同时启用吗?
A: 不能。同一时刻只允许一个皮肤激活,皮肤之间的互斥由 monorepo 的 scripts/dsh-skin 脚本(dsh-skin use xp)管理,切换到新皮肤时旧皮肤的 effect 会自动撤销。
Q: 加载页面(boot page)也会被换皮吗?
A: 启动页在外壳渲染时插件 bundle 还没就绪,整体仍走默认外观;属性一旦设置好,外壳会获得窗口边框,但启动页内部的卡片保留现代风格,皮肤只接管 UI 稳定后的区域。
Q: 切换深浅主题会回到非皮肤外观吗?
A: 不会。皮肤在浅色 data-dsh-xp 下渲染 Luna 蓝,在 body[data-dsh-xp][data-ds-dark-theme] 下渲染 Zune 风格黑色变体;切换外观主题只会在两套皮肤配色之间翻转,不会脱离皮肤。
Q: 卸载皮肤会留下残留 DOM 吗?
A: 不会。effect disposer 会逐一撤回写入:移除 data-dsh-xp 属性、删除标题栏和状态栏、移除「开始」按钮和任务栏样式、移除注入的 favicon;如果标题仍是皮肤自己写入的,还会一并恢复成原标题。
上手难度
入门 — 安装并执行一条激活命令即可使用,皮肤仅在浏览器端生效,没有配置项、没有副作用,卸载后无残留。
已知问题与限制
- 加载页保持原样:外壳的启动页在插件 bundle 就绪之前就已渲染,皮肤从 UI 稳定后才生效,属性设置后启动页获得窗口边框,但内部卡片保留现代风格(README.md:42)
- 主题切换被锁定在皮肤内部:皮肤同时固定浅色 Luna 和深色 Zune 两套配色,切换外观主题只会在两者之间翻转,不会回到非皮肤外观(README.md:43)
- 「开始」按钮只打开设置:它把点击转发给侧边栏底部的设置入口,并不承载真正的开始菜单(README.md:44 / src/client/index.ts:125-127)
- 四色旗标是平面近似:飘扬的 Windows 旗标以平面 2×2 色块呈现(内联 SVG),并非真实的波浪形 Logo(README.md:45 / src/client/index.ts:39-47)
- 面板级装饰依赖
data-pane属性:侧边栏标题带、资源管理器树行、任务栏底部、会话/详情面板的表面装饰依赖ui-layout中 AppFrame 列携带的data-pane属性;属性缺失时皮肤仍生效,只是缺少各面板专属表面(README.md:32)
基于 zhu1090093659/dsh-web-ui(Apache-2.0)开发的 DeepSeek Harness(DSH)Web UI 插件套件。全套 22 个包已发布到 npm(
@captain1275/*)。
DSH Web UI 全家桶为 DeepSeek Harness 的 Web 界面提供一系列插件与皮肤:极光毛玻璃皮肤、任务看板、 SSH 运维、右侧文件/变更面板、Git 图谱、移动端远程控制、DeepSeek 娘看板娘(养成系)、实时令牌统计, 以及皮肤中心。所有插件既可独立安装,也可通过聚合包一次装齐。
极光 Aurora 皮肤效果(沉浸光感 / 深色 / 浅色)



特性
极光(Aurora)皮肤(支持动态背景)
- 毛玻璃输入框:高斯模糊(backdrop-filter 30px)+ 半透明玻璃底 + 细边框 + 内高光
- 自定义背景:URL / 本地图片 / 动图(GIF/WebP)/ 视频(mp4/webm) / 透明度 / 模糊调节,
深浅两套极光渐变;视频背景支持静音开关、本地文件持久化(存
~/.dsh/skin-aurora-media/,刷新不丢) - 仿Claude Code推理等级滑块:点击模型菜单的「推理等级」弹出 Effort 滑块面板——无极拖动、松手吸附、 WebGL 火焰跟随、OFF/MAX 刻度、Low/Medium/High/Ultracode 状态

- 用户消息气泡毛玻璃:与输入框统一的玻璃质感
DeepSeek 看板娘(养成系)
- 图片资源(社区同人资源,codex-pet-DeepSeek-girl)
- 养成系统:亲密度 4 级成长(幼鲸 / 伙伴 / 挚友 / 深海羁绊)、升级庆祝气泡、进度条、 Token 零食经济、使用时长成长(每 30 分钟 +1)
- 待机随机气泡:空闲时随机说话(live2d 风格文案)
- 摸头 / 喂食 / 改名 / 拖动,召唤按钮(live2d 同款贴边滑出)
Skill 人格设定
- 设置「人格设定」:开关启用/禁用常驻人格,编辑技能名、描述与人格正文
- 一键生效:保存后写入用户级技能
~/.dsh/skills/catgirl-rp/SKILL.md,DSH 技能系统实时加载, 所有新对话自动以该人格回应(含语气、动作表达、互动规则) - 内置猫娘人格:默认提供「小咪」猫娘人格(常驻生效、好感度系统、模式切换指令),可自由改写
- 可临时退出:对话中说「退出角色扮演模式」即切回普通助手,说「进入角色扮演模式」恢复

用量看板
- 彩色统计卡:累计 token、调用次数、缓存命中、估算费用(按 DeepSeek 官方定价)
- 近 14 天趋势:每日 token 消耗柱状图
- 模型分布:各 provider/model 用量环形图 + 图例
- 会话排行:Top 20 会话(标题 / 模型 / 调用数 / token / 费用)
- 自动记录:对话时自动采集 token 用量(会话快照替换语义,不双计),存
~/.dsh/usage.json - 侧边栏入口:彩色柱状按钮打开全屏看板
功能插件
| 插件 | 功能 |
|---|---|
| dsh-task-board | 侧边栏任务看板:多列 kanban、真实执行(驱动 agent 会话)、定时执行(cron) |
| dsh-ssh | SSH 运维:主机管理、远程执行、SFTP 传输、隧道、集群并发、Web 终端 |
| dsh-aionui-panel | 右侧「预览 / 文件 / 变更」面板:文件树、多格式预览、git 操作、文件拖拽 |
| dsh-git-graph | 会话头部 git 分支选择器 + 提交图 |
| dsh-live-stats | 实时 token 估算与生成速度 |
| dsh-full-stats | 完整统计行:覆盖官方统计(不省略)+ 运行状态指示 + 自定义状态文本(含替换官方 Deep diving...) |
| dsh-usage-dashboard | 用量看板:彩色统计卡 / 近 14 天趋势 / 模型分布 / 会话排行 / 费用估算 |
| dsh-web-ui-settings | 设置页「Web UI 插件」配置组 + 「人格设定」+「关于」版权页 |
| dsh-web-ui-all | 聚合包:一键安装全部插件 |
皮肤中心
10 套皮肤(ths / xp / blue-fantasy / dragon-heir / minecraft / miku / trading / whale-song / aurora / skin-center),支持皮肤启用互斥管理与一键切换。
其余皮肤(ths / xp / blue-fantasy / dragon-heir / minecraft / miku / trading / whale-song) 为上游 dsh-web-ui 自带皮肤。
安装
方式一:npm(推荐,已发布)
# 在 DSH profile 目录(~/.dsh/profiles/web)安装聚合包
npm install @captain1275/dsh-web-ui-all@0.2.8
然后在 profile 的 package.json 里把 @captain1275/dsh-web-ui-all 加入
dsh.profile.bundles:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@captain1275/dsh-client-ui-skin-aurora",
"@captain1275/dsh-full-stats",
"@captain1275/dsh-web-ui-all"
]
}
}
}
重启 DSH 即生效。
方式二:从源码(开发)
git clone <your-repo-url> dsh-web-ui
cd dsh-web-ui
pnpm install
pnpm -r build
# 把本地包链接进 profile(junction)
node scripts/link-profile.mjs
开发
- 构建:
pnpm -r build(或pnpm --filter <package> build) - 新增皮肤:参考
packages/skins/aurora(skin.json+src/client+cordis.patch.yml), 然后用node scripts/skin-center-bundles重新生成注册表 - 聚合包 patch:编辑
packages/dsh-web-ui-all/aggregate.yml后node scripts/aggregate.mjs - 皮肤资产同步:
node packages/dsh-skins/build.mjs
目录结构
packages/
├─ dsh-task-board / dsh-ssh / dsh-aionui-panel / dsh-git-graph
├─ dsh-pet / dsh-live-stats / dsh-full-stats
├─ dsh-web-ui-settings / dsh-web-ui-all / dsh-skins
└─ skins/ # 皮肤源码(aurora、miku、ths 等)
scripts/ # 构建 / 注册表 / 链接工具
shared/ # 共享构建预设(tsdown.client.ts)
版权与许可
- 主体代码:zhu1090093659/dsh-web-ui,Apache-2.0
- 增强优化:@captain1275
- DeepSeek 娘精灵图:xpy12367/codex-pet-DeepSeek-girl, 社区同人资源,版权归原作者
- 人形图标:Font Awesome 6.7.2,CC BY 4.0
- 样式参考:live2d-widget(GPL-3.0,仅参考视觉风格,未搬用代码)
- 商标:DeepSeek 及其相关标识均为 DeepSeek 官方资产;本插件为社区开发者独立维护的非官方同人项目, 不代表 DeepSeek 官方立场。