> dsh.works

dsh plugin · MIT · not affiliated with DeepSeek

DeepSeek bills by the hour now. This is the meter for it.

Two peak windows a day, off-peak at half the peak rate. Cost stopped being a number you read afterwards and became a rate you are standing in.

One line under the dsh composer: what this session cost, which tariff is running, how long until it flips. Hover it for the tariff clock, the cache economics, and your balance.

$ dsh plugin --profile web add @dshworks/dsh-meter

What it looks like in place

The dsh web UI with the meter's line under the composer reading ¥0.0672, peak, off-peak in 48m, and its card open above showing the session total, a 24-hour tariff strip, the cache/input/output split, and the account balance.
The line sits under the harness's own stats row — it adds a row, it does not shadow the shipped one. Captured on dsh 0.1.0-rc.6, 2026-08-15: the clock is live, the money is flat-rate, because the session predates the switchover the next section describes.

The rate card it carries

per 1M tokenscache hitcache missoutput
v4-flash off-peak$0.007 / ¥0.05$0.22 / ¥1.5$0.66 / ¥4.5
v4-flash peak$0.014 / ¥0.1$0.44 / ¥3$1.32 / ¥9
v4-pro off-peak$0.022 / ¥0.15$0.66 / ¥4.5$1.98 / ¥13.5
v4-pro peak$0.044 / ¥0.3$1.32 / ¥9$3.96 / ¥27

Peak is 01:00–04:00 and 06:00–10:00 UTC (09:00–12:00 and 14:00–18:00 Beijing); every other hour is off-peak, including the two-hour gap between the windows. Off-peak is exactly half of peak. A cache hit bills at 1/30 of a miss, which is the ratio worth designing a prompt around. Rates re-checked 2026-08-17 against DeepSeek's pricing page; the retired flat card is kept in the plugin so old sessions still cost what they actually cost.

Install

$ dsh plugin --profile web add @dshworks/dsh-meter $ dsh --profile web

dsh plugin forwards to pnpm, so pnpm must be on PATH. Nothing else to configure — the meter appears under the composer as soon as a session bills its first request. Node 20+.

The balance read is optional. It runs on the host against the same credential seam the LLM adapter uses; the browser gets parsed numbers and never the key. Set balance: false in your profile to turn it off entirely — the meter keeps working.

Full documentation, configuration keys and known limitations live in the README (中文).