deepseek-harness-session-cost-pill
Manifest validLive estimated session spend in the composer dock, pricing each assistant step at DeepSeek's peak or off-peak rate for its own timestamp.
💸 Session Cost Pill — DeepSeek Harness
Live session spend, right in the composer dock.

DeepSeek tells you how many tokens you burned. It does not tell you what that cost. This plugin does — live, per session, without a single line of patched harness source.
What you get
The composer dock already tracks turns, speed, tokens, and context. The cost pill joins that row:
| Pill | Shows |
|---|---|
| ⏱ activity | turns · steps · decode speed |
| 💾 usage | total tokens · cache-hit rate |
| 💸 cost | estimated spend for this session |
| 🪫 context | context-window pressure |
The glyph climbs with the session total, so the row reads at a glance before the number does:
| 💸 | 💵 | 💰 | 🔥 | 🚨 |
|---|---|---|---|---|
| under $1 | under $5 | under $20 | under $100 | $100 and up |
Click it and the breakdown opens: uncached input, cache reads, and output, each priced separately, plus how much of the total was charged at peak rates and how many steps that covered. It closes on Escape, on a click outside, or on a second click — the browser's own popover behaviour, so the plugin ships no dialog state, listeners, or positioning code of its own.

Install
dsh plugin --profile web add ~/code/github.com/vegerot/deepseek-harness-session-cost-pill
dsh plugin --profile desktop add ~/code/github.com/vegerot/deepseek-harness-session-cost-pill
That is the whole install. No build, no bundler, no dependencies. Restart the profile and refresh.
Why the number is right
Most cost trackers multiply a session's tokens by one flat rate. That is wrong for DeepSeek twice over.
1. DeepSeek has peak pricing
Prices double during peak hours, so a single rate per model cannot price a session.
| Model | Tier | Cache hit input | Cache miss input | Output |
|---|---|---|---|---|
deepseek-flash | off-peak | 0.003 | 0.15 | 0.60 |
deepseek-flash | peak | 0.006 | 0.30 | 1.20 |
deepseek-v4-pro | off-peak | 0.022 | 0.66 | 1.98 |
deepseek-v4-pro | peak | 0.044 | 1.32 | 3.96 |
USD per 1M tokens, transcribed from Models & Pricing.
Peak is 01:00–04:00 and 06:00–10:00 UTC, Monday–Friday. Everything else — all weekend — is off-peak.
So this plugin prices every assistant step at the rate in effect for that step's own timestamp. A session that crosses a peak boundary gets a correctly blended total instead of a guess.
2. Cache hits dominate, and they are ~50× cheaper
A cache hit costs a fraction of a cache miss. A tracker that folds all prompt tokens into one bucket will miss the mark badly on a long agent session — exactly the kind that reads 96% cache-hit.
Verified against real billing
DeepSeek publishes no pricing API, but its Platform console reports authoritative cost. Checking this plugin's table
against one real account's October deepseek-flash usage:
tokens: hit 140.56512M miss 2.828971M out 0.758458M
published all-off-peak total = $1.301116
platform's own billed total = $0.453778 + ¥6.0056894
= $1.301116 at FX 7.0877 CNY/USD
A 0.11% match. The table is right, and that month's usage was effectively all off-peak — assuming peak would have doubled the estimate.
How it works
It is an ordinary Cordis client plugin. Nothing in the harness is patched, forked, or monkey-patched.
ctx.slots.inject('conversation.composer.dock', () => ctx.slots.register({
name: 'conversation.composer.dock',
id: 'cost-pill',
order: 2, // joins the activity (0) and usage (1) pills
}, CostPill));
The pill reads the chat snapshot through the session standard kit and folds it:
useChat→ every settled assistant step, each carrying its owntimeand providerusageuseProjection('modelSelection')→ the session's model
total = Σ over steps costOfUsage(step.usage, model, isPeak(step.time))
isPeak classifies one request from its UTC weekday and hour, so pricing is per-request rather than per-session.
Known limits
Honest ones, not footnotes:
- Chinese public holidays are off-peak in full, and this is not modelled. That needs a PRC holiday calendar, so weekday windows falling inside a holiday week are priced as peak — slightly overstating those days.
- The model is priced at session level. Chat assistant nodes carry
timeandusagebut not the model, so a session that switched models mid-way prices every step at the most recently used model's rates. - Account-level spend is not shown. DeepSeek's Platform console does expose real billed cost through private
endpoints that authenticate with
x-dsh-auth-token(notAuthorization: Bearer), and DSH already holds that grant viagetPlatformSession(). It is deferred here because the browser half of a Remote needs generated zod codecs.
Development
pnpm test # tsc --noEmit && node --test test.ts
pnpm typecheck # the type check alone
Types without a build step. client.js ships as plain JavaScript on purpose: the harness injects plugin
bundles into the page as a classic script (<script src>, no type="module"), so the file reaches
the JS engine verbatim. There is no build step and no runtime type stripping on the browser side.
Types therefore live in JSDoc annotations, verified by tsc --checkJs. Real, CI-visible checking with no
toolchain. test.ts is different — Node strips its types natively.
The suite pins the behaviour that matters:
- peak windows, both edges, the mid-day gap, and weekends
- published rates for both models, off-peak and peak
- one off-peak plus one peak step in a single session, asserting the summed per-step rates — the case a session-wide total provably cannot produce
- an unpriced model renders no pill rather than a wrong number
License
MIT — see LICENSE.
Comments
Loading…
Similar plugins
by zzzxxxxxxxxxx
Live DeepSeek API balance and time-to-empty for the composer dock — projects spend from this machine's own token usage and prices it by peak/off-peak rates.
★ 0
MIT
TypeScript
Oct 6, 2026
dsh plugin --profile web add @zzxxxxxx/dsh-balanceby Way2LOose4
Real-time session cost preview for DeepSeek Harness: live cost readout, today usage chart, price_estimate/session_cost tools, prices kept in sync with the DeepSeek official site (peak/off-peak aware)
★ 3
MIT
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-agent-pricingReal-time cost tracking for the current DSH conversation: a composer-dock line showing the running token usage and DeepSeek official price estimate (base and peak/valley pricing).
★ 0
↓ 77/wk
dsh plugin --profile web add dsh-convo-costby jessicacui99
Live token spend for the current DSH session, priced with your profile's table and shown beside the composer.
★ 0
MIT
JavaScript
Oct 11, 2026
dsh plugin --profile web add dsh-plugin-token-costby dog-lin
Real-time session cost meter for the DeepSeek Harness web GUI: folds provider token usage into a per-session cost projection and displays it live under the composer.
★ 0
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add dsh-session-costby Arun1016
Account balance and per-session cost pill for DeepSeek Harness (dsh) web GUI: official peak/off-peak pricing, per-model breakdown, no credentials stored.
★ 0
MIT
TypeScript
Oct 14, 2026
dsh plugin --profile web add dsh-cost