DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
T

dsh-turn-trace

Turn Trace

Client-only Turns tab for DeepSeek Harness: expand a turn to see its money, expand a step to see what that cost.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:nrenvo/dsh-turn-trace#8b0a331b70e528334b0793daef652b276bffd2a0
READMECompatibilityVersions
A 7-second tour: expand a turn, open a call, inspect it

Compatibility and provenance

Turn Trace is published as dsh-turn-trace and currently resolves to version 1.4.8. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/26/2026

Versions

1.4.8stable
10/26/2026

Related plugins

Loading related plugins…

Latest
1.4.8
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
10/26/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in models-usage.

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundleExperimental machine translation of expanded reasoningWhale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinOur Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — Install this plugin in dsh to use cutting-edge models including DeepSeek V4.1 Flash and Kimi K3, with no login, registration, or API Key required. The desktop version also offers an EAC co-payment channel; starting with 2.0, it supports ten account channels: LobsterAI, Qoder, TRAE, Connect Workbuddydsh-connect-workbuddyConnects locally signed-in WorkBuddy models (domestic and international versions) to DeepSeek Harness, automatically reading each model’s points multiplier from the upstream catalog on every refresh, with per-model image input toggles, multi-account switching, automatic account rotation from an acco

README

dsh-turn-trace

A receipt for every turn. A Turns tab inside DeepSeek Harness: expand a turn to see what it cost, expand a step to see what that cost.

中文

The Turns tab: six turns priced row by row, with the session total, cache savings, and pager

What it does

  • Turns are a list, collapsed. Each row is money and step count.
  • Expand a turn: every step shows Step i/n, its tokens, and its money.
  • Inside a step: the calls it made — llm · model · 6.4s, bash · ok · 41s.

Tools do not consume tokens. A step's tokens always belong to its model call, which is why the money sits on the step, not on the tool.

Why not just use Trajectory?

Trajectory answers when: the event ledger and timing. Turns answers how much: each step's tokens and money, plus the calls that step made. It is additive — Chat and Trajectory stay exactly where they are.

Playback, wall-clock Gantts, and cross-session dashboards are deliberately out of scope; those already have better homes.

Install

Requires the DeepSeek Harness desktop app (Homebrew cask deepseek-harness) or any dsh profile that serves the Web UI.

# from npm
dsh plugin --profile desktop add dsh-turn-trace

# from a local checkout
git clone https://github.com/nrenvo/dsh-turn-trace
cd dsh-turn-trace
pnpm install && pnpm build
dsh plugin --profile desktop add link:$PWD

Restart the app, open a session, and click Turns next to Chat and Trajectory.

What you see

A 7-second tour: expand a turn, open a call, inspect it

A 7-second tour: expand a turn, click a call, and open the inspector.

LevelWhat it shows
Headerturn count, session total, cache savings, USD/CNY switch
Pagerten turns per page, newest first; Older pulls the next history window
Turnstep count, wall-clock duration, money, money saved by cache
StepStep i/n, money, tokens in/out, cache savings, priciest badge, cache-miss flag
Callllm: model + duration · tool: status, error, duration, argument head · user: prompt
Inspectorclick any row: overview, arguments, raw result, source

The tab follows the DSH language setting (English / 中文); it does not guess from the browser.

How it works

The view is client-only. It reads the chat snapshot the shell already holds (useChat → order + nodes) and folds it into turns → steps → money. No host plugin, no package-private RPC, no polling: the snapshot updates as the session runs, so the view re-folds on every change.

Pricing

Each call is priced from DeepSeek's published per-1M-token rates, using that call's own timestamp to pick peak or off-peak (peak: 01:00–04:00 and 06:00–10:00 UTC, weekdays). Rates live in src/pricing.ts so they can be updated in one place. These are estimates, not billed amounts.

Accuracy and limits

  • A step is priced from its own recorded model id (finalNode.requestConfig.model, then providerMetadata.model). A step that carries no id inherits the nearest recorded model and is counted in the header; if the session recorded no model at all, the step stays unpriced instead of being guessed.
  • Chinese public holidays are not modelled, so holiday sessions read slightly high.
  • Only the loaded window is folded; Older pages older history in through the slot's loadOlder.

Development

pnpm install
pnpm test            # fold + pricing assertions, no runtime needed
pnpm test:activation # boot-safety: apply() must never throw (needs a build)
pnpm typecheck       # tsc --noEmit
pnpm build           # tsdown, then wraps lib/client.js in __ModuleLoader__.load(...)

The client bundle registers through window.__ModuleLoader__.load({ id, factory }); scripts/wrap-client.mjs adds that envelope after the CJS build, so the browser half uses the runtime's require('react') instead of bundling its own copy.

lib/ is committed so github: installs work. After changing source, run pnpm build and commit lib/ with the change.

License

MIT