DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-xray

a

dsh-xray

Manifest validโ˜… 1

X-ray for your DeepSeek Harness โ€” diagnostics for what's actually loaded, why, and what it costs: per-plugin context-tax attribution, per-request token ledger, skill catalog pricing, dependency cascades.

UI (client)hasBundlePatch

dsh-xray โ€” the per-request context-tax waterfall (system, tools, history, results) and the disable-cascade from Loader and TimerService

The token-ledger panel is measured on the committed fixtures/runtime-basic snapshot; the disable-cascade panel is an illustrative capture from an author profile that no committed fixture reproduces.

npm CI license OpenSSF Scorecard coverage JavaScript

X-ray for your DeepSeek Harness โ€” see what's actually loaded, why, and what it costs you.
LLM context-cost observability: token attribution per plugin, prompt-section and tool-schema pricing, skill catalog tax, dependency cascades.

๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡ๆ–‡ๆกฃ


Every plugin you mount quietly bills every LLM request: prompt sections, tool schemas, tokens. dsh-xray sits inside your running harness as an X-Ray tab beside Chat and Trajectory and itemizes that bill โ€” per plugin, per entry, down to the exact text:

The X-Ray tab: every plugin's per-request context tax, attributed and ranked

Unfold a plugin to see what it registered; click any entry to read the exact text it puts into every request:

A plugin unfolds into its registered entries

The raw text behind ~184 tokens, with a chars/tokens ruler

Three clicks: plugin rollup โ†’ entry list โ†’ the actual words. The number stops being an estimate you trust and becomes a fact you checked.


The Problem

dsh --dump-config shows you the composed tree. The plugin panel shows you a flat list. Neither tells you why a plugin is there, what breaks if you disable it, or what it silently costs you on every single request.

dsh-xray does. And when the answer is "this plugin taxes every request and nothing depends on it" โ€” the deps view confirms the disable is safe, one patch line removes it, and attribute verifies it took.


Context Tax

The cost view answers the question no other tool asks: who put this in my context, and what does it cost?

  • Attribution โ€” every prompt section and tool schema is joined to the plugin that registered it, reconstructed live from the registries (ambiguous entries stay unattributed, never guessed).
  • By-plugin rollup โ€” each plugin's per-request context tax: sections + schemas + tokens + share, ranked.
  • Entry inspection โ€” /xray/api/entry returns any entry's live text with a chars/tokens ruler. Computed per request, never persisted.
  • Skill cost โ€” a dedicated view prices every skill twice: its catalog line (resident on every request once any model-invocable skill exists) and its body (billed per load). Pricing only โ€” toggling belongs to the ecosystem's skill managers.
  • Per-request ledger โ€” one classified bill per LLM call: system / tool schemas / history / tool results (aggregated per tool), a ฮ”prev growth column, and prefix-stability markers (โšก system+tools byte-identical to the previous request โ€” KV-cache-friendly; โœ‚ prefix broken). Compaction and title calls are tagged apart from chat. Only counts, names, and hashes are kept โ€” never message text.
  • Explained UI โ€” every view opens with a one-line "what am I looking at"; terms carry plain-language tooltips; the whole tab is localized (English / ไธญๆ–‡) through the host locale service.

The same data flows through three surfaces: the X-Ray tab (native GUI), the standalone /xray page (works even when the client-module pipeline it diagnoses is broken), and the CLI.


CLI Commands

npx dsh-xray attribute   # which layer introduced each row, and who patched it since
npx dsh-xray conflicts   # contested fields with per-writer evidence: file:line, value, winner
npx dsh-xray diff        # declared (static layers) vs actual (dump-config) tree
npx dsh-xray snapshot    # content-addressed lockfile; --against <lock> reports drift, exits 1
npx dsh-xray deps [svc]  # service dependency graph: providers, consumers, transitive disable-cascade
npx dsh-xray health      # plugin lifecycle health: failed fibers, pending injects, transitions
npx dsh-xray cost        # context cost: prompt sections + tool schemas, estimated tokens
npx dsh-xray shadow      # services provided by multiple plugins
npx dsh-xray verify      # declared (static) rows โ†” runtime registry, exits 1 on mismatch
npx dsh-xray why <tool>  # provenance chain for one tool: owner plugin, its injects, their providers
npx dsh-xray audit       # static scan of out-of-tree plugins for sensitive touchpoints

dsh-xray demo

The demo transcript is an illustrative capture from an author's web profile (revision unrecorded) โ€” its figures are not reproducible from this repo and drift as the profile gains plugins; the committed fixtures and their pinned outputs live in fixtures/ and tests/golden.spec.js.

attribute, conflicts, and snapshot are static โ€” they replay the on-disk layer stack and work even when dsh cannot boot (snapshot additionally samples dsh --dump-config for the composed hash, and folds in the runtime services/tools when a snapshot exists, degrading honestly to null when it doesn't). All commands take --profile <name> (default web) and --json; every JSON payload carries a versioned schema field (dsh-xray/<view>@N) so machine consumers detect shape changes instead of guessing. snapshot, its --against diff, verify and audit are at @2 (see the changelog for what moved); every other view is still @1. Exit codes slot into CI: diff (trees disagree), health (unhealthy plugin), snapshot --against <lock> (composition drifted), shadow (multi-provider service), verify (declared โ†” runtime mismatch) and why (no tool by that name is attributed) all exit 1.


Features

๐Ÿ” Layer Attribution

Which layer introduced each active plugin: kernel bundle, profile dependency, cordis.patch.yml insert, or repository source.

๐Ÿ“Š Declared vs. Actual Diff

Installed-but-inactive, uninstalled-but-lingering patch rows โ€” including patch rows targeting ids that don't exist (dsh warns on stderr and skips them).

โšก Conflict Detection

Plugins patching the same config row, and which one silently wins.

๐Ÿ“ธ Composition Snapshot

Export the effective composition as a lockfile โ€” bundles, patches, and every installed plugin with its provenance (registry / link / repository) and a content hash excluding node_modules, plus the services and tools the runtime actually registered. snapshot --against <lock> reports drift category by category (bundle version / patch content / package version, source or content / service providers / tool owners and schema size) and exits 1. A saved lock that cannot answer for a field says so instead of reading as equal.

๐ŸŒ Service Dependency Graph

Who provides and consumes each service โ€” and the full transitive disable-cascade: not just direct consumers, but everything downstream of the services they re-provide.

$ npx dsh-xray deps
# disable-cascade (transitive consumers of each provider):
  Loader โ†’ 5 plugin(s): AgentPresets, ClientModuleRegistry, Hmr, โ€ฆ
  TimerService โ†’ 1 plugin(s): Hmr

Illustrative capture from the author's web profile (revision unrecorded) โ€” no committed fixture produces it, and the counts drift as plugins are added; this repo's runtime fixtures are synthetic (e.g. fixtures/runtime-basic pins ToolRuntime โ†’ 1 plugin(s): AgentLoop).

๐Ÿ’Š Runtime Health

Per-plugin fiber lifecycle state, startup failures, pending injects, transition history.

๐Ÿ‘ฅ Service Shadowing

Same-name registrations where a later writer silently wins โ€” usually an intended override, occasionally a conflict.

๐Ÿ›ก๏ธ Capability Audit

Heuristic static scan of out-of-tree plugins: subprocess / shell, network egress, filesystem read and write, environment variables, dynamic code evaluation. Every hit carries file:line and the matched line, and every capability carries a confidence derived from two checkable facts โ€” the builtin module is imported and a call site exists (high), only one of the two (medium), or nothing but a process.env lookup that cannot be corroborated (low).

๐Ÿ”— Tool Provenance

why <tool> answers "why is this in my context?" as a chain: the tool, the plugin the attribution table says registered it, that plugin's injects, the plugins providing those services, and on up to the ones that inject nothing.


Agent Tool

Mounted in the tree, dsh-xray registers an xray_composition tool (view: summary | deps | health | cost | shadow | skills | requests), so an agent can answer:

"What capabilities do I have?" / "What plugin provides X?" / "Why is Y unavailable?"

โ€” about itself.


Safety Stance

dsh-xray reads; it never runs.

  • Loader !!js expressions in patch files are parsed as opaque markers and never evaluated
  • The CLI never executes plugin code (audit is a pattern scan over source text)
  • The mounted plugin writes only under $DSH_HOME/xray/ โ€” entry text is served live, never persisted
  • The entry endpoint returns composition-layer text only, never session messages
  • See SECURITY.md

Analysis modes

Every result names its trust boundary:

ModeCommandsBoundary
Staticattribute, conflicts, snapshotExact replay of the on-disk layer stack; works even when dsh cannot boot. snapshot also samples dsh --dump-config for the composed hash when dsh is available. Cannot observe runtime behavior.
Static + spawndiffReplays the layers, then spawns dsh --dump-config to compare declared vs. actual.
Static + runtimeverifyJoins both sides: declared rows that never mounted, disabled rows still running, runtime-only plugins, snapshot staleness โ€” and, per service and per tool, whether its runtime provider/owner is a declared row.
Runtimedeps, health, cost, shadow, verify's runtime half, why, tab, /xray panel, agent toolObserved from the running composition ($DSH_HOME/xray/runtime.json); valid for the current session only. Token counts are estimates (~4 chars/token) unless you open the entry text and count.
HeuristicauditPattern scan over source text; false positives and negatives are expected. A flag means "this pattern appears", never "this plugin is malicious". Confidence grades how well the pattern is corroborated, not how dangerous it is.

Install

Two ways to use it โ€” they're independent:

1. Static CLI only (no install into dsh; works even when dsh cannot boot):

npx dsh-xray attribute        # requires Node >= 22

2. Mount the plugin (adds the runtime commands, the X-Ray tab, the /xray panel, and the agent tool):

dsh plugin --profile web add dsh-xray
# bundle plugins take effect on the next start โ€” restart dsh web

Verify it took:

dsh --profile web --dump-config | grep dsh-xray   # row present in the composed tree
npx dsh-xray health                               # reads the runtime snapshot
# then open any session and click the X-Ray tab,
# or http://127.0.0.1:3080/xray (the web app's default bind) for the standalone panel

Uninstall: dsh plugin --profile web remove dsh-xray.

CommandExit code
diff1 when the trees disagree
health1 when any plugin is unhealthy
snapshot --against <lock>1 when the composition drifted
shadow1 when any service has multiple providers
verify1 when a declared plugin is not running, or a disabled one is (runtime-only subplugins and per-service/tool provenance are reported, not failures)
why1 when no tool by that name is attributed in the runtime snapshot

Capabilities

Diagnostic imaging for a running composition โ€” complementary to dsh-doctor (rescue & recovery).

FeatureCategory
Context-tax attribution & entry inspection๐Ÿ’ฐ Optimization
Skill cost (catalog line + body pricing)๐Ÿ’ฐ Optimization
Per-request ledger (ฮ”prev, prefix stability)๐Ÿ’ฐ Optimization
Layer attribution๐Ÿ” Inspection
Declared vs. actual diff๐Ÿ” Inspection
Conflict detection๐Ÿ” Inspection
Composition snapshot๐Ÿ“ฆ Export
Static โ†” runtime verification๐Ÿ” Inspection
Tool provenance chain๐Ÿ” Inspection
Service dependency graph๐ŸŒ Runtime
Runtime health๐ŸŒ Runtime
Service shadowing๐ŸŒ Runtime
Agent self-introspection๐Ÿค– AI
Capability audit๐Ÿ›ก๏ธ Security

License

MIT

Versions

Latest versionPublishedSize
0.0.1โ€”โ€”
0.1.0โ€”โ€”
0.1.1โ€”โ€”
0.1.2โ€”โ€”
0.2.0โ€”โ€”
0.3.0โ€”โ€”
0.3.1โ€”โ€”
0.3.2โ€”โ€”
0.4.0โ€”โ€”
0.4.1โ€”โ€”
0.5.0โ€”โ€”
0.6.0โ€”โ€”
0.7.0โ€”โ€”
0.7.1โ€”โ€”
0.7.2โ€”โ€”
0.8.0โ€”โ€”
0.8.1โ€”โ€”
0.9.0โ€”โ€”
0.9.1โ€”โ€”
0.10.0โ€”โ€”

Comments

Loadingโ€ฆ

From the same category

archify

by tt-a1i

Agent skill for beautiful, verifiable architecture, workflow, sequence, data-flow, and lifecycle diagramsโ€”self-contained HTML with motion and crisp export.

Workflow & AutomationTools & CapabilitiesManifest valid

โ˜… 69.9k

โ†“ 3.5k/wk

MIT

JavaScript

Sep 22, 2026

dsh plugin --profile web add @tt-a1i/archify-dsh

DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.

Tools & CapabilitiesManifest valid

โ˜… 41.7k

โ†“ 251/wk

MIT

Aug 24, 2026

dsh plugin --profile web add dsh-plugin-reactive-resume

by Tencent

Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.

Development & InfrastructureTools & CapabilitiesManifest valid

โ˜… 28.9k

โ†“ 831/wk

NOASSERTION

Go

Sep 22, 2026

dsh plugin --profile web add @wxg-prc-cpg/dsh-weknora

by anywhere-labs

ไธบ DeepSeek Harness (DSH) ๆ’ไปถ็”Ÿๆ€ๆ‰“้€ ็š„็ŽฐไปฃๅŒ–ๆกŒ้ข็ซฏ่งฃๅ†ณๆ–นๆกˆใ€‚ไธ‡็‰ฉ็š†ใ€Œๆ’ไปถใ€๏ผŒๆกŒ้ขๆœฌ่บซไนŸๆ˜ฏใ€Œๆ’ไปถใ€ใ€‚

Tools & CapabilitiesManifest valid

โ˜… 28.5k

โ†“ 170/wk

MIT

TypeScript

Sep 22, 2026

dsh plugin --profile web add dsh-plugin-desktop

by titanwings

Distilly โ€” Distill how they think into reusable Skills for any Agent or Bot. Formerly Colleague Skill๏ผˆๅŽŸๅŒไบ‹ Skill๏ผ‰.

Tools & Capabilities

โ˜… 25k

MIT

TypeScript

Sep 22, 2026

Index only โ€” not installable

by Nagi-ovo

Enhancement suite for Gemini, AI Studio, Claude & ChatGPT โ€” plus a prompt manager for any websites, DeepSeek Harness included. / ้ขๅ‘ Geminiใ€AI Studioใ€Claude ไธŽ ChatGPT ็š„ๅขžๅผบๅฅ—ไปถ๏ผ›ๅ…ถไธญ็š„ๆ็คบ่ฏ็ฎก็†ๅ™จๅฏ็”จไบŽไปปๆ„็ฝ‘็ซ™๏ผŒๅฆ‚ DeepSeek

Tools & Capabilities

โ˜… 20.1k

GPL-3.0

TypeScript

Sep 21, 2026

Index only โ€” not installable