본문으로 건너뛰기
G

dsh-cost-meter

goodandready/dsh-cost-meter

Session cost chip in the DeepSeek Harness conversation header showing live token usage by bucket, peak/off-peak tariff pricing, and a countdown to the next tariff switch.

설치

dsh plugin --profile web add github:goodandready/dsh-cost-meter

README

📦 @goodandready/dsh-cost-meter

Live Session Cost Chip, Peak/Off-Peak Tariff Switcher & Token Pricing for DeepSeek Harness

npm version license DSH Plugin Node version

GoodAndReady Showcase

🇬🇧 English🇷🇺 Русский🇨🇳 中文说明

If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it.

🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version.

⚡ Overview & The Problem

AI development and agentic coding consume large volumes of tokens across prompt generation, reasoning, and context caches. Without continuous financial feedback, developers risk unexpected billing spikes, missing off-peak discount windows, or failing to identify runaway subagent expenses.

@goodandready/dsh-cost-meter embeds a high-precision cost telemetry chip directly into the DeepSeek Harness conversation header (conversation.session.header.utilities):

● ≈ $0.12  0:17     ← Live session cost chip with tariff countdown

Clicking the chip expands an interactive breakdown modal displaying 1M token rate tables across peak and off-peak tiers, active UTC window status, and per-model session expenditure summaries.


🏛️ Architecture

graph TD
    subgraph StreamTelemetry ["DeepSeek Harness Runtime"]
        Req["LLM Request / Header<br/>(provider, model)"]
        StreamHook["Incremental Streaming Chunks"]
        Proj["costByModel Projection<br/>(30-min UTC Slots)"]
    end

    subgraph PricingCatalog ["Tariff Resolution Engine"]
        Manual["Manual Config Rates<br/>(settings.yaml: prices)"]
        DeepSeekTier["DeepSeek Official Tier<br/>(Peak vs Off-Peak 50% discount)"]
        OpenRouterTier["OpenRouter API Catalog<br/>(Cached Daily)"]
    end

    subgraph UI ["User Interface Surfaces"]
        Chip["Header Cost Chip<br/>(Active tariff + countdown)"]
        Modal["Breakdown Drawer<br/>(Rates per 1M, UTC windows, model table)"]
        Settings["Settings Card<br/>(Currency, USD rate, timezones)"]
    end

    Req --> Proj
    StreamHook --> Proj
    Proj --> Chip
    PricingCatalog --> Proj
    Manual --> PricingCatalog
    DeepSeekTier --> PricingCatalog
    OpenRouterTier --> PricingCatalog
    Chip --> Modal

✨ Features & Key Capabilities

  1. Incremental Streaming Telemetry: Computes prompt, completion, and cache read/write tokens in real-time without polling or UI stutter.
  2. Dual-Tier Tariff Engine: Official DeepSeek peak windows (01:00–04:00 and 06:00–10:00 UTC) with automatic 50% off-peak discount detection.
  3. UTC Half-Hour Slot Immutability: Historical session expenditure is permanently anchored to the rate active at the moment of execution.
  4. Provider-Aware Routing: Distinguishes direct provider connections from hosted gateways (e.g. OpenRouter vs native endpoints).
  5. Interactive UI Modal & Settings: Custom currency symbols ($, , , ¥), exchange rates, and timezone configurations.

📦 Installation

dsh plugin --profile web add @goodandready/dsh-cost-meter

Restart your DeepSeek Harness instance and refresh the browser.


⚙️ Configuration Reference (settings.yaml)

dsh-cost-meter:
  currency: "$"
  usdRate: 1.0
  displayTimeZone: "UTC"
  useOpenRouter: true
  prices: {}
  modelMap: {}

Configuration Parameters

ParameterScope / LocationTypeDefaultDescription
currencyGUI / settings.yamlstring"$"Display currency symbol (e.g. $, , )
usdRateGUI / settings.yamlnumber1.0Exchange rate multiplier: units of currency per 1 USD
displayTimeZoneGUI / settings.yamlstring"Europe/Moscow"IANA timezone for peak/off-peak windows formatting
useOpenRouterGUI / settings.yamlbooleantrueAutomatically fetch rates & discount windows from OpenRouter
refreshHoursGUI / settings.yamlnumber24Hours between periodic OpenRouter catalog updates
deepseekPeakPricessettings.yaml onlyobject{}Override built-in DeepSeek peak rates by model id
pricessettings.yaml onlyobject{}Manual rates per 1M tokens { input, output, cacheHit?, cacheWrite? }
modelMapsettings.yaml onlyobject{}Route override: "provider/model" -> OpenRouter model id
manualPeakWindowsUtcsettings.yaml onlyarray[]Manual peak windows HH:MM-HH:MM UTC used with manual prices
manualOffPeakMultipliersettings.yaml onlynumber1.0Multiplier applied outside manual peak windows

Note on GUI vs YAML: Primary scalar parameters (currency, usdRate, displayTimeZone, useOpenRouter, refreshHours) are directly editable in the GUI Settings Card under Settings → Plugins → Plugin Settings → Cost Meter. Advanced structured rules (prices, modelMap, deepseekPeakPrices, manualPeakWindowsUtc, manualOffPeakMultiplier) are configured in settings.yaml due to their complex dictionary/array schema.


🧪 Testing

Run the automated test suite:

npm test

📄 License

MIT © GooDAnDReaDY

Performance & Smart Cost Features (v0.8.1)

  • O(K) Rate Change Calculation: Next schedule transition is resolved in $O(K)$ boundary hops instead of full-day iterations.
  • Server Cache & ETag: High-throughput state polling with 304 Not Modified support and internal tariff LRU cache.
  • Manual Catalog Sync: On-demand catalog fetch via POST /dsh-cost-meter/refresh or UI "Sync Now" button.
  • Savings Advice & Budget Threshold: Popover hints on impending off-peak discounts (50% off) and optional warning thresholds (budgetThreshold).
  • Quick Summary Export: Instant markdown/text summary copy to clipboard.

UI Refinements & Language Standards (v0.8.2)

  • Native Dot Status Indicator: Header chip uses a refined status dot (green for off-peak, amber for peak, pulsing red for budget overrun, neutral for flat/idle) rather than full-fill backgrounds.
  • Context Cache Savings: Automatically calculates and highlights financial savings gained from prompt caching (e.g. Cache saved: ≈ $0.14 (-68%)).
  • Multi-Model Accordion: Clean collapsible list when 3 or more models are used in a single session.
  • DSH Locale Standards: Full English (en) and Chinese (zh) locale dictionaries registered directly in the client bundle. Russian translations are provided externally via @goodandready/dsh-russian-lang.

관련 플러그인