memorax-ai/dsh-harmony

dsh-harmony is a runtime patch-coordination library for DeepSeek Harness plugins: when one DSH plugin needs to change another without maintaining a fork, Harmony loads Patches before the target runs, changes its compiled code in memory, and starts Harness with the result. Source Patches find TypeScript AST nodes with TSQuery and rewrite their source ranges with MagicString, running one after another so several plugins can change the same target while leaving installed files untouched. Providers can place Patches before/after other providers, composite Patches group changes that must succeed together (all-or-none), and for browser plugins Harmony keeps provider-owned <style data-plugin> tags in Patch order. It makes the dependency explicit, ordered, inspectable, and reversible — disable or remove the Provider to restore original behavior. Inspired by the C# Harmony project by Andreas Pardeike.

Other ★ 14 updated 2026-09-19 ✅ runtime-tested
View on GitHub ↗

Install

npm install -g dsh-harmony

Requires Node.js ^22.22.3 or >=24.11.1 and either @deepseek-ai/dsh@0.1.0-rc.8 or @deepseek-ai/dsh@0.1.1-rc.1 — npm install -g @deepseek-ai/dsh@0.1.1-rc.1, npm install -g dsh-harmony, then dsh web. Open Settings → Harmony after starting the WebUI; a full installation guide (profiles, Desktop integration, updates, removal) is at memorax-ai.github.io/dsh-harmony/guide/installation.

Compatibility

Node.js ^22.22.3 or >=24.11.1; @deepseek-ai/dsh@0.1.0-rc.8 or @deepseek-ai/dsh@0.1.1-rc.1. Listed in the awesome-dsh-plugin curated list. Works against running Hosts transactionally (reports live) and validates/updates stopped profiles atomically (offline); multiple Hosts may use the same profile (file-lock serialized writes).

Details

Recent updates

The current README documents the before/after patch ordering, composite patches, style-tag ordering, the Without/With Harmony comparison table, the install command, and the agent skill (use-dsh-harmony) for authoring and debugging Patches.

FAQ

Is Harmony for runtime patching of other plugins?
Yes — it loads Patches before the target runs, changes its compiled code in memory, and starts Harness with the result, leaving installed package files byte-for-byte unchanged.
Do multiple patches conflict?
Patches run one after another, each reading the source left by the previous one; providers can order themselves before/after others, and composite Patches make a group all-or-none.
How do I undo a patch?
Disable or remove the Provider to restore the original behavior — the README positions Harmony as explicit, ordered, inspectable, and reversible.

Alternatives

PerryLink/dsh-plugin-guide · omdsh-dev/dsh-toolkit · dsh-tui/dsh-tui

More plugins in Other

Browse more in Other

Guides for Other plugins