dsh-terminal-theme:只给 DSH 终端面板换配色

前言

DeepSeek Harness(DSH)侧栏里的终端面板,默认跟着应用的全局主题走。全局切浅色、深色时,终端背景与 ANSI 色也会一起变。若你希望在对话区、设置页仍用 DSH 主题 token,而终端单独用 Dracula、Nord 或自建配色,就需要把样式限定在终端 DOM 子树内,而不是改全局 CSS 变量。

dsh-terminal-theme 由维护者 wnanbei 发布,分类为趣味换装。它通过可导入的 JSON 色板,为终端面板提供独立配色;侧边栏、会话与 Settings 仍读取 DSH 原有主题。插件当前在 GitHub 上星标为 0,许可证为 MIT,package.json 中版本为 1.0.0。

这是什么

一句话:dsh-terminal-theme 是 DSH 的 bundle 插件,在浏览器端为 [data-sidebar-terminal] 作用域注入配色表,不替换、不包裹终端组件,也不读写终端私有状态。

社区目录页:https://www.skillhub.cn/plugins/wnanbei/dsh-terminal-theme
源码与说明:https://github.com/wnanbei/dsh-terminal-theme

DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek、幻方无官方从属关系。安装前请自行阅读源码与许可证,插件随当前 DSH 进程在本地运行。

核心功能

下面介绍 README 中已写明的能力。

仅终端生效。 规则只作用于终端面板;取消主题时仅移除注入的 stylesheet,全局 DSH 主题 token 不变。

与浅色/深色模式解耦。 选定终端主题后,应用切换 light/dark 时,终端仍保持该套颜色。

内置与自定义。 内置包括 Dracula、Nord、Solarized Dark / Light、Gruvbox Dark、One Dark、Tokyo Night、Catppuccin Mocha、GitHub Light。另可在设置页粘贴 JSON 或从 .json 文件导入;导入时会校验、规范化并写入浏览器存储。

可完全还原。 选择 Follow app theme 后,终端恢复 DSH 默认外观(含随应用明暗切换的行为)。

主题存储位置。 自定义主题保存在浏览器 localStorage,不在 profile 配置里,DSH 升级一般不会清掉;其他浏览器 profile 彼此不共享。

安装与启用

在 DSH 原生 Plugins 页:Add plugin → 粘贴安装 spec → Install。README 给出三种 spec:

Spec 适用情况
dsh-terminal-theme 包已发布到 npm 时使用
https://github.com/wnanbei/dsh-terminal-theme 直接从 GitHub 安装;pnpm 会克隆仓库,无构建步骤
本地目录路径(示例:/Users/wnanbei/code/dsh-terminal-theme) 本地持续改代码时用 link: 依赖

对话框还支持 tarball、git+https://… 地址,以及指定 registry 的单次安装。若包未声明 bundle patch,安装会被拒绝;仓库根目录须为完整 npm 包。

本地目录安装会把文件夹 link 到当前 profile 的 node_modules/dsh-terminal-theme,改代码后刷新页面即可生效。GitHub 安装则是拷贝进 profile,更新需先移除 bundle 再重装。已存在同包安装时会提示已安装;换来源前需先移除原 bundle。

智能体侧等价操作为 plugin_manager 的 install_bundle,参数为上述 spec 之一。

Release tarball 也可作为 pinned spec,例如:

https://github.com/wnanbei/dsh-terminal-theme/releases/download/v1.2.0/dsh-terminal-theme-1.2.0.tgz

(示例 URL 来自 README;实际安装时请与 release 页上的文件名、版本一致。)

典型用法

  1. 打开右侧边栏的终端面板,进入 Settings → Terminal colors。
  2. 在 Color themes 下点选一张卡片,终端会立即重绘。
  3. 选 Follow app theme 恢复默认。

导入主题:

  • 在 Import a theme 粘贴 JSON,点 Import and apply;或 Import from file 加载 .json。
  • Fill template 会写入一份可直接改动的完整示例。
  • Copy current theme 导出当前色板,改名后再导入可得到变体。
  • 自定义主题卡片上的 × 可删除该主题。

主题 JSON 最小结构如下(字段含义以 README 表格为准):

{
  "name": "My Theme",
  "background": "#101216",
  "foreground": "#d5dae2",
  "cursor": "#7aa2f7",
  "selection": "#26303f",
  "ansi": [
    "#101216", "#e05f65", "#78bb7b", "#f1cf8a",
    "#70a5eb", "#c68aee", "#74e0c8", "#d5dae2",
    "#5b6270", "#ff8a8f", "#9be59d", "#ffe0a3",
    "#9ac2ff", "#e0aaff", "#9ff3e0", "#ffffff"
  ]
}

必填:name(1–60 字符)、background、foreground、ansi(16 色标准序,或 8 色由插件复用到高亮 8 色)。可选:cursor(默认 foreground)、selection(默认 foreground 30% 透明度)、extended(索引 16–255,最多 240 色)。颜色须为 #rgb 或 #rrggbb 十六进制,导入失败时页面会显示原因。

实现要点与适用场景

实现上,插件在终端子树内重绑 --dsw-alias-bg-base、--dsw-alias-label-primary,并覆盖 xterm DOM 渲染器的 .xterm-fg-N / .xterm-bg-N。终端原有的 OSC 配色、对比度与光标可见性逻辑保持不变。新增内置主题需在 client.js 的 BUILTINS 增加条目;其余配色可走 Settings 导入。

适合:长时间在 DSH 内置终端里跑命令、希望 ANSI 输出可读性稳定,又不想动全局 UI 主题的开发者。注意自定义主题只存在当前浏览器;换机或清站点数据需重新导入。安装 GitHub 源前请核对 cordis.patch.yml 与 client.js 行为是否符合你的安全预期。

结尾

dsh-terminal-theme 把终端配色从 DSH 全局主题里拆出来:内置多套常见配色,支持 JSON 导入与一键跟随应用主题。目录与文档:

  • https://www.skillhub.cn/plugins/wnanbei/dsh-terminal-theme
  • https://github.com/wnanbei/dsh-terminal-theme
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜