dsh-context: a context dashboard plugin for DeepSeek Harness
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details, understanding how the context is made of, and how it evolves. 一站式 DeepSeek Harness 上下文可视化插件,Context 面板及浏览器和侧边栏与 Context 命令,透视上下文组成、演进、压缩、剪枝等事件与动作。
At a glance
- What is it?
- dsh-context adds a cross-session dashboard, a per-session Context tab and a /context command to DeepSeek Harness, all reading the same token-meter projections as the composer's context ring. It is a visibility tool, not a context optimiser.
- Who is it for?
- Adopt dsh-context if you run DeepSeek Harness sessions long enough that context growth, compaction and cache behaviour affect your bill or your output quality, and you want the numbers surfaced without leaving the chat UI. Skip it if you only use the Harness CLI, or if you are not on the web profile, since every surface it adds lives in the web UI.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What dsh-context solves, and for whom
An agent session is a context window filling up over time, and the chat UI shows you one number for it. dsh-context exists because that single number does not tell you which part of the window is growing, when a compaction removed something, or how much of the bill came from cache misses. The README frames the plugin around four surfaces that answer one question set: what the agent is carrying, how it got there, and what it did with it.
The audience is narrower than "anyone using an LLM". This is a plugin for DeepSeek Harness, installed through the dsh plugin command against a profile, and three of its four surfaces are web UI elements. If you drive the Harness from a terminal only, most of what the plugin renders has nowhere to appear. The one surface that travels with the chat is the /context slash command, which the README describes as a centered modal showing composition and the context browser.
Four surfaces built on the official token-meter projections
The architecture claim that matters is in the README: the headline occupancy and composition read the same official token-meter projections as the chat composer's context ring, named there as contextPressure and contextBreakdown. That is why the plugin's figures match the ring rather than drifting from it. A plugin that recomputed context size from its own tokenizer would disagree with the composer, and the disagreement would be the first thing a user noticed.
The four surfaces divide the work. The Context Dashboard sits above Settings on the sidebar foot and aggregates across sessions: a KPI band over a 7d / 30d / all range, an eight-week activity heatmap, a composition ring summed over the range, and session cards filterable by range, day, group or search. The Context tab opens inside any session and carries the per-session cards: stats, token split, timing, current context, trend, browser, events, file activity and agent network. The /context command shows composition and the context browser as a modal without leaving the chat. Settings, under Plugin configuration, holds per-user defaults for trend granularity and mode and for File Activity sort.
The per-session cards are where the design gets specific. Current Context renders a six-color stacked bar against the model's full window, with hatching for free headroom, splitting system prompt, tool schemas, user messages, injected context, assistant replies and tool results, each with an approximate token figure and share. Context Trend draws one stacked bar per model request, which is finer than per-message, and pins compaction and prune events to the bar where they occurred. A Step brief under the chart gives three plain-language rows (User, In, Response), and clicking a row opens that message in the Context browser. Hovering a bar previews that step's assembled context in the browser; leaving the chart returns to your own selection.
Installing dsh-context and reading your first session
The README gives installation as a dsh plugin command against the web profile. There is no build step and, per the README, no restart:
dsh plugin --profile web add dsh-contextAfter that, start the web UI with dsh web. To move to a newer release later, the README gives the update form:
dsh plugin --profile web update dsh-context@latestWith the web UI running, the first useful action is not in a session at all. Click Context Dashboard at the bottom-left of the sidebar, directly above Settings. Pick a range in the KPI band (7d, 30d or all) and the band reports sessions, billed tokens, estimated cost and cache-hit rate for that range. Clicking a day in the activity heatmap filters the session cards to sessions active on that day. Clicking a card opens that session.
Inside a session, the Context tab is where the per-request detail lives. Set the trend to Step granularity and Delta mode if you want signed change per request: in Delta mode, per the README, growth piles up above the baseline and a compaction dives below it. Hover a bar for the tooltip, then click to pin the full breakdown, which places provider-reported Actual Prompt, Output and Cache next to the plugin's estimates. If you would rather not leave the conversation, type the slash command instead:
/contextThe README describes that as opening a centered modal with the composition view and the context browser.
Where the numbers are estimates, and where the plugin stops
The cost figure is the weakest number on the page, and the README is honest about it in one clause: the session cost is estimated from models.dev list prices, with per-1M rates available on hover and DeepSeek peak/off-peak pricing taken into account. List prices are not your invoice. Any discount, credit, negotiated rate or provider-side change makes the plugin's cost column wrong in a way the plugin cannot detect, and the README does not document a way to supply your own price table. Treat the cost column as a relative signal between sessions, not as accounting.
Context occupancy carries the same caveat in a milder form. The composition figures are described as approximate token figures alongside the provider-exact output that closes the ring. Approximate split, exact total: that is a reasonable design, but it means small differences between the plugin's per-category numbers and a provider's own token accounting are expected rather than a bug.
The harder boundary is environmental. The Context panel as a right-sidebar tab is tied in the README to dsh 0.1.5-rc.1 or later, so on an older Harness you get the tab, the dashboard and the command but not the sidebar panel. The package's engines field requires Node ^22.19.0 or >=24.0.0, which rules out older runtimes. And none of this helps if your problem is that the context is too large. dsh-context reports composition, trend and events; the README does not present it as a tool that prunes, compacts or rewrites context for you. It shows you the compaction that already happened.
dsh-context versus rolling your own session log analysis
The credible alternative is not another plugin, it is exporting session data and analysing it yourself. DeepSeek Harness sessions produce the underlying token-meter projections either way, and a script that reads them into a notebook gives you arbitrary charts, cross-project joins and retention beyond whatever the plugin keeps.
The difference is where the work happens and what it costs you. A notebook pipeline needs the export format, a place to store the output, and a re-run every time you want a fresh answer; dsh-context reads live session state in the UI and answers in one click, which is why the dashboard's filterable session cards and the click-through from a heatmap day to a filtered card list matter more than the chart styling. What you give up is analytical freedom: the plugin's cards are fixed, and the README documents per-user defaults only for trend granularity and mode and for File Activity sort, not a query language or a custom metric. If your question is "how does cache-hit rate correlate with turn count across three months of sessions", a notebook wins. If your question is "why did this session's window jump on this turn", the pinned breakdown on the trend bar answers it faster than any export round-trip.
Maintenance, licensing and what upgrading costs you
The repository is not archived, and the last push was on 2026-09-16, the same day as the v0.53.0 release. The release history shows v0.52.1 on 2026-09-14 and v0.52.2 on 2026-09-15, so the project is releasing frequently, and v0.52.1's notes mention Git-source installs fixed and injected rows labeled by source. Frequent releases cut both ways: fixes arrive quickly, and the plugin tracks a Harness whose own APIs it injects against. The package.json dsh.client.inject list names several @deepseek-ai packages, including dsh-api-remotes, dsh-client-connection, dsh-client-locale and dsh-client-ui-conversation. Any of those changing shape is a potential break, which is the real upgrade cost here rather than anything in the plugin's own code.
The licence is Apache-2.0, stated in the repository and shipped in the package files list alongside README.md and cordis.patch.yml. Apache-2.0 is permissive and includes an explicit patent grant, which matters for a plugin that injects into a client UI. It also carries notice and attribution obligations when you redistribute, and it does not grant trademark rights in the project name. That is a description of the licence text, not legal advice for your situation.
One packaging detail is worth knowing before you install: the published files list includes cordis.patch.yml and the built lib/index.js, lib/client.js and lib/index.d.ts, but not src/. You are consuming a build, not the TypeScript sources. The repository does contain src/, tests/, vitest.config.ts and tsdown.config.ts, so the source and test setup exist for anyone working on the plugin itself, and the scripts include typecheck, test with coverage, and lint via oxlint.
Editorial conclusion
Adopt dsh-context if you run DeepSeek Harness sessions long enough that context growth, compaction and cache behaviour affect your bill or your output quality, and you want the numbers surfaced without leaving the chat UI. Skip it if you only use the Harness CLI, or if you are not on the web profile, since every surface it adds lives in the web UI. Before committing, verify your dsh version supports the right-sidebar Context panel (the README ties it to dsh 0.1.5-rc.1+), check that your Node runtime satisfies the engines field (^22.19.0 || >=24.0.0), and confirm the cost figures against your own provider invoice, because the README describes them as estimates from models.dev list prices rather than billed amounts.
Frequently asked questions
What does DSH mean in dsh-context?
DSH stands for DeepSeek Harness, the host application this plugin extends. The repository topics use deepseek-harness and deepseek-harness-plugin, and the README installs the plugin through the dsh command against a Harness profile.
What does the abbreviation DSH stand for?
It is the short form of DeepSeek Harness. The plugin's own topics list deepseek-harness alongside dsh-plugin, and the install command is dsh plugin --profile web add dsh-context.
How do I install the dsh-context plugin?
Run dsh plugin --profile web add dsh-context, then start the web UI with dsh web. The README states there is no build step and no restart, and updates use dsh plugin --profile web update dsh-context@latest.
Does dsh-context work without the DeepSeek Harness web UI?
Mostly no. Three of its four surfaces (the Context Dashboard, the Context tab and the right-sidebar Context panel) are web UI elements, and the README ties the sidebar panel to dsh 0.1.5-rc.1 or later. The /context slash command is the only surface described as usable inside the chat.
Is the cost shown by dsh-context my actual bill?
No. The README describes the session cost as estimated from models.dev list prices, with per-1M rates on hover and DeepSeek peak/off-peak awareness. It is an estimate, not provider billing, and the README does not document a way to supply custom prices.
Community notes