fly3366 / dsh-o11y-plugin

Listed

Unified plugin-dimension observability (trace/log/metric) for deepseek-harness: registers global OTel providers + OTLP export, bridges dsh session telemetry, GenAI semconv ready

mainModelSession View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:fly3366/dsh-o11y-plugin

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 36fcdbcSynced Aug 18, 2026

dsh-o11y-plugin banner

dsh-o11y-plugin

Unified plugin-dimension observability (trace / log / metric) for deepseek-harness (dsh).

中文文档

Overview

dsh ships session-level OTel telemetry but exposes no metric or plugin-scoped observability to plugins. dsh-o11y-plugin converges that gap: it registers global OpenTelemetry providers so any plugin using the standard @opentelemetry/api exports traces, metrics, and logs through a single, consistently configured pipeline, and it bridges dsh session telemetry into OTel logs. It is intended for plugin authors who want standard, community-compatible observability without implementing OTel per plugin.

Compatibility

ItemValue
DSH version@deepseek-ai/dsh 0.1.0-rc.6 (Cordis 4.0.1)
Last verified2026-08-15 (unit tests against @deepseek-ai/cordis 4.0.1)
Node^22.19 || >=24
Profilesheadless, web

Built on the official OpenTelemetry Node.js SDK, the same dependency family as dsh's session-telemetry-otel.

Install / Uninstall

# install
dsh plugin --profile web add github:fly3366/dsh-o11y-plugin

# disable for one profile
dsh plugin --profile web remove dsh-o11y-plugin

# or disable at runtime via config: enabled=false

The plugin is stateless; removal requires no data cleanup.

Quick start

dsh plugin --profile headless add github:fly3366/dsh-o11y-plugin
# point exports at a collector (optional; silent without one)
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 dsh --profile headless "say hi"

Any plugin that calls trace.getTracer(...) / metrics.getMeter(...) / logs.getLogger(...) from @opentelemetry/api is then exported automatically. deepjit is the reference consumer, emitting pipeline counters and GenAI (gen_ai.*) LLM spans.

Configuration

KeyDefaultDescription
enabledtruemaster switch
serviceName'' (→ OTEL_SERVICE_NAMEdsh-plugin)OTel resource service.name
endpoint'' (→ OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318)OTLP/HTTP endpoint
enableTraces / enableMetrics / enableLogstrueper-signal toggles
metricExportIntervalMs60000periodic metric export interval
bridgeSessionTelemetrytruebridge dsh session telemetry into OTel logs

Sensitive: no credentials are read or stored; only the optional OTLP endpoint is network-facing.

Permissions & data

  • Files: none written; all telemetry is in-memory until exported.
  • Network: OTLP/HTTP to the configured endpoint only; silent drop when no collector is reachable.
  • Credentials: none.
  • User data: session-telemetry records are observed in-memory (when bridging) and forwarded as OTel logs; nothing is persisted by this plugin.

Troubleshooting

  • No collector at the endpoint → batches are dropped silently (expected).
  • Export errors → surface via OTel diag; verify endpoint and collector availability.
  • Roll back with dsh plugin --profile <p> remove dsh-o11y-plugin or set enabled=false.

Development

npm install
npm run typecheck
npm test
npm run build

Contributions welcome; keep the OTel SDK dependency family aligned with dsh's session-telemetry-otel for community compatibility.

License & security

MIT. Report vulnerabilities privately per SECURITY.md.

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Security policyDetected

Repository information

Language
TypeScript
License
MIT
Last updated
Aug 15, 2026, 4:52 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.