- Home
- Plugins
- Themes & Appearance
- dsh-theme-longmarch
dsh-theme-longmarch
soviet-dreadnaught/dsh-theme-longmarch
Red-phosphor CRT terminal theme for the DeepSeek Harness Web GUI: black background, phosphor-red text, animated data rain and scanlines, and four department presets (Party Affairs, State Council, Central Military Commission, State Security), each with its own emblem, palette and background pattern.
Install
dsh plugin --profile web add github:soviet-dreadnaught/dsh-theme-longmarchREADME
长征机 · dsh-theme-longmarch

上图:四套部门预设的实际配色(党务 / 政务 / 军委 / 国安)。每一套的徽记、配色与背景纹样都会整体切换。
把 DeepSeek Harness 的 Web GUI 换成《烈焰升腾》(The Fire Rises)新左派「长征 / Loji」AI 路线的终端: 纯黑底 + 磷光红字符、红色数据雨、CRT 扫描线,四套部门预设各自带徽记、配色与背景纹样。
纯视觉插件。不注册工具、不发网络请求、不写宿主 DOM,只做三件事:重映射 --dsw-* 令牌、注入一层全部挂在 body[data-dsh-longmarch] 下的 CSS、在官方插槽里渲染装饰层与设置页。
目录
它做什么
- 配色:整套
--dsw-*令牌重映射为长征路线色板(纯黑底 + 磷光红 + 信号绿 / 琥珀 / 品红) - 四套部门预设:党务管理 / 国家政务 / 中央军委 / 国家安全 —— 各自带徽记、配色与背景纹样,一键切换
- 动效:红色二进制雨(
shell.overlay层)、CRT 扫描线 + 过扫光带、暗角、柔和噪点、左下角 CHANGZHENG / CPUPF 读数 - 设置页:设置 → 左侧「长征终端」:切预设、开关各特效、辉光强度、扫描线亮度、背景徽记强度、字符亮度(60–200%)、重置(存在浏览器 localStorage)
- 品牌位接管:左上角官方 DeepSeek 字样换成
CHANGZHENG / CPUPF · 状态 + 光标(sidebar.brand.name/sidebar.brand.mark,priority -1 覆盖官方) - 新会话标题接管:新会话页的鲸鱼与「探索未至之境」换成党徽 +
长征计划 · LONG MARCH/走向数字世界 · CPUPF(可关) - TUI 直角:半径令牌全部归零;输入卡(
[data-composer-card])改为 1px 亮红硬边 + 焦点发光 - 锁定暗色:注册
colorScheme: dark的真主题并钉住,宿主才会写color-scheme: dark/data-ds-dark-theme,其它插件据此切到暗色面板 - 浅色令牌兜底:覆盖
--dsw-static-neutral-50/-100与--dsw-alias-file-diff-*,消除交付卡 / 改动卡的白块
安装
方式一:放进 profile 的 node_modules(推荐,桌面版可用)
# 1. 包放进 profile 的 node_modules
Copy-Item -Recurse -Force '.\dsh-theme-longmarch' "$env:DSH_PROFILE_DIR\node_modules\dsh-theme-longmarch"
# 2. 在 profile 的 cordis.patch.yml 末尾保留挂载行
# - insert:
# - id: dsh-theme-longmarch
# name: 'dsh-theme-longmarch'
# 3. Ctrl+F5 刷新页面(宿主图变化通常会自动热更)
Windows 桌面版的 profile 默认在 %USERPROFILE%\.dsh\profiles\desktop。
卸载:删掉 node_modules\dsh-theme-longmarch 与那三行挂载即可。
方式二:CLI
dsh plugin --profile desktop add ./dsh-theme-longmarch
桌面版对 CLI 安装可能会拒绝(需要先确认宿主版本允许本地包装载);被拒就走方式一。
四套部门预设
| 预设 | id | 徽记 | 形式 | 配色 | 背景纹样 |
|---|---|---|---|---|---|
| 党务管理 | party | 党徽(镰刀锤头) | 矢量 24×24 | 红磷光 | 终端网格 + 红色数据雨 + 党徽水印 |
| 国家政务 | state | 国徽 | 单色线稿 384×384 | 金 / 暖白 | 金色公文网格 + 缓速数据流 + 国徽水印 |
| 中央军委 | cmc | 军徽(红底金星 + 金八一) | 位图 256×256 | 橙红 / 金 | 战术网格 + 雷达扫描扇 + 军徽水印 |
| 国家安全 | mss | 国安徽(盾 + 长城 + 叶环) | 单色线稿 384×384 | 钢蓝 / 青 | 环形网格 + 十字准线 + 国安徽水印 |
中性层(底色 / 面板 / 边框)由预设的 label 色按比例派生,所以换预设时整套皮肤会跟着换色调。
徽记装配在 MARKS 表里,品牌位、新会话 hero、背景水印三处共用同一份定义。
设置项
| 项 | 说明 | 默认 |
|---|---|---|
| 部门预设 | 四选一,切换徽记 / 配色 / 背景纹样 | 党务管理 |
| 数据雨 | 红色二进制雨背景层 | 开 |
| 扫描线 | CRT 扫描线 + 缓慢过扫光带 | 开 |
| 暗角 | 屏幕四周压暗 | 开 |
| 角标读数 | 接管左上角品牌位(CHANGZHENG / CPUPF / 光标) | 开 |
| 背景徽记 | 背景里的部门徽记强度(预设基准 × 倍率,0 = 关闭) | 150% |
| 辉光强度 | 文字辉光、扫描线与噪点强度 | 65 |
| 扫描线亮度 | CRT 扫描线与过扫光带的强度 | 50 |
| 字符亮度 | 文字与边线亮度(60–200%),偏暗就往上拉 | 100 |
| 共存模式 | 自动让位 / 强制接管(见下) | 自动让位 |
| 接管品牌位 | 关掉即把左上角官方字样原样交还 | 开 |
| 锁定暗色 | 注册并钉住 colorScheme: dark 主题 | 开 |
| 页面高度兜底 | 封掉页面级滚动,排障用(默认关) | 关 |
| 布局诊断 | 右下角显示 innerH / rootH / frameH 与 body 直系子节点 | 关 |
| 弹窗转当前窗口 | 把同源带 hash 的 window.open 改成当前窗口改 hash + reload | 关 |
所有设置存在浏览器 localStorage(键 dsh.longmarch.v1),换机器不带过去。
兼容性
生态约定
DSH 的皮肤 / 主题类插件靠 body 上的通用属性互相识别(dsh-mpkg-wallpaper 的 detectConflicts() 里写死了这份名单:
data-dsh-aurora / data-dsh-whale-song / data-dsh-skin / data-dsh-ui-skin / data-dsh-theme / data-skin)。
本插件同时做两件事:
- 自报家门:在
<body>打data-dsh-skin/data-dsh-ui-skin/data-dsh-theme=longmarch,壁纸 / 主题切换器据此让位(另有自有属性data-dsh-longmarch)。 - 检测别人:扫上面那份签名 +
[data-plugin]里的已知主题 / 皮肤 / 壁纸 id +ctx.theme已注册的第三方主题。
共存模式
| 档位 | 行为 |
|---|---|
| 自动让位(默认) | 检测到其它皮肤 / 主题时不注册主题、不抢外观偏好,只保留自己的 CSS 层 |
| 强制接管 | 无视冲突,始终钉住本主题 |
传送门表面
dialog / [role=dialog] / [role=menu] / [data-menu-material] / [data-radix-popper-content-wrapper]>*
这些被 React 挂到 body 上的根会自带一份令牌,光靠 body 继承盖不住 —— 本主题对它们再声明一遍关键令牌。
(选择器抄自月下载量最高的皮肤 @smalltailqwq/dsh-client-ui-skin-maid-atelier。)
实现笔记
徽记为什么画在覆盖层,而不是背景层
本插件的整屏装饰(数据雨、扫描线、徽记)都画在 shell.overlay 插槽里,而不是 body::before 的背景图层。原因见故障档案第 4、5 条:
宿主的结构性整屏面(AppFrame → 侧栏 → 会话根 → 卡片)是逐层叠上来的,画在内容之下的装饰每穿一层就衰减一次,
12% 的徽记穿到第 2~3 层已经归零。覆盖层是宿主自己给皮肤提供的装饰位,稳定可见。
代价是装饰会浮在内容之上,所以:
- 徽记默认 12~14% 基准 × 1.5 倍率(设置里可调,0 = 关)
- 数据雨、扫描线都是稀疏 / 低对比度的图案
- 底图那层只留网格与底色渐变,不承担"看得见"的职责
覆盖层内部分层表
.lm-fx 的子元素全是 position:absolute,所以 z-index 直接生效:
| z-index | 内容 |
|---|---|
| 1 | 背景纹样:军委的旋转光束 .lm-radar、国安的同心圆 .lm-rings + 十字准线 .lm-cross |
| 2 | 徽记 .lm-wm |
| 3 | 数据雨 .lm-rain |
| 4 | 扫描线 .lm-scan / 过扫光带 .lm-sweep |
| 5 | 暗角 .lm-vig |
| 6 / 7 | 角标读数 .lm-hud / 布局诊断 .lm-diag |
徽记压在光束与同心圆之上是刻意的:光束、同心圆是「背景扫描」,徽记是「前景徽记」。JSX 的 kids.push 顺序也按这张表排,CSS 只是把规则钉死。
主题注册
只叠 token 层不足以让其它插件识别出"宿主是暗色"。本插件注册一个 colorScheme: dark 的真主题并 setTheme,
宿主才会写 color-scheme 与 body[data-ds-dark-theme];theme/change 事件上挂了守卫,主题被别的插件抢走时会重新钉回来。
故障档案
| 症状 | 根因 | 处理 |
|---|---|---|
| 交付卡 / 改动卡一片白 | dsh-client-ui-deliverables 的 --changes-fill / --deliverable-fill 指向 --dsw-static-neutral-50,diff 区用浅色 --dsw-alias-file-diff-*-bg | 覆盖两个静态中性色根 + 6 个 file-diff 令牌(同时写进 !important 兜底块) |
| 第三方面板在深色皮肤里仍是浅灰 | 对方按 data-ds-dark-theme / color-scheme 判断宿主主题,默认回落 white | 注册 colorScheme: dark 的真主题并钉住(设置页「锁定暗色」) |
| 主界面往下滚出现一整截空白 | 第三方浮动面板的位置来自它自己持久化的几何,与主题无关 | 主题侧提供高度链兜底(设置页「页面高度兜底」)+「布局诊断」定位 |
| 背景底图整层不显示 | ① 宿主给 html 铺底后,body 的 background-color 不再传播到画布,而是作为普通盒子背景画在 body::before(z-index:-2)之上;② 结构面用不透明的 --dsw-alias-bg-base 铺底 | body 改 background-color: transparent(底色交给 ::before 最底那层渐变,另给 html 补一份防闪白);--dsw-alias-bg-base 改 transparent、侧栏填充改 86% 半透明,并把 #root / *_frame / *_centerCol / *_sidebarCol / *_rightbarCol / *_root[data-phase] 显式放空 |
| 只有部分预设能看见背景徽记 | 整屏面逐层叠加,::before 里 12% 的徽记每穿一层衰减一次,到第 2~3 层归零 | 徽记改由覆盖层(shell.overlay → .lm-fx → .lm-wm)绘制,和数据雨同级同性质 |
| 徽记被旋转光束 / 同心圆压在下面 | 覆盖层内部没有定 z-index,只看 DOM 顺序 | 定死分层表(见上),JSX 顺序与 CSS 同步 |
定位方法:装上 Edge(
msedge.exe --headless=new --screenshot)跑一张用宿主真实类名与令牌 1:1 复刻的壳页, 同一份 CSS 改前改后各截一张,差异当场可见,不用猜。层级这类问题还可以把光束临时换成纯色方块 + 把徽记拉满不透明度, 直接量中心像素 —— 比看截图靠谱。
徽记取材
| 徽记 | 形式 | 来源与处理 |
|---|---|---|
| 党徽 | 矢量 24×24(145 点) | 官方标准图案描摹(人民网受权发布 4096px PNG):alpha 0.5 等值线 marching squares → Douglas-Peucker 简化 → 归一化到 24×24 viewBox → 单条闭合填充路径 |
| 国徽 | 单色线稿 384×384 | 线稿取墨(R - max(G,B))→ 裁边归一 → 12 级 alpha 遮罩 |
| 军徽 | 双色位图 256×256 | 官方图样线稿 → 星体填红、墨线与八一填金 |
| 国安徽 | 单色线稿 384×384 | 同上,取墨后压成单通道遮罩 |
三种形态各有各的道理:
- 矢量(党徽):线条少,任意缩放都不糊,填充直接取预设的
main色。 - 单色线稿遮罩(国徽 / 国安徽):把线稿的墨迹抽成一张只有 alpha 的 PNG,CSS 里用
mask-image挖形、currentColor上色 —— 所以颜色完全跟着预设走(政务=金、国安=钢蓝),改色不用重出图。 徽记外再套一层.lm-glow做轮廓辉光:一个 1px 的紧光圈叠一个 3.5px 的弱光圈,两层都很淡(水印那档换成vmin单位,跟着尺寸放大)。辉光必须挂在外层 ——
filter比mask先生效,挂在同一层会被遮罩裁掉。 - 双色位图(军徽):红底金星 + 金八一自带配色,保持不动。
所有资源都是 data URI 内嵌,插件始终是单文件、零依赖(只 require('react'),走平台模块表)。
main / deep 两个色位作用于矢量与单色遮罩徽记;军徽那份双色位图自带配色 —— 换色需要重新生成 PNG。
注:党徽、国徽、军徽均为官方标准图案;国安徽是线稿抠图版,国家安全机关未公开发布过标准徽。
生态参考(2026-10 抓取)
| 插件 | npm 近 30 天下载 | GitHub stars |
|---|---|---|
| dshmarket | 596,609 | – |
| dsh-better-sidebar | 241,407 | – |
| dsh-whale-widget | 186,009 | 4,853 |
| @smalltailqwq/dsh-client-ui-skin-maid-atelier | 39,269 | – |
| dsh-mpkg-wallpaper | 8,946 | – |
| dsh-theme-whalegirl | 2,805 | 1 |
| dsh-joi-channel-theme | 2,548 | – |
主题类里装机量最高的是 skin-maid(下载)与 whale-widget(stars)。本插件保留自己的实现,但把它们的共存机制 (通用属性签名、传送门令牌再声明、冲突让位)搬了过来。
图标
插件图标取自《烈焰升腾》本体的长征机图样:
gfx/interface/ideas/PRC/PRC_the_long_march_idea.png(机柜 + 红星 + 镰刀锤头 + 二进制串,正是长征机那条国策线的图标)。
icon.png—— 原图裁边后的 68×68 真彩 PNG 调色板版(2.4 KB)icon@2x.png—— 136×136,给需要更大尺寸的场合icon.svg—— 同一张图的自包含 SVG 包装(内部内嵌 PNG,单文件可缩放)
DSH 插件管理页读的是 package.json 的 meta.icon,它被直接当作 <img src> 使用,所以那里填的是这张 PNG 的 data URI(3.2 KB)——
本地安装的插件没有市场图床,只能内嵌。
已知限制
- 主题是全局的:开启后所有面板都会变成红黑配色,这是皮肤的本意,不是 bug。
- 与其它皮肤插件同时启用时默认让位(只保留 CSS 层,不抢主题偏好);想强推就切「强制接管」。
- 安装需要写 profile 目录:CLI 安装被拒时只能手动放包(见安装方式一)。
- 纯 CSS 层不做像素级布局改动:主题不移动、不隐藏宿主控件,只改外观。
许可
MIT,见 LICENSE。版本历史见 CHANGELOG.md。
《烈焰升腾》是 HOI4 的第三方模组,本插件与模组作者、与 DeepSeek 官方均无隶属关系,仅取配色与意象作为同人创作。
Related plugins
dsh-deep-whale (maid-atelier)
small-tailqwq/dsh-deep-whale
dsh-wallpaper-engine
elysia395/dsh-wallpaper-engine
dsh-deep-whale
small-tailqwq/dsh-deep-whale
open-sea-skin
d-dev0101/open-sea-skin