---
name: "opencode-costs"
description: "Consulter et synthétiser l'historique de consommation OpenCode (tokens et coûts par modèle, par jour, par agent, par session) via le script /var/lib/opencode/opencode-costs, sans API et en limitant la consommation de tokens."
---

# OpenCode Costs — historique de consommation

Skill IA pour accéder à l'historique de consommation d'OpenCode : coûts et
tokens par modèle (ex. `deepseek/deepseek-v4-flash-0731`), par jour, par agent
et par session.

## Utilisation (recommandée — zéro token)

Le script `/var/lib/opencode/opencode-costs` lit la base **en lecture seule**,
sans serveur ni API. **Ne pas régénérer la synthèse manuellement** : exécuter le
script et s'appuyer sur sa sortie.

### Depuis le TUI OpenCode (le plus rapide)

| Commande | Effet |
|---|---|
| `/costs-oc` | Rapport Markdown complet (totaux, par modèle, jour, agent, top sessions) |
| `/costs-oc-json` | Résumé JSON compact — **le plus économe en tokens** |
| `/costs-oc-day` | Tableau **jour par jour complet** (tous les jours, jours à 0 inclus, toutes les colonnes) — à afficher tel quel, sans résumer ni filtrer |

⚠️ `/costs-oc-day` doit afficher le tableau **intégralement** : toutes les colonnes
(Jour, Sessions, Coût, Tokens in/out, Reasoning, Cache lu) et tous les jours de
la période, y compris ceux à 0. Ne pas tronquer les lignes ni les colonnes.

### En ligne de commande

```bash
/var/lib/opencode/opencode-costs            # rapport Markdown complet
/var/lib/opencode/opencode-costs --json     # résumé JSON compact (le + économe)
/var/lib/opencode/opencode-costs --calendar # tableau jour par jour (jours à 0 inclus)
/var/lib/opencode/opencode-costs --days=30  # 30 derniers jours
/var/lib/opencode/opencode-costs --top=5    # top 5 sessions
/var/lib/opencode/opencode-costs --short    # idem --json
```

### Filtres de période (avec `--calendar`, `--since`, `--until`)

Formats de date acceptés : `AAAA-MM-JJ` ou `JJ/MM/AAAA` (syntaxe `--opt=val` ou `--opt val`).

| Besoin | Commande |
|---|---|
| Du début jusqu'au 08/10/2026 | `/costs-oc-day --until 08/10/2026` |
| Du 08/10/2026 à aujourd'hui | `/costs-oc-day --since 08/10/2026` |
| Entre 06/10/2026 et 12/10/2026 | `/costs-oc-day --since 06/10/2026 --until 12/10/2026` |
| 30 derniers jours | `/costs-oc-day --days=30` |

## Données restituées

- **Totaux** : sessions, messages assistant, coût total USD, tokens (in, out,
  reasoning, cache lu/écrit).
- **Par modèle** : coût + part en %, tokens par modèle (source : JSON de chaque
  message `assistant` → précision maximale, y compris changement de modèle en
  cours de session).
- **Par jour** et **par agent** : coût et nombre de sessions.
- **Top sessions** : les N sessions les plus coûteuses (titre, agent, modèle).

## Stockage des données

- Base SQLite : `~/.local/share/opencode/opencode.db`.
- Table `session_v2` : agrégat par session (`cost`, `tokens_input`,
  `tokens_output`, `tokens_reasoning`, `tokens_cache_read`, `tokens_cache_write`,
  `model`).
- Table `session_message` : détail par message — le champ JSON `data` contient
  `cost` et `tokens {input, output, reasoning, cache{read, write}}` + `model`.

## Accès API (alternative, si le serveur est joignable)

```bash
opencode api --server http://127.0.0.1:49374 get /api/experimental/session/stats
opencode api --server http://127.0.0.1:49374 get /api/session
```

⚠️ Le port peut varier (`opencode service status`). Si `opencode api` tente de
démarrer un service alors que le serveur tourne déjà, pointer explicitement avec
`--server http://127.0.0.1:<port>`.

## Précautions

- **Ne jamais éditer `opencode.db`** (stockage vivant, service en cours).
- Le coût affiché est **estimé par OpenCode** à partir des tarifs déclarés du
  provider ; il peut différer légèrement de la facture réelle (ex. OpenRouter).
- Dépendances du script : `bash`, `sqlite3` (support JSON inclus).
