DeepSeek Harness plugin

dsh-token-cost

Per-project LLM token usage and RMB cost in the DSH Web sidebar, split by input (cache miss), cache hit, and output with model price auto-pricing.

Jump to install

Source facts

Repository
gdy01/dsh-token-cost
Latest update
Aug 19, 2026
Category
Usage & Billing
GitHub stars
0

Install

Start with a prompt that asks an agent to read the source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to read the page and repository first.

Do not install anything yet. Read this DeepSeek Harness plugin and explain what it does, which files, networks, or credentials it can access, and how to install and remove it.

Plugin page: https://deepseekplugins.org/plugins/gdy01/dsh-token-cost
GitHub: https://github.com/gdy01/dsh-token-cost
Plugin: dsh-token-cost
Author: gdy01
Install command: dsh plugin --profile web add github:gdy01/dsh-token-cost

Do not run the install command until I confirm.

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-token-cost

A DSH plugin that shows per-project LLM token usage and converts tokens to RMB cost, split into:

  • 输入(未命中) — uncached input tokens
  • 命中 — cache-hit input tokens (cacheReadTokens)
  • 输出 — output tokens

Costs are calculated from the model's standard price table (CNY per 1M tokens). Unknown models are listed with their token counts but no cost, so you can add/override prices without touching code.

Features

  • Reads local DSH session logs (~/.dsh/sessions or $DSH_HOME/sessions).
  • Aggregates by project (the session cwd) and by model.
  • Adds a 💰 button to the DSH web sidebar footer; the panel shows project totals and expandable model-level breakdown.
  • Zero runtime npm dependencies: uses Node's built-in node:zlib Zstandard decoder.
  • Loopback-only HTTP API (/dsh-token-cost/*).

Install

Install the subdirectory dsh-token-cost, not the parent dsh plugin folder. The parent folder has no package.json, so installing it produces no sidebar button.

Use the absolute path (the path contains a space, so quote it):

dsh plugin --profile web add "file:/Users/dg/Documents/dsh plugin/dsh-token-cost"

Or, from inside this directory:

cd /Users/dg/Documents/dsh plugin/dsh-token-cost
dsh plugin --profile web add "file:$PWD"

If you previously installed the wrong folder, remove it first:

dsh plugin --profile web remove "dsh plugin"
dsh plugin --profile web add "file:/Users/dg/Documents/dsh plugin/dsh-token-cost"

Then restart dsh web and refresh the browser. A 💰 button appears at the bottom of the sidebar.

You can also use the included installer script:

./scripts/install.sh

How it works

The host plugin scans every session.jsonl.zstd / session.jsonl under the DSH sessions directory. It replays:

  • session.cwd → project
  • request/header → current model
  • assistant/chunk { type: 'usage' } and assistant/message.usage → input / cache-hit / output tokens

The same (turn, step) usage sample is de-duplicated (a later assistant/message replaces the earlier usage chunk), matching DSH's own token-meter accounting.

Price table

Built-in DeepSeek official RMB prices (元 / 1M tokens):

ModelInput (miss)Cache hitOutput
deepseek-chat / deepseek-v4-flash20.58
deepseek-reasoner / deepseek-v4-pro4116

You can override prices in the profile's cordis.patch.yml (a patch row replaces the whole config, so include every price you want to keep):

- id: token-cost
  config:
    prices:
      deepseek-chat:
        input: 2
        hit: 0.5
        output: 8
      deepseek-reasoner:
        input: 4
        hit: 1
        output: 16
      deepseek-v4-flash:
        input: 2
        hit: 0.5
        output: 8
      deepseek-v4-pro:
        input: 4
        hit: 1
        output: 16

API

  • GET /dsh-token-cost/api/stats — full per-project/per-model JSON
  • GET /dsh-token-cost/api/prices — active price table
  • GET /dsh-token-cost/healthz — liveness

License

MIT