feat(opencode): add modelBreakdowns to JSON output by mjyoo2 · Pull Request #816 · ccusage/ccusage · GitHub
Skip to content

feat(opencode): add modelBreakdowns to JSON output#816

Closed
mjyoo2 wants to merge 1 commit into
ccusage:mainfrom
mjyoo2:feat/opencode-model-breakdowns
Closed

feat(opencode): add modelBreakdowns to JSON output#816
mjyoo2 wants to merge 1 commit into
ccusage:mainfrom
mjyoo2:feat/opencode-model-breakdowns

Conversation

@mjyoo2

@mjyoo2 mjyoo2 commented Jan 20, 2026

Copy link
Copy Markdown

Summary

Add modelBreakdowns field to @ccusage/opencode JSON output for feature parity with ccusage (Claude Code).
Currently @ccusage/opencode only provides modelsUsed (model name array), while ccusage provides detailed modelBreakdowns with per-model token counts and costs.

Changes

  • Add modelBreakdowns array to JSON output in daily, weekly, monthly, and session reports
  • Each breakdown includes: modelName, inputTokens, outputTokens, cacheCreationTokens, cacheReadTokens, cost
  • Backward compatible - modelsUsed array is preserved

Before/After

Before

{
  "daily": [{
    "date": "2026-01-20",
    "inputTokens": 228,
    "outputTokens": 346277,
    "totalCost": 95.38,
    "modelsUsed": ["claude-opus-4-5", "gpt-5.2-codex"]
  }]
}

After

{
  "daily": [{
    "date": "2026-01-20",
    "inputTokens": 228,
    "outputTokens": 346277,
    "totalCost": 95.38,
    "modelsUsed": ["claude-opus-4-5", "gpt-5.2-codex"],
    "modelBreakdowns": [
      {
        "modelName": "claude-opus-4-5",
        "inputTokens": 200,
        "outputTokens": 340000,
        "cacheCreationTokens": 7268400,
        "cacheReadTokens": 82593000,
        "cost": 94.50
      },
      {
        "modelName": "gpt-5.2-codex",
        "inputTokens": 28,
        "outputTokens": 6277,
        "cacheCreationTokens": 0,
        "cacheReadTokens": 0,
        "cost": 0.88
      }
    ]
  }]
}

Summary by CodeRabbit

  • New Features
    • All reports enhanced with per-model breakdowns. Daily, weekly, monthly, and session reports now display comprehensive metrics for each AI model used, including input tokens, output tokens, cache tokens, and associated costs. Breakdowns are sorted by cost for easier identification of resource allocation.

✏️ Tip: You can customize this high-level summary in your review settings.

Add per-model token breakdown to all opencode commands for consistency
with ccusage output. This enables tracking usage across different models.

Modified commands:
- daily: includes modelBreakdowns in JSON output
- monthly: includes modelBreakdowns in JSON output
- weekly: includes modelBreakdowns in JSON output
- session: includes modelBreakdowns in JSON output

Each breakdown contains:
- modelName, inputTokens, outputTokens
- cacheCreationTokens, cacheReadTokens, cost

Implementation matches ccusage exactly:
- TokenStats type for aggregation
- createModelBreakdowns() helper function
- Sorted by cost descending
- Skip <synthetic> model
- Fallback to 'unknown' for missing model names
@coderabbitai

coderabbitai Bot commented Jan 20, 2026

Copy link
Copy Markdown

@ryoppippi

Copy link
Copy Markdown
Member

Keeping this open during triage. The feature request is still useful, but the patch targets the old standalone OpenCode command files and now conflicts with the current unified adapter/reporting architecture. The current implementation should be reworked around apps/ccusage/src/adapter/shared.ts / AgentUsageRow / commands/agent.ts so modelBreakdowns are produced by the shared aggregation path rather than duplicating per-command logic.

@ryoppippi

ryoppippi commented May 19, 2026

Copy link
Copy Markdown
Member

@ryoppippi ryoppippi closed this May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants