一个 npm 包内置 11 款 DSH Web 主题皮肤与皮肤中心卡片,支持一键试穿与切换,全程无需重启服务。
$ dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/dsh-skinsRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
DSH Web 聊天客户端的皮肤全家桶聚合包:装上它就能在插件配置页里看到一张「皮肤中心」卡片,列出 11 款内置主题皮肤(QQ 怀旧、同花顺、Windows XP、龙的传人、Minecraft、初音未来、鲸吟、交易终端、夕港等),支持在线试穿和一键切换。
~/.dsh/profiles/<profile>/cordis.patch.yml,由宿主配置监听器在数秒内热加载,无需重启@deepseek-ai/dsh-host-webserver(host 端路由服务)、@deepseek-ai/dsh-client-runtime 与 @deepseek-ai/dsh-client-ui-theme(client 端运行时与主题)、schemastery(背景配置 schema)、react(皮肤中心卡片 UI)dsh-skin use ESM 端口(src/skin-switch.ts,避免依赖外部 CLI),通过原生 HTTP 路由 /api/skin-center/* 与浏览器半区通信packages/dsh-skins/build.mjs;皮肤中心 host 入口 packages/skins/skin-center/src/index.ts;client 入口 packages/skins/skin-center/src/client/index.ts希望给 DSH Web 聊天界面换个风格、又不想折腾命令行的普通用户:装一个包就拿到 11 款主题,从 QQ 2008 怀旧、Windows XP Luna 到当下流行的初音未来、交易终端风格都有。
不喜欢皮肤中心附带的卡片、只想手动 dsh-skin use 切换的开发者和重度自定义用户也能用:聚合包把每款皮肤的 skin.json + lib/client.js 完整内置,dsh-skin CLI 能直接识别。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.7+ | 由皮肤中心 devDependencies 中 @deepseek-ai/* 包均为 ^0.1.0-rc.7 推断 |
| Node | >=22.19.0 | 来自仓库根 package.json 的 engines 字段(^22.19.0 || >=24.0.0) |
| 平台 | Web | bundle 仅声明 platform: "web",作用域限定 DSH Web GUI |
| 原生模块 | 无 | Windows 符号链接失败时回退到目录联结(junctions),不依赖原生模块 |
dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/dsh-skins
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
backgroundOpacity | 数字(0-100,步长 5) | 主界面背景遮挡透明度,数值越大背景图被遮得越深;仅对内置背景图的皮肤(如 blue-fantasy / whale-song)可见效果 | 0 |
Q: 切换皮肤后需要重启 dsh web 服务吗?
A: 不需要。点击「应用」后皮肤中心会把变更写入 ~/.dsh/profiles/<profile>/cordis.patch.yml,宿主配置监听器在几秒内热加载,浏览器刷新即可看到新皮肤。
Q: 能不能同时启用两款皮肤?
A: 不能。皮肤中心通过 patch 文件的 dsh-skin managed 区段强制只有一个激活,其它皮肤被写为 disabled: true。
Q: 切换皮肤会不会影响模型请求或对话内容?
A: 不会。皮肤只改浏览器 DOM(CSS、标题栏、状态栏、背景图),不拦截、不修改任何发送给模型的请求。
Q: 装完之后皮肤列表是空的,或者少了几款怎么办?
A: 检查当前 profile 下的皮肤目录:皮肤中心扫描 packages/skins/<id> 或 node_modules/@linxin666/dsh-skins/skins/<id>,每个皮肤目录里必须同时有 skin.json 和 lib/client.js,缺一会被构建脚本跳过。
Q: Windows 上切换时报符号链接权限不足怎么办?
A: 切换逻辑在 symlink 失败时会自动回退到目录联结(junction),不需要开发者模式;如果仍失败请以管理员身份运行 dsh,或把皮肤包手动放到 profile 的 node_modules 下。
Q: 怎么加一款自己的皮肤?
A: 在 packages/skins/<your-id>/ 下放 skin.json(含 id、name、tagline、bodyAttr、wiring.id 等字段)和构建后的 lib/client.js / lib/index.js,跑 pnpm --filter @linxin666/dsh-skins build,重装聚合包即可在皮肤中心看到。
Q: 怎么卸掉某款皮肤换回官方默认?
A: 皮肤中心卡片里有「官方默认」入口,点击即可一键应用;想完全卸载插件则用 dsh plugin --profile web remove @linxin666/dsh-skins。
Q: 背景遮挡滑块对所有皮肤都有效吗?
A: 仅对带背景图的皮肤生效(目前是 blue-fantasy 和 whale-song),官方默认和其它纯色调皮肤的背景透明度滑块不会改变外观。
入门 — 装上即可在 Web 端插件配置里直接看到皮肤中心卡片,无需任何额外配置;想新增或调整皮肤时才需要看 build.mjs 和 skin.json 字段。
packages/dsh-skins/README.md:33 / packages/skins/skin-center/package.json 的 dsh.client.platform)packages/dsh-skins/README.md:33)~/.dsh/cordis.patch.yml 的 managed 区段会在首次切换时被自动迁移到当前 profile,并从全局文件中删除(一次性行为,packages/skins/skin-center/src/skin-switch.ts:963-972)