Preface¶
DeepSeek Harness (hereinafter referred to as dsh) is an agent runtime open-sourced by DeepSeek AI. Its core concept is “everything is a plugin”: models, tools, sessions, and interfaces can all be replaced or combined via plugins. The official repository is still in developer preview, and its interfaces will continue to change. There is currently an independent third-party plugin directory in the community for retrieving and verifying installation commands, which has no official affiliation with DeepSeek / Fang (the Chinese name of DeepSeek AI) and should not be treated as an official app store.
When running tasks via the web interface daily, submission counts, Token usage, and costs are often scattered across session logs and git histories of various workspaces. To answer questions like “How much did I write, how many Tokens did I burn, and how much did I spend roughly this week”, you usually have to manually sift through logs. The GitHub contribution graph solves the same type of problem: laying out daily activities into a grid chart, where the color intensity is instantly recognizable.
That is exactly what dsh-heatmap does. It visualizes submissions, Token consumption, and estimated costs from the past 90 days as a GitHub-style heatmap, attached to the bottom of the left sidebar of the DSH web interface. This article, verified against materials from both the directory page and the GitHub repository, explains what it is, how to install and use it, as well as the permission issues that need attention before installation.
What is it¶
dsh-heatmap is a UI enhancement plugin maintained by 283Gawin, with the repository address at https://github.com/283Gawin/dsh-heatmap. The directory page categorizes it under “UI Enhancements”, with an MIT license and TypeScript as the primary language. As of 2026-08-18, it has 3 GitHub stars, was added to the directory on 2026-08-14, and its last push was on the same day. The npm package name is listed as @linxin666/dsh-client-ui-activity-heatmap in the repository, with the current version 0.1.0. At the time of writing this article, the npm registry returned a 404 for this package, so please use the GitHub source for installation.
The problem it solves is very specific: it permanently displays an activity heatmap in the DSH web interface, summarizing submission counts, billable Token totals, and model-estimated costs on a daily basis, and shows today’s statistics below the grid. The data does not rely on manual bookkeeping: the host process reads the durable logs of local sessions, then aggregates daily submissions by running git log for each workspace.
Core Features¶
The descriptions of its capabilities in the repository README and the directory page are consistent, with the following main features:
- 90-day heatmap (fixed window). The grid is arranged in the same way as the GitHub contribution graph: rows represent Monday to Sunday, and columns are arranged by week. The color intensity is graded logarithmically based on the currently selected dimension. Hovering the mouse over a cell shows the daily details, including submission count, Token usage, and cost. The window length is defined as 91 days in the source code, covering approximately 13 weeks to match the width of the sidebar.
- Three switchable dimensions. Submissions: count commits from all DSH workspace git repositories, excluding merges by default. Tokens: total billable usage. Cost: estimated cost based on built-in model pricing. The currently selected dimension is stored in the browser’s
localStorage. - Today’s statistics block. A fixed row below the heatmap, referencing the style of the Codex personal profile page, displays the total Token usage, cache hit rate, and today’s cost for all sessions today, as well as the combined Token/submission/cost totals within the 90-day window, and a breakdown of today’s cost by model. The cache hit rate is calculated as
cacheRead / (cacheRead + cacheWrite + miss input). Costs are denominated in USD, and you can configure the exchange rate to display RMB simultaneously. - Permanent sidebar panel. The panel is attached to the bottom of the left sidebar, below the workspace list. The mounting is self-healing: it will automatically reset after React re-renders. The title can be clicked to collapse, and the collapsed state is persisted.
- Settings card. Registered in the “Plugins” section of the settings page, you can configure the theme color (blue / green), master switch, whether to include merge commits, USD→CNY exchange rate, and model pricing overrides. You can also write these configurations in the
configfield of the plugin entry.
The data pipeline is consistent across the README and the host source code: the host process lists all sessions and replays the durable logs via the official SDK’s sessionPersistence (including provider usage on assistant/message, and model names on request/header and request/context), then uses subprocess to run git log to count daily submissions for each workspace. The aggregated results are cached with a 60-second TTL and provided to the browser via GET /activity-heatmap/stats.
Installation and Activation¶
The installation command given by the directory page is as follows, run it in the DeepSeek Harness terminal:
dsh plugin add github:283Gawin/dsh-heatmap
For reproducible installations, pin the commit hash. At the time of writing this article, the latest commit on the main branch is 4ba131df0980c8c8af72901ca9fa0f31accb9a6d:
dsh plugin add github:283Gawin/dsh-heatmap#4ba131df0980c8c8af72901ca9fa0f31accb9a6d
The repository README adds two additional pieces of information. First, this is a Web GUI plugin, with "platform": "web" declared in package.json, and you need to explicitly add --profile web when installing for local development. Second, if installing from a linked local source, you need to first build the lib/ directory:
git clone https://github.com/283Gawin/dsh-heatmap
cd dsh-heatmap
pnpm install && pnpm build
dsh plugin --profile web add link:$PWD
After installation, restart dsh web, and the heatmap panel should appear at the bottom of the left sidebar. If it does not show up immediately, you can follow the installation guide on the directory site and use dsh plugins list to confirm whether the plugin has been written to the current configuration.
The README also mentions an npm installation command (dsh plugin --profile web add @linxin666/dsh-client-ui-activity-heatmap). At the time of writing this article, this package does not exist on the npm registry, so do not treat it as a currently available installation method.
Configuration and Typical Usage¶
After restarting the web interface, the heatmap will permanently reside at the bottom of the left sidebar. Daily usage is straightforward:
- View the grid. The darker the color, the larger the volume for the current dimension on that day. The logarithmic scale compresses extreme peaks to avoid having only a few bright days and the rest blank.
- Switch dimensions. Toggle between submissions, Tokens, and costs to respectively see “how much you wrote”, “how much you consumed”, and “how much you estimated to spend”. Your selection will be saved in your local browser.
- Check today’s numbers. Below the grid, you can see today’s Token usage, cache hit rate, cost, as well as the 90-day total and a breakdown of costs by model.
- Collapse when needed. The panel takes up space at the bottom of the sidebar; you can click the title to hide it when not in use.
The configuration items corresponding to the “Plugins → Activity Heatmap” card on the settings page are equivalent to the config field of the plugin entry. The key names are based on HeatmapConfig in the README and source code:
| Key | Type | Default | Meaning |
|---|---|---|---|
| theme | string | blue | Heatmap theme color: blue / green |
| enabled | boolean | true | Master switch for the plugin |
| includeMerges | boolean | false | Whether to include merge commits in submission counts |
| extraRepos | string[] | [] | Additional git repository paths to include in statistics (source code configuration item) |
| usdCnyRate | number | 0 | USD→CNY exchange rate, 0 means do not display RMB |
| priceOverrides | object | {} | Override unit prices for specific models |
Example plugin entry configuration (from the README):
- insert:
- id: ui-activity-heatmap
name: '@linxin666/dsh-client-ui-activity-heatmap'
config:
theme: green
usdCnyRate: 7.2
priceOverrides:
my-model:
inputPerM: 0.5
outputPerM: 2
You need to restart dsh web for configuration changes to take effect.
The built-in pricing table is filled with USD per million Token prices based on vendor public APIs, and calibrated against the curated overrides from xiufengsun/TokenTracker (the README notes the calibration time as 2026-06/07). For DeepSeek models, cache_write is counted as input pricing per the official page; for Anthropic models, cache_write is billed at 0.25 × input price; other vendors usually do not charge extra for writes. Model IDs support prefix matching, and IDs with date snapshot suffixes (such as claude-sonnet-4-5-20250929) will fall back to the base pricing line. Unrecognized models use the default pricing tiers 0.27 / 0.07 / 1.10 (input / cache read / output), which can be overridden via priceOverrides. The full pricing table is in the repository README and will not be copied here to avoid being out of sync with upstream updates.
One settings page restriction needs to be explained separately. The DSH host has a whitelist for client-visible settings namespaces (WEB_SETTINGS_NAMESPACES in dsh-host-apiproxy, defined in the official package). New plugins must add their own namespace to this list, otherwise the settings card will display Settings not available for this plugin.. This plugin needs to add "activity-heatmap" to this array; this modification will be overwritten after upgrading dsh, and you will need to reapply the patch. Restart dsh web for the changes to take effect. The heatmap panel itself does not depend on this settings card, only the graphical configuration modification function will be affected.
Applicable Scenarios and Notes¶
It is particularly suitable for these use cases:
- Long-term users of the DSH web interface for coding who want to review their submission rhythm over the past three months, similar to viewing the GitHub contribution graph.
- Users who switch between multiple models in the same environment and want to estimate daily and per-model Token costs, rather than only viewing single-session bills.
- Users who care about whether cache hits actually work and need a daily visible hit rate metric.
There are several things you must understand before using it:
The plugin runs with the permissions of the current dsh process, and may execute code during installation. Please inspect the source repository and license before installing; for reproducible installations, please pin the commit hash. The directory page lists this warning directly below the installation command, it is not a formality: the host side will read all local session logs and run git log on workspaces.
Costs are estimated values, not official bills. The pricing table may become outdated, unrecognized models use the default tiers, and actual channel discounts, packages, and free quotas will not be automatically reflected. You also need to fill in the usdCnyRate manually; the plugin will not fetch real-time exchange rates.
Submission statistics exclude merges by default, and the scope is “git repositories of all DSH workspaces”, not all repositories on the entire disk. To include additional paths, you need to configure extraRepos.
This is a community MIT-licensed project, not an official DeepSeek plugin. The directory site is only a retrieval portal. dsh itself is still in developer preview, the host whitelist, settings API, and Web UI structure may change. If the heatmap does not appear or the settings card becomes unavailable after an upgrade, first refer to the repository README instead of assuming the plugin is broken.
Summary¶
dsh-heatmap visualizes submissions, Token usage, and estimated costs from the past 90 days as a sidebar heatmap, with data sourced from local session logs and workspace git histories. The installation command should follow the directory page:
dsh plugin add github:283Gawin/dsh-heatmap
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-heatmap/
GitHub: https://github.com/283Gawin/dsh-heatmap