DSH Hub
dsh-plugin cover

loongsuite/dsh-plugin

dsh-plugin

BundleWorkflow31 GitHub stars· updated 2026-10-12

OpenTelemetry tracing for DeepSeek Harness (dsh): turns each agent turn into a GenAI span tree — steps, LLM calls with TTFT, tool executions, token usage — exported over standard OTLP to Jaeger, Grafana Tempo, SigNoz, Langfuse, or any compatible backend.

Install

npx @deepseek-ai/dsh plugin --profile web add @loongsuite/dsh-plugin

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-plugin DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-plugin.svg)](https://dshhub.dev/plugins/dsh-plugin)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from loongsuite/dsh-plugin, cleaned of badges and images.

LoongSuite observability for DeepSeek Harness

English | 简体中文

@loongsuite/dsh-plugin is a standalone, open-source observability plugin for DeepSeek Harness (dsh). It observes DSH's native session, agent loop, LLM stream, and tool lifecycle, converts them into OpenTelemetry GenAI traces and metrics, and exports standard OTLP/HTTP protobuf to any compatible backend.

LoongSuite is an open-source observability collection ecosystem built on OpenTelemetry. This repository is its native DSH integration. The plugin does not depend on or require LoongSuite Pilot, a sidecar, a local JSONL tap, or any particular vendor's backend.

Status: stable 0.1.x release. Install @loongsuite/dsh-plugin from npm or the DSH plugin market.

<br> <em>One DSH turn exported over OTLP into self-hosted Langfuse: four react steps, per-call latency and token counts, a failed <code>web_search</code> followed by <code>bash</code> fallbacks, and the ENTRY span's GenAI attributes. Content capture was enabled for this capture; it is off by default.</em>

Data model

DSH session/event + llm/stream
                │
                ▼
      lifecycle coordinator
                │
                ▼
   LoongSuite GenAI OTel utility
                │
                ▼
 private TracerProvider + MeterProvider
                │  OTLP/HTTP protobuf
                ▼
  any OpenTelemetry-compatible backend

One DSH turn produces a single trace with this shape:

ENTRY
└── AGENT
    └── STEP
        ├── LLM
        └── TOOL

Each real LLM attempt gets its own LLM span, so retries remain visible under the same step. Tool calls are correlated with their results by DSH call ID. Errors, aborts, incomplete streams, and plugin shutdown close live spans with an error status instead of leaving them open. Subagent sessions create their own trace and carry DSH parent-session and delegation attributes.

When content capture is enabled, ENTRY and AGENT input messages contain only the turn's direct source.kind=user input. Synthetic DSH context such as runtime snapshots, agent instructions, skill catalogs, goals, and coordinator relays remains visible on the LLM span, but prior-turn conversation history is excluded so every trace contains only its own turn context. Later LLM spans in a tool loop retain assistant tool calls and tool results produced earlier in the same turn. ENTRY and AGENT output messages contain only the final stop response; a turn that never reaches stop falls back to its last available assistant message.

The plugin also exports the standard gen_ai.client.operation.duration and gen_ai.client.token.usage metrics. It does not export OpenTelemetry logs; it can coexist with a separate DSH log exporter.

GenAI invocation construction and semantic attributes are powered by the @loongsuite/otel-util-genai SDK.

Compatibility

ComponentSupported rangeFully verified version(s)
DeepSeek Harness>=0.1.0-rc.6 <0.2.00.1.0-rc.6 headless and Web profiles
Node.js>=22.19.022.19, 24.19, and 25.9 on macOS

DSH release candidates older than 0.1.0-rc.6 are not supported. Each plugin release is tested against the latest published DSH version rather than treating successful bundle composition alone as full runtime compatibility.

…

Related plugins