Huang-zhishi/dsh-plugin-call-trace
Persistent model tool-call trace recorder: every tool call is durably written to a JSONL file that survives restarts, queryable via a structured call_trace tool and a callTraceHistory service, with size rotation and an optional floating canvas UI add-on.
dsh-plugin-call-trace is a persistent LLM tool-call trace recorder for DeepSeek Harness. Every time the model calls a tool (read / pwsh / subagent / web_search ...), it durably persists the call to a JSONL file that survives restarts, and exposes a structured call_trace tool the model can query at any time plus a callTraceHistory service for UI add-ons that want to merge history. It listens to agent/request, tools/execute and tools/result (including subagent calls) and records tool name, arguments, status (ok/error/running), a result summary, duration, turn/step, and agent; the file auto-rotates above 5 MB so it never grows without bound. A write-on-completion design records the start at tools/execute and flushes completion at tools/result (a crash mid-call drops that call). An optional floating overlay (dynamic plugin) visualises the trace.
Install
dsh plugin --profile voice add ./call-trace-pluginOption A installs into a profile: dsh plugin --profile voice add ./call-trace-plugin from the repo checkout (optionally dsh --profile voice --dump-config to confirm a # == dsh-plugin-call-trace layer, then dsh --profile voice). Option B is a --patch local overlay (pnpm dsh web --patch <...>\cordis.local.yml), and Option C is a tarball/npm form (pnpm pack then dsh plugin --profile <name> add ./dsh-plugin-call-trace-1.0.0.tgz; after publishing, dsh plugin --profile <name> add dsh-plugin-call-trace). The npm name dsh-plugin-call-trace was NOT found on the registry on 2026-09-30, so the README's own published-name form is not usable today; use the local-directory or tarball form.
Compatibility
DeepSeek Harness (plain ESM with zero @deepseek-ai/* runtime imports, so it is loadable from anywhere -- a --patch overlay or a profile install). Records calls at root scope, including subagent calls. The optional floating UI in ui/ is a dynamic plugin that needs the monorepo client build chain (tsdown + slot types + props share) and ships only as archived source; it must be rebuilt after each restart. The recorder stays within the DSH event model (ctx.on events, raw JSON Schema ctx.tools.register, ctx.provide) and exports no Config schema.
Details
- Repo: Huang-zhishi/dsh-plugin-call-trace
- Category: Tools & Capabilities
- Stars: 1
- Version: source / tarball install (npm name dsh-plugin-call-trace NOT published -- registry empty 2026-09-30); MIT
- Last push: 2026-08-15
- First seen: 2026-08-15
Recent updates
The README documents the configuration (config.outDir, default $DSH_HOME/call-trace, never node_modules), the three install options and their config rows (call-trace-recorder), usage (call_trace structured array with name/status/args/summary/turn/step/agentId/durationMs/ts; call_trace({clear:true}) is destructive; callTraceHistory.tail(n)), the file list, and known limitations (the floating UI is a dynamic plugin needing the monorepo client build chain; no tool-to-plugin mapping; subagent nesting is a time-window heuristic; the recorder and dynamic UI keep separate state and do not conflict).
FAQ
- How do I install dsh-plugin-call-trace?
- Per the README's Option A, install into a profile from the repo checkout: dsh plugin --profile voice add ./call-trace-plugin, then start the profile. A --patch overlay and a tarball/npm form are also documented; the npm name is not published, so use the local-directory or tarball form.
- Do recorded calls survive a restart?
- Yes -- the README states calls are durably persisted to a JSONL file that survives restarts, and the file auto-rotates above 5 MB so it never grows without bound.
- What does it record?
- Per the README: tool name, arguments, status (ok/error/running), a result summary, duration, turn/step, and agent, captured by listening to agent/request, tools/execute and tools/result at root scope (including subagent calls).
Alternatives
disyli/dsh-tool-call-stats · BrambleXu/dsh-revdiff · Civitasv/dsh-plugin-diff-review