前言¶
DSH 的理念是「一切皆插件」,界面本身也是可替换的一环。对于日常要用 DSH 工作台的人,纯深色或纯浅色主题看久了容易疲劳;想换换口味,又不希望动到聊天记录、代码块字体这些真正影响阅读的部分。dsh-theme-eva 就是冲着这个需求来的:它把工作台换成《新世纪福音战士》里 EVA 机体的一整套视觉,包括开机动画、同步率仪表和机体配色,但把聊天与代码区保留给 DSH 自己的排版。
下面介绍 nerv-base/dsh-theme-eva,一个由 nerv-base 维护的 DSH 插件,分类属于趣味换装。它目前尚未发布到插件市场,需要按 README 的方式自行构建后安装。
这是什么¶
一句话定位:dsh-theme-eva 是 DeepSeek Harness 的 EVA 主题插件,提供初号机(Unit-01)和弐号机(Unit-02)两套机体配色,可在运行时实时切换。仓库地址是 https://github.com/nerv-base/dsh-theme-eva ,目录页在 https://www.skillhub.cn/plugins/nerv-base/dsh-theme-eva ,当前版本 0.2.1,代码以 MIT 许可发布。
它解决的问题很具体:让 DSH 的界面换上 EVA 机体的色彩语言(装甲色、标记色),同时用代码画一段开机的「接入」动画,而不是塞一堆第三方美术素材。两套机体的差异参数如下:
| 机体 | 装甲色 | 标记色 | 同步停止点 |
|---|---|---|---|
| 02 弐号機 · PRODUCTION MODEL | #d8262e |
#f06a22 |
99.2% |
| 01 初号機 · TEST TYPE | #8d4dde |
#a0da3b |
99.6% |
核心功能¶
接入动画(Entry cinematic)¶
每次打开页面会播放一段由代码绘制的开机序列:起始闸门 → 赛璐璐着色(toon + 描边)的插入栓以硬切镜头插入脊椎接口 → X 光视角看插入栓穿过锁环 → LCL 灌满驾驶舱并通电 → 指挥室监视器画面的硬切序列(主电力分配、逐行展开的电路矩阵、按肢体逐一点亮的解剖神经连接图、A10 回路脑区生命体征曲线、三台计算机投票)穿插在明朝体字幕卡之间 → 谐波示波器中驾驶员与机体两个波形(六边形网格管)随同步率上行到机体的停止点,等待驾驶员确认 → 100% → 「弐号機 起動」/「初号機 起動」标题卡 → 进入工作台。
整段完全由 three.js 与 2D canvas 实时绘制,只在播放期间加载。想跳过,按住 Esc(或按住跳过按钮)约 1.2 秒,进度条按住时填充、提前松手会回退。
同步率表盘(Sync plate)¶
会话头部有一块小表盘,同步率 = 100% − 上下文窗口占用率,取自会话真实的上下文压力。低于 30% 变为橙色(精神汚染),低于 10% 变为红色(シンクロ率低下)。
运行指示灯(Running indicator)¶
对话末尾的原生「Deep diving / 深度求索中」视觉被替换为「内部電源」时钟和机体标记色的淡信号线。时钟读取当前这一轮的真实开始时间戳,因此切换会话或在轮次中途挂载都不会重置它。关闭主题或关闭运行指示灯会恢复原生显示,其静态屏幕阅读器播报仍被保留;撰写区上方不会出现重复的指示灯。
背景层(Backdrop)¶
对话区背后是自制的监视器风格图形:淡的「弐」/「初」水印、六边形网格、竖排说明文字、相位列表和警示条纹。这些轮廓是从 OFL 字体描出来的,没有使用第三方美术。
日常皮肤(Everyday skin)¶
日常使用的皮肤相对克制,目的是让聊天和代码保持可读:机体配色、倒角、侧边栏顶部的装甲色渐变、「02」/「01」机体徽标、明朝体标题。消息和代码块仍然使用 DSH 自带的字体。
设置项¶
设置位于「Settings → General → EVA 接入 / EVA Link」:主题、机体(搭乘机体:初号机 / 弐号机)、接入动画、语音与音效、运行指示灯、同步率表盘都可以单独关闭,还有一个 Replay 按钮。侧边栏底部另有「重新接入 / Re-link」按钮。
有几个行为需要注意:
1、主题开启时外观被锁定为深色(EVA 没有浅色模式),关闭主题会恢复你自己设置的浅色 / 深色 / 跟随系统。
2、如果系统开启了 Reduce motion,3D 接入动画会被一段 2 秒的静态标题卡替代,没有闸门,也没有运行指示灯动画。
安装与启用¶
官方 README 给出的安装方式是先构建 bundle:
git clone https://github.com/nerv-base/dsh-theme-eva.git
cd dsh-theme-eva
npm install
npm run build
上面的命令从仓库源码构建出 lib/client.js(主 bundle)与 lib/client.cinema.js(惰性加载的接入动画 chunk)。构建完成后,在 DSH 会话里让 agent 用插件管理器的 install_bundle 安装该目录的绝对路径;仓库也说明,待插件市场发布后可从市场安装。安装后需要重载窗口。
典型用法¶
globalThis.dshThemeEva.units // [{ id: "02", themeId: "eva-02", label, palette, … }, { id: "01", … }]
globalThis.dshThemeEva.getUnit() // 当前显示的机体;主题关闭时为 undefined
await globalThis.dshThemeEva.setUnit("01") // 持久化并切换(Host 拒绝时返回 false)
await globalThis.dshThemeEva.setEnabled(false)
window.addEventListener("dsh-theme-eva:change", (e) => e.detail) // { unit: "01", themeId: "eva-01" } | { unit: null, … }
每一台机体注册自己的 DSH theme(eva-01 / eva-02);切换时先激活新主题再收回旧主题,因此不会闪出默认调色板。皮肤与组件样式读取 --eva-accent、--eva-marking、--eva-green 等自定义属性,其他插件也可以复用;body[data-eva-theme] 上存放机体 id。
选中的机体是 settings 文档 theme-eva 段落里持久化的 unit 字段("01" | "02",默认 "02"),因此设置界面、configForms.get("theme-eva").set("unit", "01") 或编辑 settings 文档都能切换。
想单独预览某台机体的接入动画,用本地静态服务器打开 /scripts/harness/cinema.html,加 ?unit=01 可以看另一台机体的版本。
适用场景与注意¶
适合想把 DSH 界面换成 EVA 机体风格、又希望不影响阅读的人;也适合想研究如何在 DSH 里写主题插件的开发者。README 里还写了完整的开发命令:
| 命令 | 作用 |
|---|---|
npm run build |
把 src/ 打包为 lib/client.js 与惰性 chunk lib/client.cinema.js;-- --dev 跳过压缩,-- --watch 监听重建。 |
npm test |
运行机体数据、原生状态适配器和挂载 React 生命周期的回归测试。 |
npm run fonts |
从完整 OTF/TTF 源重新子集化字体(EVA_FONT_SRC,默认 /tmp/evafonts);改动日文文案后需要执行。 |
npm run voice |
用 edge-tts 渲染缺失的播报音频;-- --force 重新渲染全部。需要先 python3 -m pip install --user edge-tts。 |
使用前需要留意几点。插件以当前 dsh 进程的权限运行,安装前应先检查源码与许可证。仓库声明代码是 MIT 许可,捆绑字体是 SIL OFL 1.1 子集的 Noto Serif CJK JP 和 Barlow Condensed,three.js 是 MIT;播报音频不在 MIT 许可覆盖范围内,它们是用 Microsoft 的 ja-JP-NanamiNeural 声音经 edge-tts 渲染的,Microsoft 并未对这类输出授予明确的再分发许可,详见仓库的 NOTICE.md。另外这是非官方同人作品,与 khara、Studio Gainax 等版权方及 DeepSeek 均无关联,不含原作的影像、音乐、配音、角色美术或标志。
结尾¶
dsh-theme-eva 的价值不在于改了多少 DSH 的能力,而在于把「打开工作台」这件事做了一层机体化的包装:接入动画只在播放时加载,同步率表盘读的是真实上下文压力,日常皮肤保留 DSH 自己的字体排印。想试试的人,先按官方命令构建 bundle,再通过 install_bundle 挂载即可。
目录页:https://www.skillhub.cn/plugins/nerv-base/dsh-theme-eva
仓库:https://github.com/nerv-base/dsh-theme-eva