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.

Tools & Capabilities ★ 1 updated 2026-08-15
View on GitHub ↗

Install

dsh plugin --profile voice add ./call-trace-plugin

Option 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

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

More plugins in Tools & Capabilities

Browse more in Tools & Capabilities

Guides for Tools & Capabilities plugins