Skip to content
dsh.fish
Bundle

@hiro-nikaitou/dsh-ocg-billing

OpenCode Go billing layer for DeepSeek Harness (dsh): cached official pricing, proactive update checks, bill computation and a resident bill line in the web composer dock.

Source
hiro-nikaitou
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-ocg-billing

[中文](README.zh.md) | English

**OpenCode Go billing layer for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh).**

This plugin adds a billing layer on top of dsh's existing usage tracking (per-session TokenUsage recorded in session logs). It fetches the official [OpenCode Go pricing docs](https://opencode.ai/docs/go) **once**, caches the price table to disk, and re-checks it proactively — billing always runs against the cache, never against a live fetch. It also calls the **default model** to analyze the bill, and shows a resident bill line under the web composer.

> This is a community plugin, not affiliated with DeepSeek AI or OpenCode. Prices are estimates computed from the official docs; actual charges come from your OpenCode Go subscription statement.

## Features

- **Resident bill line (web UI)** — under the composer card (conversation.composer.dock): global 7-day cost, monthly limit progress, current-session cost, top models, price-source freshness. Auto-refreshes every 60s; click to refresh instantly.
- **Cached official pricing** — ocg_pricing_check re-fetches [opencode.ai/docs/go](https://opencode.ai/docs/go), diffs against the cache, and updates the cache only when the table changed (force: true forces a refresh). A 24h background check runs automatically. Billing never re-queries the website.
- **Bill computation** — ocg_bill: global (all sessions in the last N days) or per-session (scope=session + sessionId), broken down by model and by session. Uses the official per-1M-token rates including Cached Read / Cached Write, and tiered rates (GPT 5.6 Luna 272K, Qwen3.7/3.6 Plus 256K). Unknown models are listed at zero cost.
- **Default-model analysis** — ocg_bill_analyze computes the bill and asks the **default model** (the agent-default-model selection, e.g. opencode-go/deepseek-v4-flash) for a summary, anomalies, top cost drivers, and saving recommendations.

## Install

Prerelease note: DeepSeek Harness is in developer preview; peer ranges follow the installed 0.1.0-rc.6 mainline.

    # from a profile
    dsh plugin --profile web add <path-to-this-repo>   # or link:/absolute/path
    # or overlay-style in ~/.dsh/config.yaml
    # - insert:
    #     - id: ocg-billing
    #       name: '@hiro-nikaitou/dsh-ocg-billing'

Restart dsh web. The bill line appears under the composer once the plugin loads (browser half activates after approval).

## Tools (model-visible)

| Tool | Purpose |
|---|---|
| ocg_pricing_status | Cached price table, source, fetch time, cache health. Never fetches. |
| ocg_pricing_check | Proactively re-fetch the official docs and diff against the cache; updates only on change (or force). |
| ocg_bill | Bill computation: global or per-session, by model and by session. |
| ocg_bill_analyze | Bill + default-model analysis (summary, anomalies, savings). |

## How it works

- **Price cache**: D:\appdata\dsh\ocg-billing\pricing.json (first run seeds from the built-in snapshot of the official docs; seed flag in status). Model list: 20 docs models + extra seed entries for models configured but not listed in the docs (source tagged models.dev/unknown).
- **Usage source**: relies on dsh's existing usage records — request/header + assistant/message events in each session log (the same data live-stats reads). Global scope aggregates sessions created within the window; session scope prices one sessionId.
- **Fetch channel**: ctx.subprocess + curl.exe (the bash/shell seam is unavailable on Windows); falls back to ctx.shell elsewhere.
- **RPC**: client polls GET /api/ocg-billing/panel?sessionId=... (registered via ctx.webServer); the host caches the global aggregation for 5 minutes.

## Pricing rules

- cacheRead billed at the official cache-read rate (fallback: input rate); cacheWrite at the official rate (fallback: output rate).
- Tiered models pick the tier by per-request input tokens.
- Unknown models are priced at 0 and reported in unknownModels.
- Subscription fee ($10/month) is shown as reference, not added to usage cost.

## License

[MIT](LICENSE)

## Disclaimer

Prices are parsed from the official docs page and may lag or mis-parse after upstream layout changes — run ocg_pricing_check to refresh. This plugin is not affiliated with DeepSeek AI or OpenCode.

Install

dsh plugin --profile web add github:hiro-nikaitou/dsh-ocg-billing

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source