Yellow one-line notice for a prompt cache miss after the cache was rebuilt; shows re-billed uncached input tokens, cached hit tokens, and TTFT.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-cache-miss
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:wefio/dsh-cache-miss
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DSH web plugin: a yellow one-line prompt-cache-miss notice under an assistant reply whose request rebuilt the prompt cache — shown the moment the miss is detected from the stream's usage, usually the turn's first request.
What it does
An agent turn runs assistant -> tool -> assistant -> tool .... The turn's
first model call is the moment the provider's prompt cache may have
expired and needs a full re-prefill (cache rebuild); later calls in the same
turn usually hit the just-rebuilt cache. DSH's own token/cache stats sit under
the composer and the produced-files row sits at the turn tail, neither of which
indicates a miss where it actually happens.
This plugin renders, under each assistant reply whose request missed, a single
yellow line, live, as soon as that step's usage chunk arrives:
Cache miss after 3m idle: 182k tokens re-billed · 0.8k cached · ttft 2.1s ↑

idle— gap from the previous turn's end to this one's start.re-billed— the request's uncached input tokens (abbreviated to k).cached— the cached-read portion of the same prefill (when the provider reports it), so the rebilled-vs-cached split stays unambiguous.ttft— first-token latency, when available; the up arrow hints a rebuild prefill usually ran slower.
It is pure presentation: nothing is written to the session log, no DSH source
is modified, and it does not take the turn-tail chain, so it does not collide
with the produced-files row (e.g. DSH-better-sidebar).
Miss definition
inputTokens is the disjoint "uncached input only" count and cacheReadTokens
the cached part of the same prefill, so the cache-hit ratio is
hitRatio = cacheReadTokens / (inputTokens + cacheReadTokens). A request is a
miss when, all together:
inputTokens > 0,hitRatio < 80%(over 20% of the prefill was uncached — significant because context accumulates), andinputTokens >= 1000(at least 1k tokens actually re-billed).
A provider that reports usage but no cache fields cannot be classified until it
has ever shown a cache field. Before that evidence exists, the plugin does not
misreport the request as a miss; it shows a grey notice
Provider reports no cache fields — cannot confirm cache status. Each such
provider is noticed once; switching to another no-evidence provider surfaces a
fresh notice, with a more detailed per-provider warning in the console. Once a
provider has shown any cache field, later requests without fields are treated as
full misses and show the yellow miss line normally. A provider that reports no
usage at all stays silent. A normal continuation reusing the just-built cache
therefore stays quiet (hit ratio ≥ 80%), and re-billed shows only the
uncached inputTokens.
The miss is read from the stream's own usage chunk — adapters emit it before
the terminal finish — so the notice appears as soon as the usage lands (while
the reply is still streaming), not only once the assistant message settles.
The line is logged to the browser console once per step, stamped in the
browser's local time zone.
Install
dsh plugin --profile web add dsh-cache-miss
Restart dsh web (or hard-refresh the running GUI) to load the client bundle.
Known limitations
- TTFT is the wall-clock gap between the step's
step/startevent and its first non-empty token delta, computed from session event times. It is absent (rendered as if no timing) when a boundary fell outside the loaded window. - The node publishes for every assistant step, but renders nothing for cache hits, so a hit turn contributes no visible row. Each step logs at most one console line regardless of how many renders follow.
- Providers that have never reported cache fields get one grey notice per provider and no heuristic guess: TTFT is too sensitive to network/load to reliably separate "slow because of a cache miss" from "just slow".
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8178
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8178
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 3903
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 3815
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 3514
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1711
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.