Introduction¶
DeepSeek Harness (DSH) persistently records session logs during execution. Existing observability tools (such as Jaeger and Grafana Tempo) can already render trace diagrams, but they cannot directly read DSH’s log format. The dsh-otel plugin fills this gap. It acts as middleware, translating session logs into standard OpenTelemetry Spans, so DSH session data can be integrated into existing tracing systems.
Plugin Overview¶
dsh-otel is a DeepSeek Harness plugin that exports session logs as OpenTelemetry spans. It creates a span for each turn, step, and tool call, then links them into a trace. The plugin focuses on one-way data conversion: reading from logs and outputting spans, without runtime observation, buffering, or sampling.
Core Features¶
- Export session logs as OpenTelemetry spans
- Support OTLP/HTTP collector and stdout export
- No OpenTelemetry SDK runtime dependency
- Automatic generation of trace id and span id
- Provides the dsh-otel CLI export tool
Installation and Enablement¶
Install the plugin using DSH’s CLI:
dsh plugin --profile web add github:jwilson411/dsh-otel
After installation, it must be manually enabled in cordis.patch.yml. The plugin is disabled by default, and the exporter parameter must be set.
Typical Usage¶
Configure the exporter in cordis.patch.yml, for example using OTLP/HTTP:
- id: otel
config:
exporter: otlp-http
endpoint: http://127.0.0.1:4318/v1/traces
sessionLog: ~/.dsh/sessions/current.jsonl
sessionId: sess-1
After configuration, you can use the CLI tool to export spans directly:
dsh-otel export --log ~/.dsh/sessions/current.l > spans.json
Use Cases and Notes¶
- Disabled by default: The plugin is disabled by default and must be manually enabled. When no exporter is configured, the plugin still performs counting, but it does not perform any cross-process data transmission.
- Minimal content: The plugin does not include prompt, evaluation, or scoring functionality. Spans contain only names, IDs, timestamps, token counts, and necessary metadata.
- Runtime-independent: It does not observe the runtime, does not buffer or sample, and does not modify session logs.
- Environment requirement: Requires Node.js >= 22.14.0.
Conclusion¶
dsh-otel is a lightweight connector. It does not attempt to replace Jaeger or Tempo, but instead allows DSH logs to be consumed directly by these tools. For developers who need to integrate DeepSeek Harness debugging into an existing observability stack, this is a practical solution.