🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

RainbowDashy/dsh-theme-palettes

DeepSeek 客户端兼容 / 相关生态spec-screened扫描:中风险在 GitHub 查看 ↗
未验证

一个用于 DeepSeek HarnessDSH的调色板基础设施。它内置了三个调色板——VSCode…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/19 · 已提供中文文档
综合分
27.2
GitHub 分
27.2
用户评分
—
★ Stars
1
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/RainbowDashy/dsh-theme-palettes.git
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
是什么
生态应用(桌面端 / Web 外壳,不以 dsh plugin add 安装)
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
更新放缓:最近一次提交在 37 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-theme-palettes

一个用于 DeepSeek Harness(DSH)的调色板基础设施。它内置了三个调色板——VSCode Red、Solarized Dark 和 Solarized Light——并暴露了一个客户端注册 API(themePalettes),使第三方插件可以贡献自己的调色板,而无需触碰 harness 的主题注册表。

安装

dsh plugin --profile web add "github:RainbowDashy/dsh-theme-palettes"

然后重启 Web 服务器,使新的组合行进入启动图:

dsh web

该插件不会注册到 harness 主题注册表中,也从不调用 setTheme——harness 的外观选择器(浅色/深色/系统)无法由第三方扩展。调色板改为通过单个 theme.overrideTokens 层应用(参见用法)。

- 固定某个分支或标签:"github:RainbowDashy/dsh-theme-palettes#main"。
- 从本地检出安装:dsh plugin --profile web add "link:/path/to/checkout"(link: 会让你的修改保持实时生效;file: 则会对该目录做快照)。

用法

此包从不触碰外观选择器,也从不向其注册主题 id。相反,它通过一个 theme.overrideTokens 层将解析后的配色方案映射到调色板。

要选择调色板,请打开 Settings → Plugins → Plugin Configuration,展开 Theme palettes 卡片,然后设置 Light appearance uses 和 Dark appearance uses 下拉菜单。更改会实时生效,并在重启后保留(参见设置)。

- 默认情况下,深色和浅色外观都保持使用原版(default)调色板。
- 系统会通过操作系统解析为浅色或深色,并在操作系统配色方案切换时重新触发。
- 更改外观偏好(浅色/深色/系统)会立即重新映射调色板。
- 引用了未注册 id 的映射是软失败的:其行为等同于 default。
- 移除插件会恢复原版调色板。

由于调色板通过 overrideTokens 叠加在当前活动主题之上,只要插件处于加载状态,它就会按 token 生效。

调色板

每个内置调色板都是将某个 VSCode 颜色主题的 colors 块忠实移植到 DSH 的 --dsw- 设计 token 上。

VSCode Red (vscode-red)

对 VSCode Red 颜色主题的 colors 块的忠实移植。深栗色取代黑色,所有中性的“偏黑”表面、边框、按钮、滚动条和代码块都被重新映射到深红色阶上,并带有 #cc3333 强调色。

| 角色 | 值 |
| --- | --- |
| 编辑器 / 应用基础 | #390000 |
| 侧边栏 | #330000 |
| 小组件 / 代码块 | #300000 |
| 输入框 / 下拉菜单 / 菜单 | #580000 |
| 品牌强调色 | #cc3333 |
| 主要文本 | #f8f8f8 |
| 次要文本 | #ffbbbb |
| 错误 / 成功 / 警告 | #f14c4c / #89d185 / #cca700 |

Solarized Dark (solarized-dark)
内置 VSCode “Solarized (dark)”主题 colors 块的忠实移植:经典的 base03 青黑色阶梯,搭配参考主题的青色强调色(#2aa198,即主题的焦点/选中/按钮颜色)。

| 角色 | 值 |
| --- | --- |
| 编辑器 / 应用基础 | #002b36 |
| 侧边栏 | #00212b |
| 小组件 / 代码块 | #004052 / #00212b |
| 输入框 / 下拉菜单 / 菜单 | #003847 |
| 品牌强调色 | #2aa198 |
| 主要文本 | #839496 |
| 次要文本 | #93a1a1 |
| 错误 / 成功 / 警告 | #dc322f / #859900 / #b58900 |

相对于参考主题的适配:半透明强调色(#2AA19899 边框、#004454AA 悬停态)改为不透明或混合颜色,以便在 DSH 各表面上保持稳定;主按钮将青色填充与 base03 文本搭配;信息按钮保留参考主题的徽章蓝 #047aa6,并使用 DSH 硬编码的白色按钮文本;toast 和 tooltip 表面采用输入框青色 #004052。

Solarized Light (solarized-light)

内置 VSCode “Solarized (light)”主题 colors 块的忠实移植:base3 奶油色阶梯,搭配参考主题的黄色强调色(#b58900,即主题的徽章/进度/突出按钮颜色)。

| 角色 | 值 |
| --- | --- |
| 编辑器 / 应用基础 | #fdf6e3 |
| 侧边栏 | #eee8d5 |
| 小组件 / 代码块 | #eee8d5 / #f7f0e0 |
| 输入框 / 下拉菜单 / 菜单 | #ddd6c1 |
| 品牌强调色 | #b58900 |
| 主要文本 | #657b83 |
| 次要文本 | #586e75 |
| 错误 / 成功 / 警告 | #dc322f / #859900 / #b58900 |

相对于参考主题的适配:半透明金色(#DFCA8844、#B58900AA)改为不透明或混合颜色,以便在 DSH 各表面上保持稳定;主按钮将黄色填充与 base03 文本搭配;toast 和 tooltip 像原版浅色主题一样保持在深色 base02/base03 组合上;选中金色 #dfca88 承载活动的列表/导航状态。

完整的 token 映射(每个 Solarized 调色板 89 个 token;VSCode Red 为 87 个,其成功/警告三级状态保留原版值)编写于 src/palettes.js;生成的 bundle 为 client.js。参考主题的 tokenColors(语法高亮)被有意省略:DSH 主题层仅暴露表面/界面 chrome token,因此那些代码颜色规则没有可映射的 token。

设置

映射 UI 位于 设置 → 插件 → 插件配置 页面,以 “主题调色板” 卡片形式呈现。与该部分的其他插件卡片一样,它默认处于折叠状态——使用标题按钮展开它。它包含:

- 浅色外观使用 — 一个下拉菜单,提供 Default 以及所有已注册的调色板。
- 深色外观使用 — 一个下拉菜单,提供 Default 以及所有已注册的调色板。
- 一个目录列表,显示每个调色板的双色预览(基础色 + 强调色)、标签、id,以及内置/第三方标记。
- 当宿主端持久化表面不可用时,显示“未持久化”提示。
更改会实时生效,并作为用户设置文档($DSH_HOME/settings.yaml)中的一个扁平区段持久保存:

{
"theme-palettes": {
"dark": "solarized-dark", // 示例:深色外观使用 Solarized Dark
"light": "solarized-light" // 示例:浅色外观使用 Solarized Light
}
}

默认值为 dark: default、light: default —— 与不存在该区段时相同。引用未注册 id 的值会表现为 default,并在下拉菜单中显示为“(unavailable)”。

为什么使用标准设置界面(rc7)

rc7 移除了 harness 中硬编码的设置命名空间允许列表:设置通信线路现在会提供 Host 插件注册的每一个命名空间(settings-not-exposed 已不复存在)。因此,本包端到端使用标准界面:

- host 部分在 Host 设置接缝上注册 theme-palettes 命名空间,因此写入会与第一方命名空间落在同一个用户设置文档中,通信线路也会将该命名空间暴露给浏览器。
- browser 部分通过标准的 settingsScope 服务绑定该命名空间。该 scope 负责通信线路读取、写入时的修订版本防护,以及失效订阅(settings/document-updated 和重连),因此来自另一个浏览器或 host 的更改会保持实时生效。
- 插件配置标签页会为每个提供的命名空间分发一张卡片,并按 key 将卡片与命名空间匹配。“Theme palettes”卡片注册在 theme-palettes key 下——即上面的命名空间——正是这一点将两者配对,并使该卡片显示出来。

(在 rc6 及更早版本中,通信线路拒绝第三方命名空间,因此本包通过自己的 /api/theme-palettes HTTP 路由进行持久化。该路由已移除:标准通信线路是受支持的界面,私有路由已不复存在。)

第三方作者

调色板是纯数据。通过 themePalettes 服务注册它:

{
inject: ['themePalettes'],
apply(ctx) {
ctx.themePalettes.registerPalette({
id: 'my-package/ocean',      // 带有作者包名称的命名空间
label: 'Ocean',
tokens: {
'--dsw-alias-bg-base': '#0b1e2d',
'--dsw-specific-sidebar-fill': '#081825',
// ...
},
})
},
}

- registerPalette({ id, label, tokens }) 返回一个 disposer;list() 返回 [{ id, label, builtIn, swatch, accent }](swatch 是调色板的 --dsw-alias-bg-base 值,accent 是其 --dsw-alias-brand-primary,若不存在则回退到 base —— 两者共同为设置目录的双色预览图块提供数据)。
- 重复 id 会抛出错误 —— 请选择唯一的 id。
- 使用你的包名作为命名空间 id(例如 my-package/ocean)以避免冲突。
- 动态的会话作用域插件也可以注册调色板。
- Token 是 --dsw- 设计 token 的扁平 CSS 变量值;覆盖层会自动为浅色和深色配对它们。

开发

手工编辑的源文件位于 src/:
- src/palettes.js — 调色板目录(内置调色板与辅助函数)。
- src/client.js — 运行时:themePalettes 服务、映射存储(settingsScope 快照针对 theme-palettes 命名空间的投影),以及覆盖层。
- src/settings.js — “主题调色板”插件配置卡片 UI(以命名空间键注册到 settings.plugin.item 中)。
- src/host.js — 宿主部分:theme-palettes 设置命名空间的注册。
- src/host-schema.js — 无依赖的命名空间契约(schema 与注册)。

使用以下命令重新生成产物:

node build.mjs   # or: npm run build

这会重写三个生成的文件:

- client.js — ./client 导出:工厂包(window.__ModuleLoader__.load),shell 将其作为经典脚本加载;原始 ESM 在那里会是 SyntaxError。
- index.js — 宿主部分,由 src/host.js + src/host-schema.js 内联而来,并保留其 schemastery 导入。
- cordis.patch.yml — 插入该行的 dsh.bundle 补丁层。

使用基于桩的契约测试运行:

node test.mjs    # or: npm test

提交生成的文件:安装时消费的是已提交的产物,因此这里刻意没有 prepare 钩子(pnpm 10+ 会阻止 git 托管依赖的生命周期脚本,除非将其加入允许列表)。prepublishOnly 会在发布前重新构建产物。

故障排除

pnpm 10+ 会拒绝运行 git 依赖的生命周期脚本,除非它们被加入允许列表。本包刻意不附带任何安装时脚本(其产物已提交),因此上述安装开箱即用。如果 pnpm 针对另一个确实需要构建脚本的插件报告 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,请将 pnpm 打印出的确切键添加到配置文件的 pnpm-workspace.yaml 中——pnpm 10 上是 onlyBuiltDependencies,pnpm 11 上是 allowBuilds——然后重新运行。

许可证

MIT。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群