The project's README from github.com/bowenliang123/dsh-context. As one markdown file: README.md.

The best DeepSeek Harness plugin for Agent's context insights and management.
dsh-context provides full context lifecycle management features.
/context command — the slash command shows the context model for current context composition and recent context evolution.Install dsh-context plugin from DeepSeek Harness:
dsh plugin --profile web add dsh-context
Or update the dsh-context plugin:
dsh plugin --profile web update dsh-context@latest
Then start the web UI with dsh web. No build step, no restart.
Three surfaces, one story — what your agent is carrying, how it got there, and what it did with it:
| Where | What you get |
|---|---|
| Context tab | The full dashboard: stats, composition, per-request trend, events, file activity, and the agent network — in every session. |
/context command |
A centered modal with the same composition and context browser, without leaving the chat. |
| Settings → Plugin configuration | Per-user defaults: trend granularity & mode, File Activity sort. |
Open any session and click the Context / 上下文 tab:

| Card | The question it answers |
|---|---|
| Context Stats | Turns, steps, live tool calls & images, context-event tallies — plus a list-price cost estimate (hover the ? for per-1M rates). |
| Token Stats | Where the billed tokens went: cache read/write, uncached input, output — around the cache-hit ring. |
| Timing Stats | How active time split across model calls, tool runs, and overhead. |
| Current Context | What's in the window right now. |
| Context Trend | Every request's size — and its story. |
| Context Browser | What any request was actually assembled from. |
| Context Events | When and why the window changed. |
| File Activity | What the agent did to your files. |
| Agent Network | The whole agent family, live. |
The headline occupancy and composition read the same official token-meter projections as the chat composer's context ring (contextPressure / contextBreakdown), so the figures always match what the ring tells you.

A six-color stacked bar against the model's full window (hatching = free headroom): system prompt, tool schemas, user messages, injected context, assistant replies, tool results — each with its ≈token figure and share. When a conversation starts degrading, this is where you see which part is responsible.

One stacked bar per model request — finer than per-message — so you watch the window grow turn by turn:

Pick Live (next request) or any retained step, and browse what that request was assembled from: six collapsible categories expand into one row per element with its token price, and every element expands again into its actual content — the system prompt, each tool's JSON schema, message text, reasoning, tool arguments, and tool outputs.
tool-* first-party packages, dsh-* capability packages, mcp:<server> proxies, or the exact plugin watched live from tools.register(). Sort by size / name, and filter every category by its own searchable fields:

read_image results and image attachments):
+N items, ±Nk tokens) tell you what a turn added or reclaimed at one glance. Steps older than a compaction are reconstructed from the removed-message archive — and the card says so when a step's makeup is only approximate.
Every injection, compaction, prune, model switch, and plan-mode toggle — labeled with its producer (instruction file, plugin id, skill name), its net token delta (compactions show what they reclaimed), turn/step, and time. The Inject / Compact / Prune / Switch / Mode chips filter the log by kind.

One row per touched file — read, written, or searched — aggregated up to whichever step you pick on the trend chart:
edit/write contributes its estimated +added / −removed footprint, per file and summed.str_replace_editor, and the nested calls inside PTC run_code programs are all folded into per-tool rows.
The current agent, its parents, and every subagent — one node per agent, colored edges for the lineage, multi-level delegation on one map. Each ring is that session's composition scaled to its window occupancy; hover for tokens, requests, billing, and active time; click to jump into that session's own Context tab. Running agents breathe with a green pulse.
/context commandType /context (or pick it from the / menu) and press Enter:

A centered dialog opens with the Current Composition card and the Context browser — the same composition bar, per-step picker, and vs previous turn diff badges as the tab:

In Settings → Plugins → Plugin configuration, the Context card holds this plugin's per-user preferences — default trend granularity (Step/Turn), default trend mode (Total/Delta), and the File Activity default sort. In-chart and in-card toggles stay per-view and never overwrite the stored preference.

@deepseek-ai/dsh 0.1.2-rc1+, across the V0 (0.1.2-rc.x), V2 (0.1.3-alpha.x), and V3 (0.1.5-alpha.x+) session-log generations. The per-release matrix and how it is verified: docs/compatibility.md.If dsh-context helped you understand what your agent is carrying around, a ⭐ on GitHub is much appreciated — and issues/PRs are welcome!