dsh-ui-skins

by edwardyang0011

2 主题与外观github收录于 08-23

DeepSeek Harness 皮肤插件

DeepSeek Harness Skin Plugin

安装

dsh plugin --profile web add github:edwardyang0011/dsh-ui-skins

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

English | 中文

换肤插件(Skin plugin):在 ui-theme 服务上把预设配色皮肤注册为别名令牌主题,拥有持久化的 ui-skins.skin 偏好,并把「皮肤」行注册进设置页「通用」分区(紧挨着「外观」行)。

每个预设皮肤是一个 ThemeDefinition({ id, colorScheme, tokens }),通过 ctx.theme.register 注册——即主题注册表认可的第三方扩展点。主题 presenter 把合成后的令牌以内联 CSS 变量写到 body 上,因此皮肤复用了整套 --dsw-* 机制(调色板切换、theme/change 快照、meta theme-color),无需改动任何样式表。

内置的「外观」行仍是偏好权威。插件镜像 theme/change,并让持久化皮肤 id 与当前生效的偏好保持一致:

  • 选择某个预设皮肤会把偏好切到该皮肤 id,并把它持久化到 ui-skins.skin 下;
  • 「默认」选项恢复切换皮肤时捕获的内置偏好(没有捕获时回落为 system);
  • 操作「外观」行(内置偏好胜出)会清除持久化皮肤,因此两行不会漂移——后写者胜。

持久化 schema(ui-skins):skin ∈ default | custom | ocean | sakura | forest | midnight(默认 default),另有可选的 custom 颜色段(scheme、accent、bgBase)。

预设皮肤:

id 配色方案 色系
ocean 浅色 蓝绿海洋:海面蓝白底、深青色主色
sakura 浅色 樱花粉:樱粉白底、玫红主色
forest 深色 松林绿:墨绿黑底、翠绿主色
midnight 深色 深空紫:紫黑底、淡紫主色

色块(swatch)外观颜色在 SkinRow.module.css 中;src/skins.ts 中的令牌表才是主题值本身。

自定义颜色:「自定义」色块会打开编辑器(配色方案、主色、背景),通过 buildCustomTokenPairs 从两个颜色推导出完整令牌集,并以 overrideTokens 覆盖层叠加到已注册的 custom 主题上——修改颜色只替换覆盖层,切换配色方案会重新注册主题。颜色持久化在 ui-skins.custom 下,启动时自动恢复;操作「外观」行会像清除其它皮肤一样清除自定义皮肤。

Install

从本仓库安装该包(已提交预构建的 lib/):

pnpm add github:edwardyang0011/dsh-ui-skins

然后在你的 DSH profile patch —— $DSH_HOME/profiles/... 下的 cordis.patch.yml —— 中注册该行:

- id: ui-skins
  name: '@deepseek-ai/dsh-client-ui-skins'

重启 dsh web,在 设置 → 通用 中选择皮肤。peer 依赖与已发布的 0.1.0-rc.5 dsh 家族版本一致。

宿主前置条件: 持久化需要 ui-skins 命名空间出现在 Host API 代理的 Web 设置白名单(dsh-host-apiproxy 的 WEB_SETTINGS_NAMESPACES)中。随皮肤插件一起发布的官方构建已包含;未包含的构建会以 settings-not-exposed 拒绝浏览器的设置写入,任何选择在刷新后都会重置。

Model Experience

None, as skins are a browser-side preference.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • 皮肤是主题覆盖而非完整主题——每个皮肤覆盖一组精选的别名令牌;未覆盖的值保持基础调色板,因此皮肤不会重新定义每一个表面。
  • 每个皮肤固定一种配色方案——主题注册表为每个已注册主题固定 colorScheme,因此皮肤要么是浅色要么是深色,而不是随系统自适应。

原始 README: https://github.com/edwardyang0011/dsh-ui-skins/blob/main/README.zh.md ↗