dsh-harmony
A library for patching, replacing and decorating dsh plugin during runtime
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CH4ACKO3/dsh-harmony说明文档
阅读完整 README ↗dsh-harmony

A library for patching, replacing and decorating dsh plugin during runtime. It
installs the usual dsh executable, starts the official Harness, and keeps target
plugin files unchanged on disk.
Install
Install Harmony directly as the global dsh launcher:
npm install -g dsh-harmony
Install the official @deepseek-ai/dsh globally first. Harmony's installer
replaces its command entry with a small persistent shim. The same JavaScript
launcher is used on every platform. macOS and Linux expose it as the executable
dsh; Windows adds the native dsh.cmd and dsh.ps1 entry points used by
Command Prompt and PowerShell. After installation, use dsh exactly as before:
dsh web
dsh --profile tui
dsh plugin --profile web add ./my-plugin
Alternatively, install Harmony as a normal profile plugin:
dsh plugin --profile web add dsh-harmony
dsh web
On first boot, choose Install and restart to install the global launcher and restart the same profile with runtime patching enabled.
dsh-harmony is also a real Harness bundle. If that bundle is copied into a
profile before the global runtime exists, WebUI and interactive terminal boots
offer four choices: Install, Install and restart, Remove plugin, and
Ignore once. The harmony service is provided only after a restarted process
has loaded the patch hooks, so dependent plugins cannot start against an
unpatched runtime.
If the official package is installed or upgraded later and takes back the
dsh command, Harmony's bootstrap plugin restores the shim on the next normal
profile start. WebUI shows a restart banner; Restart now gracefully closes
the current Loader tree, launches the same command through Harmony, and reloads
the page when the new process is ready. The running Node process is never
switched between launchers midway through boot.
Every boot collects patches declared by the selected profile's installed dependencies before Harness plugins are loaded. A patch provider discovered by a later Loader update is collected immediately and its target entries are reloaded. Reload generations propagate through relative imports inside the same target package, so an entry and its internal ESM dependency graph use one Patch set. CommonJS entries invalidate their same-package graph before reload.