Runtime observability and plugin operations panel for DeepSeek Harness: shows the profile plugin tree, real Loader fiber state, capabilities/dependencies/compatibility, current-session plugin activity and upstream source/version checks, with one-click enable/disable/update/uninstall plus a standalone startup-failure diagnostics page that works while DSH is not running.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-insight-tree
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:xingzhen199186/dsh-insight-tree
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DSH Insight Tree is an observability and diagnostics plugin for DeepSeek Harness (DSH). It combines Profile configuration, installed packages, Loader runtime state, session activity, and upstream release metadata into one explainable report, then presents that report through a plugin tree, a current-session activity panel, and a standalone diagnostics page.
It is not a plugin marketplace. It answers practical questions:
- What is installed and assembled in the current Profile?
- Did the Loader actually load each plugin, and which Fiber phase is it in?
- Is a plugin compatible with the DSH host and its companion packages?
- Which plugin capabilities were used in the current session?
- If startup fails, can the failure be attributed to a non-core plugin?
You can also manage installed plugins directly from the plugin tree, including disabling, re-enabling, uninstalling, and updating them.
The plugin includes a standalone diagnostics page. When DSH fails to start and the failure is identified as plugin-related, the diagnostics page opens automatically. You can also start it manually. It does not depend on the DSH Web UI or on a running DSH instance: launch it from the command line to inspect the current DSH and its plugins as a whole, and perform the supported operations.
Current version: 0.1.2. The repository is public on GitHub; for the published npm release see
https://www.npmjs.com/package/dsh-insight-tree.
Package Shape
This is a single npm package with five integration surfaces:
- Host entry:
lib/index.jsfor report generation, routes, Loader/Session integration, and plugin operations. - Client bundle:
lib/client.js, injected by DSH Web for the plugin tree and current-session activity UI. - Standalone diagnostics command:
dsh-insight-tree-diagnose, backed bybin/diagnose.mjs. - Failure-aware web launcher:
dsh-insight-tree-web, backed bybin/web-with-diagnostics.mjs. - DSH assembly declaration:
cordis.patch.yml, which connects the plugin to the DSH bundle and Loader chain.
Runtime dependencies include js-yaml, semver, and zod. Loader, Session Projection, and
Session Query integrations are peer dependencies; optional components are detected and the plugin
degrades with an explicit source marker when they are unavailable.
Installation
Install from npm
Run this in PowerShell:
dsh plugin --profile web add dsh-insight-tree
Restart DSH Web after installation so the host, client bundle, and cordis.patch.yml assembly are loaded:
schtasks /run /tn DSHWebRestart
Verify that the package is present in the web Profile:
dsh --profile web --dump-config
After DSH starts, open Settings -> Plugins -> Plugin Tree. The Current Activity entry is available inside DSH conversations only.
If pnpm's supply-chain policy rejects a newly published dependency, relax it for this command only:
dsh plugin --profile web add dsh-insight-tree --config.minimum-release-age=0
Install from a local checkout
For local development, install the checkout as a link:
dsh plugin --profile web add I:\DSH\dsh-insight-tree
After rebuilding changed source files, restart DSH Web to load the new lib/ output.
Run standalone diagnostics
The npm package includes a standalone diagnostics command. It can run while DSH is running or when DSH is stopped:
dsh-insight-tree-diagnose --profile web --port 3092
Open http://127.0.0.1:3092/. If the command is not available on PATH, invoke the package script directly:
node node_modules\dsh-insight-tree\bin\diagnose.mjs --profile web --port 3092
Normal DSH startup does not open this page automatically. The failure-aware launcher opens it only when the startup error is explicitly attributable to a non-core plugin:
dsh-insight-tree-web --profile web
Design
The core is an evidence aggregation pipeline rather than a single page:
Profile / package.json / node_modules / cordis.patch.yml
|
v
DSH Loader / Fiber state
|
v
Session Projection / Query
|
v
InsightTreeReport
/ | \
v v v
Plugin tree Activity Diagnostics
All surfaces consume InsightTreeReport from src/model.ts (schema v3), so the Web UI,
standalone diagnostics, and exports share the same compatibility and severity decisions.
Observation dimensions
- Installation: Profile
package.json, actualnode_modules, and package metadata. - Assembly:
dsh.profile.bundlesand Loader relationships fromcordis.patch.yml. - Loading: Real
ctx.loaderentries and their Fiber phases. - Compatibility: DSH host, companion DSH packages, and plugin release semver checks.
- Usage:
session/event, durable projections, and optional historical session queries. - Upstream: Plugin directory, npm packument, and GitHub metadata, with explicit offline fallback.
The runtime Loader state takes precedence over static declarations. Actual installed versions take precedence over Profile specs. Missing context is reported as temporarily unknown, not as an automatic incompatibility.
Compatibility Semantics
The labels current plugin, latest plugin, and latest compatible plugin always refer to the plugin's own version, not the DSH host version. For example:
Current plugin 2.10.3 npm: dsh-pocket Latest compatible version
The DSH host is shown separately:
Compatible with current DSH host @deepseek-ai/dsh@0.1.2-rc.1
Compatibility checks use the dependency type:
@deepseek-ai/dshorengines.dsh: compare with the actual installed DSH host version.@deepseek-ai/dsh-*: compare with the corresponding companion package installed in the current Profile.- Missing context or an unparsable range: show
unknownand explain why it cannot yet be confirmed.
Installing another DSH host version causes the report to recalculate compatibility. The same plugin release can therefore have different results under different host or companion-package combinations.
User Interfaces and Boundaries
Inside DSH
Normal DSH startup does not open the standalone page. Inside DSH, users can open:
- Plugin Tree: navigation entry for structure, capabilities, dependencies, compatibility, and Loader state.
- Current Activity: plugins used by the current conversation session.
Standalone diagnostics
The standalone page does not depend on the full DSH Web UI. It reads the Profile, package metadata, and patch files, and provides reports, exports, and protected configuration operations.
It listens on loopback only. Disable, enable, and uninstall operations back up Profile files, validate
configuration changes with a dry run, and refuse to operate on core @deepseek-ai/* packages or targets
with active dependents.
Source Map
| File | Responsibility |
|---|---|
src/index.ts |
Plugin entry, event statistics, projections, Loader snapshot, and route assembly |
src/model.ts |
InsightTreeReport and plugin, compatibility, finding, and activity types |
src/discovery.ts |
Profile, package metadata, patch, dependency, and report generation |
src/loader.ts |
Pure mapping from Loader entries to Fiber phases |
src/activity.ts |
Session projection folding and history helpers |
src/owners.ts |
Explicit and stable tool-to-plugin ownership mapping |
src/upstream.ts |
Plugin directory, npm/GitHub metadata, and version compatibility |
src/rules.ts |
Missing-package, duplicate-assembly, compatibility, and startup-impact rules |
src/route.ts |
Report, session, export, compare, and operation APIs |
src/diagnostics.ts |
Attribution of startup failures to non-core plugins |
src/client/index.tsx |
DSH plugin tree and current activity UI |
bin/diagnose.mjs |
Standalone diagnostics HTTP service |
bin/web-with-diagnostics.mjs |
dsh web wrapper and failure diagnostics entry point |
tests/*.test.mjs |
Report, Loader, activity, route, export, version, and diagnostics regression tests |
Development and Verification
Node.js ^22.19.0 or >=24.0.0 is required. On Windows, use Node 22/24 from PowerShell rather
than the Node 18 binary bundled with Git Bash.
npm install --legacy-peer-deps --no-audit --no-fund
npm run typecheck
npm run build
npm test
node --check bin/diagnose.mjs
node --check bin/web-with-diagnostics.mjs
git diff --check
npm test builds first and then runs tests/*.test.mjs. The latest full verification passed all 63/63
tests, along with typecheck, both diagnostics script checks, and git diff --check.
Current Limitations
- Real Loader, Session Projection, and Session Query behavior depends on services exposed by the DSH host.
- Tool events without an explicit owner can only use stable mappings or remain marked as unconfirmed.
- Unit tests do not replace route, SSE replay, or visual checks against a real DSH Web host.
- Upstream directory, npm, and GitHub metadata require network access; offline mode uses cache when available.
Links
More in this category
yjh051108/dsh-routing-suite★ 7176
One repository, three parts: a runtime injector for DSH plugin packages (inject, hot-reload, unload, promote a dev staging tool to the front, route self-heal, plus a settings-page plugin manager that lists, unloads and drags folders in to internalize), a task-aware reasoning-mode router agent preset (router-standard / router-spec / router-react), and a graded two-level task protocol whose six tools (commit_star, lock_stage, revise_do, edit_plan, mark_task, redteam_verdict) pin task state to disk. The injector implementation ships in-tree, so the install carries its own behaviour rather than a dependency list.
strukto-ai/mirage#dsh★ 3626
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
hust-open-atom-club/oh-dsh★ 312
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
lire1131/dsh-undo-savepoint★ 154
Undo/redo & rollback system for DSH: every config change is auto-snapshotted; undo/redo/restore to any version from the WebUI or the offline CLI/GUI tools (works even when DSH fails to boot).
Fishquito7/dsh-skill-mcp-panel★ 124
Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
kanneiren/dsh-network-settings★ 109
Visualize the DSH process network path on Windows or WSL with layered DNS/TCP/TLS/HTTP probes, detect stale proxy configuration, and apply snapshot-guarded repairs.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.