dsh-plugin-debugging
For DSH plugin development: runtime diagnostics and in-place fixes your agent can run itself.
What it is
For DSH plugin development: runtime diagnostics and in-place fixes your agent can run itself.
How to install
Run this in the DSH web profile, then refresh the page.
$ dsh plugin --profile web add dsh-plugin-debugging@0.8.0
DSH versions accepted
^0.1.7-rc.1 || ^0.2.0-rc.1 || ^0.2.1-rc.1 || ^0.2.2-rc.1
Author and traction
dsh-plugin-lab · ★ 9 · Updated 2026-11-09
About this plugin
dsh-plugin-debugging
Let your DSH agent inspect and fix its own runtime
让 DSH agent 自检自修它身处的运行时
Per-version changes → Releases
English · 简体中文
---
You changed a plugin and it didn't take effect? In DSH, that usually means one of three things:
- Plugin config: re-read on every change, so edits apply immediately. This presumes
hmris mounted inprofile; withouthmr, every change degrades to restart-required. - Plugin host code: a process loads code once at startup, so edits need a restart.
- Plugin front-end assets: the browser swaps assets by fingerprint, so edits need a hot reload or refresh.
This plugin lets the agent decide which case you're in, and what to do next.
What it does
After installation, the agent gains a set of tools and a skill document. The skill loads on demand; you invoke it with a slash command.
Tools
Read-only — they change nothing on the host.
| Tool | Arguments | What it does | Web | Desktop |
|---|---|---|---|---|
| dsh_list_instances | port | List the DSH hosts running on this machine. A port counts as DSH only when an unauthenticated GET / returns the exact DSH body. "Could not probe" and "not DSH" are reported separately. | ✓ | ✓ |
| dsh_check_auth | host, port | Tell "not running" apart from "not authenticated". | ✓ | ✓ |
| dsh_diagnose_plugin_load | package, port, dshHome | Check whether a plugin actually loaded: bundle membership, mount form, loader tree, with observed evidence kept separate from inferred evidence. | ✓ | ✓ |
| dsh_check_effect_mode | change: config / bundle-added / host-code / client-code, alreadyInDependencies, dshHome | Tell whether a change takes effect live, needs a restart, or needs a hot reload. It probes the running profile instead of guessing. | ✓ | ✗ |
| dsh_dump_config | profile, dshHome | Show what a profile resolved to: the composed tree, plus the diagnostics that explain it. | ✓ | ✗ |
| dsh_sign_cookie | host, port, maxAgeDays, dshHome | Sign a browser-session cookie into a file, so a script or browser automation can reach your own DSH instance. | ✓ | ✓ |
Changes state — the first two swap code or end the host you are debugging.
| Tool | Arguments | What it does | Web | Desktop |
|---|---|---|---|---|
| dsh_hot_reload | exactly one of entryId / module / serverName, plus dryRun | Swap a mounted entry to the latest code on disk without restarting. Rolled back on failure. | ✓ | ✓ |
| dsh_restart | reason, delayMs, dryRun, force | Restart this host when a change truly requires it. Off by default. | ✓ | ✗ |
Rows follow the order you would use them, so the two tables split on a single line: whether they change anything. The last column is availability by carrier; reasons live under [Platform support](#platform-support).
Three common traps:
- A
401fromdsh_check_authdoes not mean the session expired. A request carrying nocookiealways gets401, so anauth probe's401only proves the service is running and wants authentication. To tell "the session is still valid" apart from "theauthorityis wrong", you must open thathost:portin a browser. An oldcookiekeeps working after a restart on the same port; only a changed port produces401. dsh_hot_reloadmay leak. Resources the framework does not track — atimerorsocket, for example — leak silently after a swap.dsh_restarthas its own section below.
The skill document behind it
The skill document lives at [skills/dsh-plugin-debugging/SKILL.md](skills/dsh-plugin-debugging/SKILL.md) and carries the full reasoning behind install forms, credential acquisition, process identification, and isolated instances.
The tools are accelerators; if a tool's output conflicts with the skill document, the skill document wins.
Install
Install from the Plugins page:
Open the Plugins page, click Add plugin in the upper-right corner, enter dsh-plugin-debugging, and install.
Install from npm:
dsh plugin --profile web add dsh-plugin-debugging
Install from source:
git clone https://github.com/dsh-plugin-lab/dsh-plugin-debugging.git cd dsh-plugin-debugging pnpm install && pnpm run build dsh plugin --profile web add "$PWD"
Notes:
- Do not skip
pnpm install: with alink:install, dependencies come from the repository itself; skipping it makes the plugin show up as not running and reportERR_MODULE_NOT_FOUND. - Restart to take effect: restart
dsh --profile webafter installing. link:anddsh.bundleare two separate things:link:only decides whether editing source needs a reinstall; whether thepatchlayer applies depends on whether the package declaresdsh.bundle.
Requirements:
Node >= 20, and a DSH version that satisfies the range in [package.json](package.json).
Maintenance rules:
The profile's dependency and bundle list are managed by dsh plugin add; do not edit them by hand. Do not create packages under $DSH_HOME, and do not run a package manager inside a profile directory.
Safety and boundaries
Except for dsh_restart, these tools never restart a process, never rewrite a profile, and never write to host data. Tests enforce this rule: as soon as any write targets a host-data path (profiles / sessions / storages / logs / cache / attachments / backups / integrations / mcp / settings.yaml / .credentials.yaml …), or uses DSH_HOME itself as the target, pnpm run test fails.
The only write exception is this plugin's own namespace, $DSH_HOME//: only the first directory directly under $DSH_HOME must exactly match the package name; anything below that is unrestricted.
What each one touches:
- Read-only, no requests:
dsh_check_effect_mode, `dsh_diagnose
Compare in this category
The five most-starred plugins in the same category.
| Plugin | Author | Stars | Version | Updated |
|---|---|---|---|---|
| archify | tt-a1i | 95.2K | 0.0.0 | 2026-11-10 |
| nuwa-skill | alchaincyf | 37.9K | 2.0.1 | 2026-11-10 |
| distilly | titanwings | 26.5K | 1.0.0 | 2026-10-13 |
| learn-harness-engineering | walkinglabs | 24.1K | 0.1.0 | 2026-10-22 |
| dsh-Go | ccch1mneyyy | 18.1K | 0.0.0 | 2026-11-10 |