Preface¶
The philosophy of DSH is “everything is a plugin”, and the interface itself is a replaceable component. For people who use the DSH workspace daily, looking at a pure dark or pure light theme for too long can cause fatigue. Wanting a change without affecting chat history, code block fonts, and other parts that truly affect reading, dsh-theme-eva is for this need: it replaces the workspace with a complete visual set of EVA units from Neon Genesis Evangelion, including startup animations, sync rate gauges, and unit color schemes, but leaves the chat and code areas for DSH’s own layout.
Below introduces nerv-base/dsh-theme-eva, a DSH plugin maintained by nerv-base, categorized as a fun skin/theme. It has not been released to the plugin market yet and needs to be built and installed according to the README method.
What is it¶
One-sentence positioning: dsh-theme-eva is the EVA theme plugin for DeepSeek Harness, providing two sets of unit color schemes: Unit-01 and Unit-02, which can be switched in real-time at runtime. The repository address is https://github.com/nerv-base/dsh-theme-eva , the directory page is https://www.skillhub.cn/plugins/nerv-base/dsh-theme-eva , the current version is 0.2.1, and the code is released under the MIT license.
The problem it solves is specific: to replace the DSH interface with the color language of EVA units (armor color, marking color), while using code to draw a startup “Entry” animation instead of stuffing a bunch of third-party art assets. The difference parameters for the two units are as follows:
| Unit | Armor Color | Marking Color | Sync Stop Point |
|---|---|---|---|
| 02 Unit-02 · PRODUCTION MODEL | #d8262e |
#f06a22 |
99.2% |
| 01 Unit-01 · TEST TYPE | #8d4dde |
#a0da3b |
99.6% |
Core Features¶
Entry cinematic¶
Every time a page opens, a startup sequence drawn by code plays: Starting Gate → Toon shading (toon + stroke) insertion plug hard cut into spine interface → X-ray view of insertion plug passing through lock ring → LCL filling cockpit and powering up → Hard cut sequence of command room monitor (main power distribution, circuit matrix expanded line by line, anatomical neural connection diagram lit up limb by limb, A10 circuit brain area life signs curve, three computers voting) interspersed between Ming-style subtitle cards → Harmonic oscilloscope driver and unit two waveforms (hexagonal grid tubes) rising with sync rate to the unit’s stop point, waiting for driver confirmation → 100% → “Unit-02 Startup” / “Unit-01 Startup” title card → Enter workspace.
The entire sequence is drawn in real-time using three.js and 2D canvas, loaded only during playback. To skip, hold Esc (or hold the skip button) for about 1.2 seconds; the progress bar fills while held, and rewinds if released early.
Sync plate¶
There is a small gauge in the session header. Sync rate = 100% - Context window occupancy rate, taken from the real context pressure of the session. Below 30% it turns orange (Mental Pollution), below 10% it turns red (Low Sync Rate).
Running indicator¶
The native “DeepSeeking” visual at the end of the conversation is replaced by a “Internal Power” clock and a faint signal line in the unit’s marking color. The clock reads the real start timestamp of the current turn, so switching sessions or mounting mid-turn won’t reset it. Closing the theme or the running indicator restores the native display; the static screen reader announcement is still preserved; no duplicate indicator appears above the compose area.
Backdrop¶
Behind the conversation area is a custom monitor-style graphic: faint “Unit-02” / “Unit-01” watermark, hexagonal grid, vertical explanatory text, phase list, and warning stripes. These outlines are traced from OFL fonts, no third-party art assets were used.
Everyday skin¶
The skin for daily use is relatively restrained, aiming to keep chat and code readable: unit color scheme, rounded corners, gradient of armor color at the top of the sidebar, “Unit-02” / “Unit-01” unit logo, Ming-style titles. Messages and code blocks still use DSH’s built-in fonts.
Settings¶
Settings are located in “Settings → General → EVA Link / EVA Entry”: Theme, Unit (Ride Unit: Unit-01 / Unit-02), Entry animation, Voice and sound effects, Running indicator, Sync rate gauge can all be turned off individually, plus a Replay button. There is also a “Re-link” button at the bottom of the sidebar.
There are a few behaviors to note:
- When the theme is on, appearance is locked to dark (EVA has no light mode); turning off the theme restores your own set light/dark/follow system.
- If Reduce motion is enabled in the system, the 3D Entry animation is replaced by a 2-second static title card, with no gate and no running indicator animation.
Installation and Enablement¶
The official README provides the installation method: first build the bundle:
git clone https://github.com/nerv-base/dsh-theme-eva.git
cd dsh-theme-eva
npm install
npm run build
The commands above build lib/client.js (main bundle) and lib/client.cinema.js (lazy loaded Entry animation chunk) from the repository source code. After building, in a DSH session, let the agent use the plugin manager’s install_bundle to install the absolute path of that directory; the repository also states that it can be installed from the market once released. After installation, the window needs to be reloaded.
Typical Usage¶
globalThis.dshThemeEva.units // [{ id: "02", themeId: "eva-02", label, palette, … }, { id: "01", … }]
globalThis.dshThemeEva.getUnit() // Current unit displayed; undefined if theme is off
await globalThis.dshThemeEva.setUnit("01") // Persist and switch (returns false if Host refuses)
await globalThis.dshThemeEva.setEnabled(false)
window.addEventListener("dsh-theme-eva:change", (e) => e.detail) // { unit: "01", themeId: "eva-01" } | { unit: null, … }
Each unit registers its own DSH theme (eva-01 / eva-02); when switching, it activates the new theme before deactivating the old one, so the default palette doesn’t flash. Skins and component styles read custom properties like --eva-accent, --eva-marking, --eva-green, and can be reused by other plugins; body[data-eva-theme] stores the unit id.
The selected unit is the unit field persisted in the theme-eva section of the settings document ("01" | "02", default "02"), so the settings interface, configForms.get("theme-eva").set("unit", "01"), or editing the settings document can all switch.
To preview the Entry animation of a specific unit locally, open /scripts/harness/cinema.html with a local static server, and add ?unit=01 to see the version for the other unit.
Suitable Scenarios and Notes¶
Suitable for those who want to replace the DSH interface with an EVA unit style without affecting readability; also suitable for developers who want to study how to write theme plugins in DSH. The README also lists complete development commands:
| Command | Function |
|---|---|
npm run build |
Builds src/ into lib/client.js and lazy chunk lib/client.cinema.js; -- --dev skips minification, -- --watch watches for rebuilds. |
npm test |
Runs regression tests for unit data, native state adapters, and mounting React lifecycle. |
npm run fonts |
Re-subsets fonts from full OTF/TTF sources (EVA_FONT_SRC, default /tmp/evafonts); needs to be run after changing Japanese text. |
npm run voice |
Renders missing announcement audio using edge-tts; -- --force re-renders everything. Needs python3 -m pip install --user edge-tts first. |
A few points to note before use. The plugin runs with the permissions of the current dsh process; source code and license should be checked before installation. The repository declares the code is MIT licensed, bundled fonts are subsets of Noto Serif CJK JP and Barlow Condensed under SIL OFL 1.1, and three.js is MIT; announcement audio is not covered by the MIT license, they are rendered using Microsoft’s ja-JP-NanamiNeural voice via edge-tts, and Microsoft has not granted explicit redistribution licenses for such output, see NOTICE.md in the repository for details. Also, this is an unofficial fan work, not affiliated with khara, Studio Gainax, or DeepSeek, and does not contain original work’s visuals, music, dubbing, character art, or logos.
Ending¶
The value of dsh-theme-eva lies not in how much it changes DSH’s capabilities, but in wrapping the act of “opening the workspace” with a layer of unitization: the Entry animation is loaded only during playback, the Sync rate gauge reads real context pressure, and the Everyday skin preserves DSH’s own typography. For those who want to try, first build the bundle using the official command, then mount it via install_bundle.
Directory page: https://www.skillhub.cn/plugins/nerv-base/dsh-theme-eva
Repository: https://github.com/nerv-base/dsh-theme-eva