{"id":34979255,"url":"https://github.com/junhoyeo/tokscale","last_synced_at":"2026-04-06T01:05:39.378Z","repository":{"id":330260385,"uuid":"1107676388","full_name":"junhoyeo/tokscale","owner":"junhoyeo","description":"🛰️ A CLI tool for tracking token usage from OpenCode, Claude Code, 🦞OpenClaw (Clawdbot/Moltbot), Pi, Codex, Gemini, Cursor, AmpCode, Factory Droid, Kimi, and more! • 🏅Global Leaderboard + 2D/3D Contributions Graph","archived":false,"fork":false,"pushed_at":"2026-04-02T03:23:04.000Z","size":84891,"stargazers_count":1533,"open_issues_count":66,"forks_count":114,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-04-03T01:43:15.510Z","etag":null,"topics":["ai","ai-agents","ampcode","claude","claude-code","clawdbot","codex","cursor","cursor-ide","droid","gemini","gemini-cli","gpt","moltbot","oh","oh-my-opencode","openclaw","opencode","opentui","token-usage"],"latest_commit_sha":null,"homepage":"https://tokscale.ai","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junhoyeo.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-01T13:15:27.000Z","updated_at":"2026-04-03T01:26:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/junhoyeo/tokscale","commit_stats":null,"previous_names":["junhoyeo/tokscale"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/junhoyeo/tokscale","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Ftokscale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Ftokscale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Ftokscale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Ftokscale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junhoyeo","download_url":"https://codeload.github.com/junhoyeo/tokscale/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Ftokscale/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31455474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","ampcode","claude","claude-code","clawdbot","codex","cursor","cursor-ide","droid","gemini","gemini-cli","gpt","moltbot","oh","oh-my-opencode","openclaw","opencode","opentui","token-usage"],"created_at":"2025-12-27T00:51:55.545Z","updated_at":"2026-04-06T01:05:39.341Z","avatar_url":"https://github.com/junhoyeo.png","language":"Rust","readme":"\u003c!-- \u003cCENTERED SECTION FOR GITHUB DISPLAY\u003e --\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Tokscale](./.github/assets/hero-v2.png)](https://tokscale.ai)\n\n\u003c/div\u003e\n\n\u003e 複数のプラットフォームでAIコーディングアシスタントのトークン使用量とコストを追跡するための高性能CLIツールと可視化ダッシュボード。\n\n\u003e [!TIP]\n\u003e\n\u003e **v2 リリース — ネイティブ Rust TUI、クロスプラットフォーム対応など。** \u003cbr /\u003e\n\u003e 毎週新しいオープンソースプロジェクトを公開しています。お見逃しなく。\n\u003e\n\u003e | [\u003cimg alt=\"GitHub Follow\" src=\"https://img.shields.io/github/followers/junhoyeo?style=flat-square\u0026logo=github\u0026labelColor=black\u0026color=24292f\" width=\"156px\" /\u003e](https://github.com/junhoyeo) | GitHubで[@junhoyeo](https://github.com/junhoyeo)をフォローして、他のプロジェクトもチェックしてください。AI、インフラ、その他様々な分野で開発しています。 |\n\u003e | :-----| :----- |\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub Release](https://img.shields.io/github/v/release/junhoyeo/tokscale?color=0073FF\u0026labelColor=black\u0026logo=github\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/releases)\n[![npm Downloads](https://img.shields.io/npm/dt/tokscale?color=0073FF\u0026labelColor=black\u0026style=flat-square)](https://www.npmjs.com/package/tokscale)\n[![GitHub Contributors](https://img.shields.io/github/contributors/junhoyeo/tokscale?color=0073FF\u0026labelColor=black\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/graphs/contributors)\n[![GitHub Forks](https://img.shields.io/github/forks/junhoyeo/tokscale?color=0073FF\u0026labelColor=black\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/network/members)\n[![GitHub Stars](https://img.shields.io/github/stars/junhoyeo/tokscale?color=0073FF\u0026labelColor=black\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/stargazers)\n[![GitHub Issues](https://img.shields.io/github/issues/junhoyeo/tokscale?color=0073FF\u0026labelColor=black\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/issues)\n[![License](https://img.shields.io/badge/license-MIT-white?labelColor=black\u0026style=flat-square)](https://github.com/junhoyeo/tokscale/blob/master/LICENSE)\n\n[🇺🇸 English](README.md) | [🇰🇷 한국어](README.ko.md) | [🇯🇵 日本語](README.ja.md) | [🇨🇳 简体中文](README.zh-cn.md)\n\n\u003c/div\u003e\n\n\u003c!-- \u003c/CENTERED SECTION FOR GITHUB DISPLAY\u003e --\u003e\n\n| Overview | Models |\n|:---:|:---:|\n| ![TUI Overview](.github/assets/tui-overview.png) | ![TUI Models](.github/assets/tui-models.png) | \n\n| Daily Summary | Stats |\n|:---:|:---:|\n| ![TUI Daily Summary](.github/assets/tui-daily.png) | ![TUI Stats](.github/assets/tui-stats.png) | \n\n| Frontend (3D Contributions Graph) | Wrapped 2025 |\n|:---:|:---:|\n| \u003ca href=\"https://tokscale.ai\"\u003e\u003cimg alt=\"Frontend (3D Contributions Graph)\" src=\".github/assets/frontend-contributions-graph.png\" width=\"700px\" /\u003e\u003c/a\u003e | \u003ca href=\"#wrapped-2025\"\u003e\u003cimg alt=\"Wrapped 2025\" src=\".github/assets/wrapped-2025-agents.png\" width=\"700px\" /\u003e\u003c/a\u003e |\n\n\u003e **[`bunx tokscale submit`](#ソーシャルプラットフォームコマンド)を実行して、使用量データをリーダーボードに送信し、公開プロフィールを作成しましょう！**\n\n## 概要\n\n**Tokscale**は以下のプラットフォームからのトークン消費を監視・分析するのに役立ちます：\n\n| ロゴ | クライアント | データ場所 | サポート |\n|------|----------|---------------|-----------|\n| \u003cimg width=\"48px\" src=\".github/assets/client-opencode.png\" alt=\"OpenCode\" /\u003e | [OpenCode](https://github.com/sst/opencode) | `~/.local/share/opencode/opencode.db` (1.2+) または `~/.local/share/opencode/storage/message/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-claude.jpg\" alt=\"Claude\" /\u003e | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | `~/.claude/projects/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-openclaw.jpg\" alt=\"OpenClaw\" /\u003e | [OpenClaw](https://openclaw.ai/) | `~/.openclaw/agents/` (+ レガシー: `.clawdbot`, `.moltbot`, `.moldbot`) | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-openai.jpg\" alt=\"Codex\" /\u003e | [Codex CLI](https://github.com/openai/codex) | `~/.codex/sessions/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-gemini.png\" alt=\"Gemini\" /\u003e | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `~/.gemini/tmp/*/chats/*.json` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-cursor.jpg\" alt=\"Cursor\" /\u003e | [Cursor IDE](https://cursor.com/) | `~/.config/tokscale/cursor-cache/`経由でAPI同期 | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-amp.png\" alt=\"Amp\" /\u003e | [Amp (AmpCode)](https://ampcode.com/) | `~/.local/share/amp/threads/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-droid.png\" alt=\"Droid\" /\u003e | [Droid (Factory Droid)](https://factory.ai/) | `~/.factory/sessions/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-pi.png\" alt=\"Pi\" /\u003e | [Pi](https://github.com/badlogic/pi-mono) | `~/.pi/agent/sessions/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-kimi.png\" alt=\"Kimi\" /\u003e | [Kimi CLI](https://github.com/MoonshotAI/kimi-cli) | `~/.kimi/sessions/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-qwen.png\" alt=\"Qwen\" /\u003e | [Qwen CLI](https://github.com/QwenLM/qwen-cli) | `~/.qwen/projects/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-roocode.png\" alt=\"Roo Code\" /\u003e | [Roo Code](https://github.com/RooCodeInc/Roo-Code) | `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/tasks/` (+ server: `~/.vscode-server/data/User/globalStorage/rooveterinaryinc.roo-cline/tasks/`) | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-kilocode.png\" alt=\"Kilo\" /\u003e | [Kilo](https://github.com/Kilo-Org/kilocode) | `~/.config/Code/User/globalStorage/kilocode.kilo-code/tasks/` (+ server: `~/.vscode-server/data/User/globalStorage/kilocode.kilo-code/tasks/`) | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-mux.png\" alt=\"Mux\" /\u003e | [Mux](https://github.com/coder/mux) | `~/.mux/sessions/` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-kilocode.png\" alt=\"Kilo CLI\" /\u003e | [Kilo CLI](https://github.com/nicepkg/kilo) | `~/.local/share/kilo/kilo.db` | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-crush.png\" alt=\"Crush\" /\u003e | [Crush](https://crush.ai/) | `$XDG_DATA_HOME/crush/projects.json`（プロジェクトレジストリ。フォールバック: `~/.local/share/crush/projects.json`） | ✅ 対応 |\n| \u003cimg width=\"48px\" src=\".github/assets/client-synthetic.png\" alt=\"Synthetic\" /\u003e | [Synthetic](https://synthetic.new/) | `hf:`モデルや`synthetic`プロバイダを検出して他ソースから再帰属（+ [Octofriend](https://github.com/synthetic-lab/octofriend): `~/.local/share/octofriend/sqlite.db`） | ✅ 対応 |\n\n[🚅 LiteLLMの価格データ](https://github.com/BerriAI/litellm)を使用してリアルタイム価格計算を提供し、階層型価格モデルとキャッシュトークン割引をサポートしています。\n\n### なぜ「Tokscale」？\n\nこのプロジェクトは **[カルダシェフ・スケール(Kardashev Scale)](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%80%E3%82%B7%E3%82%A7%E3%83%95%E3%83%BB%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB)** に触発されています。これは天体物理学者ニコライ・カルダシェフがエネルギー消費量に基づいて文明の技術的発展レベルを測定するために提案した方法です。タイプI文明は惑星上で利用可能なすべてのエネルギーを活用し、タイプIIは恒星の全出力を捕捉し、タイプIIIは銀河全体のエネルギーを支配します。\n\nAI支援開発の時代において、**トークンは新しいエネルギー**です。トークンは私たちの思考力を動かし、生産性を高め、創造的な成果を駆動します。カルダシェフ・スケールが宇宙規模でエネルギー消費を追跡するように、Tokscaleは AI増強開発のランクを上げながらトークン消費を測定します。カジュアルユーザーでも毎日数百万のトークンを消費する人でも、Tokscaleは惑星級開発者から銀河級コードアーキテクトへの旅を視覚化するのに役立ちます。\n\n## 目次\n\n- [概要](#概要)\n  - [なぜ「Tokscale」？](#なぜtokscale)\n- [機能](#機能)\n- [インストール](#インストール)\n  - [クイックスタート](#クイックスタート)\n  - [前提条件](#前提条件)\n  - [開発環境セットアップ](#開発環境セットアップ)\n  - [ネイティブモジュールのビルド](#ネイティブモジュールのビルド)\n- [使用方法](#使用方法)\n  - [基本コマンド](#基本コマンド)\n  - [TUI機能](#tui機能)\n  - [プラットフォーム別フィルタリング](#プラットフォーム別フィルタリング)\n  - [日付フィルタリング](#日付フィルタリング)\n  - [価格検索](#価格検索)\n  - [ソーシャルプラットフォームコマンド](#ソーシャルプラットフォームコマンド)\n  - [Cursor IDEコマンド](#cursor-ideコマンド)\n  - [出力例](#出力例--lightバージョン)\n  - [設定](#設定)\n  - [環境変数](#環境変数)\n- [フロントエンド可視化](#フロントエンド可視化)\n  - [機能](#機能-1)\n  - [フロントエンドの実行](#フロントエンドの実行)\n- [ソーシャルプラットフォーム](#ソーシャルプラットフォーム)\n  - [機能](#機能-2)\n  - [GitHubプロフィール埋め込みウィジェット](#githubプロフィール埋め込みウィジェット)\n  - [GitHubプロフィールバッジ](#githubプロフィールバッジ)\n  - [はじめに](#はじめに)\n  - [データ検証](#データ検証)\n- [Wrapped 2025](#wrapped-2025)\n  - [コマンド](#コマンド)\n  - [含まれる内容](#含まれる内容)\n- [開発](#開発)\n  - [前提条件](#前提条件-1)\n  - [実行方法](#実行方法)\n- [サポートプラットフォーム](#サポートプラットフォーム)\n  - [ネイティブモジュールターゲット](#ネイティブモジュールターゲット)\n  - [Windowsサポート](#windowsサポート)\n- [セッションデータ保持](#セッションデータ保持)\n- [データソース](#データソース)\n- [価格](#価格)\n- [コントリビューション](#コントリビューション)\n  - [開発ガイドライン](#開発ガイドライン)\n- [謝辞](#謝辞)\n- [ライセンス](#ライセンス)\n\n## 機能\n\n- **インタラクティブTUIモード** - Ratatuiによる美しいターミナルUI（デフォルトモード）\n  - 4つのインタラクティブビュー：概要、モデル、日別、統計\n  - キーボード＆マウスナビゲーション\n  - 9色テーマのGitHubスタイル貢献グラフ\n  - リアルタイムフィルタリングとソート\n  - ゼロフリッカーレンダリング\n- **マルチプラットフォームサポート** - OpenCode、Claude Code、Codex CLI、Cursor IDE、Gemini CLI、Amp、Droid、OpenClaw、Pi、Kimi CLI、Qwen CLI、Roo Code、Kilo、Mux、Kilo CLI、Crush、Synthetic全体の使用量追跡\n- **リアルタイム価格** - 1時間ディスクキャッシュ付きでLiteLLMから現在の価格を取得；OpenRouter自動フォールバックと新規モデル向けCursor価格サポート\n- **詳細な内訳** - 入力、出力、キャッシュ読み書き、推論トークン追跡\n- **ネイティブRustコア** - 10倍高速な処理のため、すべての解析と集計をRustで実行\n- **Web可視化** - 2Dと3Dビューのインタラクティブ貢献グラフ\n- **柔軟なフィルタリング** - プラットフォーム、日付範囲、年別フィルタリング\n- **JSONエクスポート** - 外部可視化ツール用のデータ生成\n- **ソーシャルプラットフォーム** - 使用量の共有、リーダーボード競争、公開プロフィール閲覧\n\n## インストール\n\n### クイックスタート\n\n```bash\n# npxで直接実行\nnpx tokscale@latest\n\n# またはbunxを使用\nbunx tokscale@latest\n\n# ライトモード（テーブルレンダリングのみ）\nnpx tokscale@latest --light\n```\n\nこれだけです！セットアップ不要で完全なインタラクティブTUI体験が得られます。\n\n\u003e **パッケージ構造**: `tokscale`は`@tokscale/cli`をインストールするエイリアスパッケージです（[`swc`](https://www.npmjs.com/package/swc)のように）。どちらもネイティブRustコア（`@tokscale/core`）を含む同じCLIをインストールします。\n\n\n### 前提条件\n\n- [Node.js](https://nodejs.org/) または [Bun](https://bun.sh/)\n- （オプション）ソースからネイティブモジュールをビルドするためのRustツールチェーン\n\n### 開発環境セットアップ\n\nローカル開発またはソースからビルドする場合：\n\n```bash\n# リポジトリをクローン\ngit clone https://github.com/junhoyeo/tokscale.git\ncd tokscale\n\n# Bunをインストール（まだインストールしていない場合）\ncurl -fsSL https://bun.sh/install | bash\n\n# 依存関係をインストール\nbun install\n\n# 開発モードでCLIを実行\nbun run cli\n```\n\n\u003e **注**: `bun run cli`はローカル開発用です。`bunx tokscale`でインストールすると、コマンドが直接実行されます。以下の使用法セクションはインストールされたバイナリコマンドを示しています。\n\n### ネイティブモジュールのビルド\n\nネイティブRustモジュールはCLI操作に**必須**です。並列ファイルスキャンとSIMD JSON解析により約10倍高速な処理を提供します：\n\n```bash\n# ネイティブコアをビルド（リポジトリルートから実行）\nbun run build:core\n```\n\n\u003e **注**: `bunx tokscale@latest`でインストールすると、ネイティブバイナリはビルド済みで含まれています。ソースからのビルドはローカル開発にのみ必要です。\n\n## 使用方法\n\n### 基本コマンド\n\n```bash\n# インタラクティブTUIを起動（デフォルト）\ntokscale\n\n# 特定のタブでTUIを起動\ntokscale models    # モデルタブ\ntokscale monthly   # 日別ビュー（日別内訳を表示）\n\n# レガシーCLIテーブル出力を使用\ntokscale --light\ntokscale models --light\n\n# 明示的にTUIを起動\ntokscale tui\n\n# 貢献グラフデータをJSONとしてエクスポート\ntokscale graph --output data.json\n\n# JSONとしてデータを出力（スクリプト/自動化用）\ntokscale --json                    # デフォルトのモデルビューをJSON形式で\ntokscale models --json             # モデル内訳をJSON形式で\ntokscale monthly --json            # 月別内訳をJSON形式で\ntokscale models --json \u003e report.json   # ファイルに保存\n```\n\n### TUI機能\n\nインタラクティブTUIモードは以下を提供します：\n\n- **4つのビュー**: 概要（チャート + トップモデル）、モデル、日別、統計（貢献グラフ）\n- **キーボードナビゲーション**:\n  - `1-4`または`←/→/Tab`: ビュー切り替え\n  - `↑/↓`: リスト操作\n  - `c/d/t`: コスト/日付/トークンでソート\n  - `s`: ソース選択ダイアログを開く\n  - `g`: グループ基準選択ダイアログを開く（モデル、クライアント+モデル、クライアント+プロバイダー+モデル）\n  - `p`: 9色テーマを循環\n  - `r`: データ更新\n  - `e`: JSONにエクスポート\n  - `q`: 終了\n- **マウスサポート**: タブ、ボタン、フィルターをクリック\n- **テーマ**: Green、Halloween、Teal、Blue、Pink、Purple、Orange、Monochrome、YlGnBu\n- **設定の永続化**: 設定は`~/.config/tokscale/settings.json`に保存（[設定](#設定)を参照）\n\n### グループ基準戦略\n\nTUIで`g`を押すか、`--light`/`--json`モードで`--group-by`を使用してモデル行の集計方法を制御します：\n\n| 戦略 | フラグ | TUIデフォルト | 効果 |\n|------|--------|-------------|------|\n| **モデル** | `--group-by model` | ✅ | モデルごとに1行 — すべてのクライアントとプロバイダーを統合 |\n| **クライアント + モデル** | `--group-by client,model` | | クライアント-モデルペアごとに1行 |\n| **クライアント + プロバイダー + モデル** | `--group-by client,provider,model` | | 最も詳細 — 統合なし |\n\n**`--group-by model`**（最も統合）\n\n| クライアント | プロバイダー | モデル | コスト |\n|------------|------------|--------|--------|\n| OpenCode, Claude, Amp | github-copilot, anthropic | claude-opus-4-5 | $2,424 |\n| OpenCode, Claude | anthropic, github-copilot | claude-sonnet-4-5 | $1,332 |\n\n**`--group-by client,model`**（CLIデフォルト）\n\n| クライアント | プロバイダー | モデル | コスト |\n|------------|------------|--------|--------|\n| OpenCode | github-copilot, anthropic | claude-opus-4-5 | $1,368 |\n| Claude | anthropic | claude-opus-4-5 | $970 |\n\n**`--group-by client,provider,model`**（最も詳細）\n\n| クライアント | プロバイダー | モデル | コスト |\n|------------|------------|--------|--------|\n| OpenCode | github-copilot | claude-opus-4-5 | $1,200 |\n| OpenCode | anthropic | claude-opus-4-5 | $168 |\n| Claude | anthropic | claude-opus-4-5 | $970 |\n\n### プラットフォーム別フィルタリング\n\n```bash\n# OpenCodeの使用量のみ表示\ntokscale --opencode\n\n# Claude Codeの使用量のみ表示\ntokscale --claude\n\n# Codex CLIの使用量のみ表示\ntokscale --codex\n\n# Gemini CLIの使用量のみ表示\ntokscale --gemini\n\n# Cursor IDEの使用量のみ表示（事前に`tokscale cursor login`が必要）\ntokscale --cursor\n\n# Kimi CLIの使用量のみ表示\ntokscale --kimi\n\n# Qwen CLIの使用量のみ表示\ntokscale --qwen\n\n# Ampの使用量のみ表示\ntokscale --amp\n\n# Droidの使用量のみ表示\ntokscale --droid\n\n# OpenClawの使用量のみ表示\ntokscale --openclaw\n\n# Piの使用量のみ表示\ntokscale --pi\n\n# Roo Codeの使用量のみ表示\ntokscale --roocode\n\n# Kiloの使用量のみ表示\ntokscale --kilocode\n\n# Muxの使用量のみ表示\ntokscale --mux\n\n# Kilo CLIの使用量のみ表示\ntokscale --kilo\n\n# Crushの使用量のみ表示\ntokscale --crush\n\n# Synthetic (synthetic.new) の使用量のみ表示\ntokscale --synthetic\n\n# フィルターを組み合わせ\ntokscale --opencode --claude\n```\n\n### 日付フィルタリング\n\n日付フィルターはレポートを生成するすべてのコマンドで機能します（`tokscale`、`tokscale models`、`tokscale monthly`、`tokscale graph`）：\n\n```bash\n# クイック日付ショートカット\ntokscale --today              # 今日のみ\ntokscale --week               # 過去7日間\ntokscale --month              # 今月\n\n# カスタム日付範囲（包括的、ローカルタイムゾーン）\ntokscale --since 2024-01-01 --until 2024-12-31\n\n# 年別フィルター\ntokscale --year 2024\n\n# 他のオプションと組み合わせ\ntokscale models --week --claude --json\ntokscale monthly --month --benchmark\n```\n\n\u003e **注**: 日付フィルターはローカルタイムゾーンを使用します。`--since`と`--until`は両方とも包括的です。\n\n### 価格検索\n\n任意のモデルのリアルタイム価格を検索します：\n\n```bash\n# モデル価格を検索\ntokscale pricing \"claude-3-5-sonnet-20241022\"\ntokscale pricing \"gpt-4o\"\ntokscale pricing \"grok-code\"\n\n# 特定のプロバイダーソースを強制\ntokscale pricing \"grok-code\" --provider openrouter\ntokscale pricing \"claude-3-5-sonnet\" --provider litellm\n```\n\n**検索戦略：**\n\n価格検索は多段階の解決戦略を使用します：\n\n1. **完全一致** - LiteLLM/OpenRouterデータベースでの直接検索\n2. **エイリアス解決** - 親しみやすい名前を解決（例：`big-pickle` → `glm-4.7`）\n3. **ティアサフィックス除去** - 品質ティアを削除（`gpt-5.2-xhigh` → `gpt-5.2`）\n4. **バージョン正規化** - バージョン形式を処理（`claude-3-5-sonnet` ↔ `claude-3.5-sonnet`）\n5. **プロバイダープレフィックスマッチング** - 一般的なプレフィックスを試行（`anthropic/`、`openai/`など）\n6. **Cursorモデル価格** - LiteLLM/OpenRouterにまだ存在しないモデルのハードコード価格（例：`gpt-5.3-codex`）\n7. **ファジーマッチング** - 部分モデル名の単語境界マッチング\n\n**プロバイダー優先順位：**\n\n複数のマッチがある場合、オリジナルモデル作成者がリセラーより優先されます：\n\n| 優先（オリジナル） | 非優先（リセラー） |\n|---------------------|-------------------------|\n| `xai/`（Grok） | `azure_ai/` |\n| `anthropic/`（Claude） | `bedrock/` |\n| `openai/`（GPT） | `vertex_ai/` |\n| `google/`（Gemini） | `together_ai/` |\n| `meta-llama/` | `fireworks_ai/` |\n\n例：`grok-code`は`azure_ai/grok-code-fast-1`（$3.50/$17.50）ではなく`xai/grok-code-fast-1`（$0.20/$1.50）にマッチします。\n\n### ソーシャルプラットフォームコマンド\n\n```bash\n# Tokscaleにログイン（GitHub認証用にブラウザを開く）\ntokscale login\n\n# ログイン中のユーザーを確認\ntokscale whoami\n\n# 使用量データをリーダーボードに送信\ntokscale submit\n\n# フィルター付きで送信\ntokscale submit --opencode --claude --since 2024-01-01\n\n# 送信内容をプレビュー（ドライラン）\ntokscale submit --dry-run\n\n# ログアウト\ntokscale logout\n```\n\n\u003cimg alt=\"CLI Submit\" src=\"./.github/assets/cli-submit.png\" /\u003e\n\n### Cursor IDEコマンド\n\nCursor IDEはセッショントークンによる別途認証が必要です（ソーシャルプラットフォームのログインとは異なる）：\n\n```bash\n# Cursorにログイン（ブラウザからセッショントークンが必要）\n# --name は任意で、後でアカウントを識別するためのラベルです\ntokscale cursor login --name work\n\n# Cursor認証ステータスとセッションの有効性を確認\ntokscale cursor status\n\n# 保存済みのCursorアカウント一覧\ntokscale cursor accounts\n\n# アクティブアカウントを切り替え（cursor-cache/usage.csvに同期されるアカウント）\ntokscale cursor switch work\n\n# 特定アカウントからログアウト（履歴は保持、集計から除外）\ntokscale cursor logout --name work\n\n# ログアウト + そのアカウントのキャッシュ削除\ntokscale cursor logout --name work --purge-cache\n\n# すべてのCursorアカウントからログアウト（履歴は保持、集計から除外）\ntokscale cursor logout --all\n\n# 全アカウントをログアウトしてキャッシュも削除\ntokscale cursor logout --all --purge-cache\n```\n\n**資格情報の保存**: Cursorアカウントは`~/.config/tokscale/cursor-credentials.json`に保存されます。使用量データは`~/.config/tokscale/cursor-cache/`にキャッシュされます（アクティブアカウントは`usage.csv`、追加アカウントは`usage.\u003caccount\u003e.csv`）。\n\nデフォルトでは、tokscale は **保存済みのすべての Cursor アカウントの使用量を合算**します（`cursor-cache/usage*.csv`）。後方互換のため、アクティブアカウントは `cursor-cache/usage.csv` に同期されます。\n\nログアウト時はキャッシュされた履歴を `cursor-cache/archive/` に移動して保持します（そのため集計には含まれません）。完全に削除したい場合は `--purge-cache` を使ってください。\n\n**Cursorセッショントークンの取得方法:**\n1. ブラウザで https://www.cursor.com/settings を開く\n2. 開発者ツールを開く（F12）\n3. **オプションA - Networkタブ**: ページで何らかのアクションを行い、`cursor.com/api/*`へのリクエストを見つけ、Request Headersの`Cookie`ヘッダーを確認し、`WorkosCursorSessionToken=`の後の値のみをコピー\n4. **オプションB - Applicationタブ**: Application → Cookies → `https://www.cursor.com`に移動し、`WorkosCursorSessionToken`クッキーを見つけてその値をコピー（クッキー名ではなく値）\n\n\u003e ⚠️ **セキュリティ警告**: セッショントークンはパスワードのように扱ってください。公開したり、バージョン管理にコミットしたりしないでください。トークンはCursorアカウントへの完全なアクセス権を付与します。\n\n### 出力例（`--light`バージョン）\n\n\u003cimg alt=\"CLI Light\" src=\"./.github/assets/cli-light.png\" /\u003e\n\n### 設定\n\nTokscaleは設定を`~/.config/tokscale/settings.json`に保存します：\n\n```json\n{\n  \"colorPalette\": \"blue\",\n  \"includeUnusedModels\": false\n}\n```\n\n| 設定 | タイプ | デフォルト | 説明 |\n|---------|------|---------|-------------|\n| `colorPalette` | string | `\"blue\"` | TUIカラーテーマ（green、halloween、teal、blue、pink、purple、orange、monochrome、ylgnbu） |\n| `includeUnusedModels` | boolean | `false` | レポートでゼロトークンのモデルを表示 |\n| `autoRefreshEnabled` | boolean | `false` | TUIの自動更新を有効化 |\n| `autoRefreshMs` | number | `60000` | 自動更新間隔（30000-3600000ms） |\n| `nativeTimeoutMs` | number | `300000` | ネイティブサブプロセス処理の最大時間（5000-3600000ms） |\n\n### 環境変数\n\n環境変数は設定ファイルの値をオーバーライドします。CI/CDや一時的な使用向け：\n\n| 変数 | デフォルト | 説明 |\n|----------|---------|-------------|\n| `TOKSCALE_NATIVE_TIMEOUT_MS` | `300000`（5分） | `nativeTimeoutMs` 設定をオーバーライド |\n\n```bash\n# 例：非常に大きなデータセット用にタイムアウトを増加\nTOKSCALE_NATIVE_TIMEOUT_MS=600000 tokscale graph --output data.json\n```\n\n\u003e **注**: 恒久的な変更には、`~/.config/tokscale/settings.json`で`nativeTimeoutMs`を設定することをお勧めします。環境変数は一時的なオーバーライドやCI/CDに適しています。\n\n### ヘッドレスモード\n\nTokscaleは、自動化、CI/CDパイプライン、バッチ処理のための**Codex CLIヘッドレス出力**からトークン使用量を集計できます。\n\n**ヘッドレスモードとは？**\n\nCodex CLIをJSON出力フラグ付きで実行すると（例：\\`codex exec --json\\`）、通常のセッションディレクトリに保存する代わりに、使用量データをstdoutに出力します。ヘッドレスモードを使用すると、この使用量をキャプチャして追跡できます。\n\n**保存場所:** \\`~/.config/tokscale/headless/\\`\n\nmacOSでは、\\`TOKSCALE_HEADLESS_DIR\\`が設定されていない場合、Tokscaleは\\`~/Library/Application Support/tokscale/headless/\\`もスキャンします。\n\nTokscaleは次のディレクトリ構造を自動的にスキャンします:\n\\`\\`\\`\n~/.config/tokscale/headless/\n└── codex/       # Codex CLI JSONL出力\n\\`\\`\\`\n\n**環境変数:** \\`TOKSCALE_HEADLESS_DIR\\`を設定してヘッドレスログディレクトリをカスタマイズできます:\n\\`\\`\\`bash\nexport TOKSCALE_HEADLESS_DIR=\"$HOME/my-custom-logs\"\n\\`\\`\\`\n\n**推奨（自動キャプチャ）:**\n\n| ツール | コマンド例 |\n|--------|-----------|\n| **Codex CLI** | \\`tokscale headless codex exec -m gpt-5 \"implement feature\"\\` |\n\n**手動リダイレクト（オプション）:**\n\n| ツール | コマンド例 |\n|--------|-----------|\n| **Codex CLI** | \\`codex exec --json \"implement feature\" \u003e ~/.config/tokscale/headless/codex/ci-run.jsonl\\` |\n\n**診断:**\n\n\\`\\`\\`bash\n# スキャン場所とヘッドレスカウントを表示\ntokscale sources\ntokscale sources --json\n\\`\\`\\`\n\n**CI/CD統合例:**\n\n\\`\\`\\`bash\n# GitHub Actionsワークフローで\n- name: Run AI automation\n  run: |\n    mkdir -p ~/.config/tokscale/headless/codex\n    codex exec --json \"review code changes\" \\\\\n      \u003e ~/.config/tokscale/headless/codex/pr-\\${{ github.event.pull_request.number }}.jsonl\n\n# 後で使用量を追跡\n- name: Report token usage\n  run: tokscale --json\n\\`\\`\\`\n\n\u003e **注**: ヘッドレスキャプチャはCodex CLIのみサポートしています。Codexを直接実行する場合は、上記のようにstdoutをヘッドレスディレクトリにリダイレクトしてください。\n\n## フロントエンド可視化\n\nフロントエンドはGitHubスタイルの貢献グラフ可視化を提供します：\n\n### 機能\n\n- **2Dビュー**: クラシックなGitHub貢献カレンダー\n- **3Dビュー**: トークン使用量に基づく高さのアイソメトリック3D貢献グラフ\n- **複数のカラーパレット**: GitHub、GitLab、Halloween、Winterなど\n- **3ウェイテーマトグル**: Light / Dark / System（OS設定に従う）\n- **GitHub Primerデザイン**: GitHubの公式カラーシステムを使用\n- **インタラクティブツールチップ**: ホバーで詳細な日別内訳を表示\n- **日別内訳パネル**: クリックでソース別、モデル別の詳細を確認\n- **年別フィルタリング**: 年間を移動\n- **ソースフィルタリング**: プラットフォーム別フィルター（OpenCode、Claude、Codex、Cursor、Gemini、Amp、Droid、OpenClaw、Pi、Kimi、Qwen、Roo Code、Kilo、Mux、Kilo CLI、Crush、Synthetic）\n- **統計パネル**: 総コスト、トークン、活動日数、連続記録\n- **FOUC防止**: Reactハイドレーション前にテーマを適用（フラッシュなし）\n\n### フロントエンドの実行\n\n```bash\ncd packages/frontend\nbun install\nbun run dev\n```\n\n[http://localhost:3000](http://localhost:3000)を開いてソーシャルプラットフォームにアクセスしてください。\n\n## ソーシャルプラットフォーム\n\nTokscaleには使用量データを共有し、他の開発者と競争できるソーシャルプラットフォームが含まれています。\n\n### 機能\n\n- **リーダーボード** - すべてのプラットフォームで最もトークンを使用している人を確認\n- **ユーザープロフィール** - 貢献グラフと統計を含む公開プロフィール\n- **期間フィルタリング** - 全期間、今月、今週の統計を表示\n- **GitHub統合** - GitHubアカウントでログイン\n- **ローカルビューアー** - 送信せずにプライベートにデータを表示\n\n### GitHubプロフィール埋め込みウィジェット\n\nGitHubプロフィールREADMEにTokscaleの公開統計を直接埋め込むことができます：\n\n```md\n[![Tokscale Stats](https://tokscale.ai/api/embed/\u003cusername\u003e/svg)](https://tokscale.ai/u/\u003cusername\u003e)\n```\n\n- `\u003cusername\u003e`をGitHubユーザー名に置き換えてください\n- オプションのクエリパラメータ：\n  - `theme=light` ライトテーマを使用\n  - `sort=tokens`（デフォルト）または`sort=cost` ランキング基準を制御\n  - `compact=1` コンパクトレイアウト + コンパクトな数値表記（例：`1.2M`、`$3.4K`）\n- 例：\n  - `https://tokscale.ai/api/embed/\u003cusername\u003e/svg?theme=light\u0026sort=cost\u0026compact=1`\n\n### GitHubプロフィールバッジ\n\nshields.ioスタイルのよりコンパクトなバッジも使用できます：\n\n```md\n![Tokscale Tokens](https://tokscale.ai/api/badge/\u003cusername\u003e/svg)\n```\n\n- `\u003cusername\u003e`をGitHubユーザー名に置き換えてください\n- オプションのクエリパラメータ：\n  - `metric=tokens`（デフォルト）、`metric=cost`、または`metric=rank`\n  - `style=flat`（デフォルト）または`style=flat-square`\n  - `sort=tokens`（デフォルト）または`sort=cost` ランキング基準を制御\n  - `compact=1` コンパクトな数値表記を使用（例：`1.2M`、`$3.4K`）\n  - `label=\u003cテキスト\u003e` 左側のラベルをカスタマイズ\n  - `color=\u003chex\u003e` 右側の背景色をカスタマイズ（例：`color=ff5733`）\n- 例：\n  - `https://tokscale.ai/api/badge/\u003cusername\u003e/svg?metric=cost\u0026compact=1`\n  - `https://tokscale.ai/api/badge/\u003cusername\u003e/svg?metric=rank\u0026sort=cost\u0026style=flat-square`\n\n### はじめに\n\n1. **ログイン** - `tokscale login`を実行してGitHubで認証\n2. **送信** - `tokscale submit`を実行して使用量データをアップロード\n3. **表示** - Webプラットフォームを訪問してプロフィールとリーダーボードを確認\n\n### データ検証\n\n送信されたデータはレベル1検証を受けます：\n- 数学的整合性（合計が一致、負の値なし）\n- 未来の日付なし\n- 必須フィールドの存在\n- 重複検出\n\n## Wrapped 2025\n\n![Wrapped 2025](.github/assets/hero-wrapped-2025.png)\n\nSpotify Wrappedにインスパイアされた、AIコーディングアシスタントの年間使用量をまとめた美しいレビュー画像を生成します。\n\n| `bunx tokscale@latest wrapped` | `bunx tokscale@latest wrapped --clients` | `bunx tokscale@latest wrapped --agents --disable-pinned` |\n|:---:|:---:|:---:|\n| ![Wrapped 2025 (Agents + Pin Sisyphus)](.github/assets/wrapped-2025-agents.png) | ![Wrapped 2025 (Clients)](.github/assets/wrapped-2025-clients.png) | ![Wrapped 2025 (Agents + Disable Pinned)](.github/assets/wrapped-2025-agents-disable-pinned.png) |\n\n### コマンド\n\n```bash\n# 現在の年のWrapped画像を生成\ntokscale wrapped\n\n# 特定の年のWrapped画像を生成\ntokscale wrapped --year 2025\n```\n\n### 含まれる内容\n\n生成される画像には以下が含まれます：\n\n- **総トークン数** - 年間のトークン消費量\n- **トップモデル** - コスト順にランク付けされた最も使用したAIモデル3つ\n- **トップクライアント** - 最も使用したプラットフォーム3つ（OpenCode、Claude Code、Cursorなど）\n- **メッセージ数** - AIとのインタラクション総数\n- **活動日数** - 少なくとも1回のAIインタラクションがあった日数\n- **コスト** - LiteLLM価格に基づく推定総コスト\n- **連続記録** - 最長の連続活動日数\n- **貢献グラフ** - 年間活動のビジュアルヒートマップ\n\n生成されたPNGはソーシャルメディア共有に最適化されています。コミュニティとあなたのコーディングの旅を共有しましょう！\n\n## 開発\n\n\u003e **クイックセットアップ**: すぐに始めたい場合は、上記のインストールセクションの[開発環境セットアップ](#開発環境セットアップ)を参照してください。\n\n### 前提条件\n\n```bash\n# Bun（必須）\nbun --version\n\n# Rust（ネイティブモジュール用）\nrustc --version\ncargo --version\n```\n\n### 実行方法\n\n[開発環境セットアップ](#開発環境セットアップ)に従った後：\n\n```bash\n# ネイティブモジュールをビルド（オプションだが推奨）\nbun run build:core\n\n# 開発モードで実行（TUIを起動）\ncd packages/cli \u0026\u0026 bun src/cli.ts\n\n# またはレガシーCLIモードを使用\ncd packages/cli \u0026\u0026 bun src/cli.ts --light\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e高度な開発\u003c/summary\u003e\n\n### プロジェクトスクリプト\n\n| スクリプト | 説明 |\n|--------|-------------|\n| `bun run cli` | 開発モードでCLIを実行（BunでTUI） |\n| `bun run build:core` | ネイティブRustモジュールをビルド（リリース） |\n| `bun run build:cli` | CLIのTypeScriptをdist/にビルド |\n| `bun run build` | coreとCLI両方をビルド |\n| `bun run dev:frontend` | フロントエンド開発サーバーを実行 |\n\n**パッケージ固有スクリプト**（パッケージディレクトリ内から）：\n- `packages/cli`: `bun run dev`、`bun run tui`\n- `packages/core`: `bun run build:debug`、`bun run test`、`bun run bench`\n\n**注**: このプロジェクトは開発時に**Bun**をパッケージマネージャーとして使用しています。\n\n### テスト\n\n```bash\n# ネイティブモジュールをテスト（Rust）\ncd packages/core\nbun run test:rust      # Cargoテスト\nbun run test           # Node.js統合テスト\nbun run test:all       # 両方\n```\n\n### ネイティブモジュール開発\n\n```bash\ncd packages/core\n\n# デバッグモードでビルド（コンパイルが速い）\nbun run build:debug\n\n# リリースモードでビルド（最適化済み）\nbun run build\n\n# Rustベンチマークを実行\nbun run bench\n```\n\n### グラフコマンドオプション\n\n```bash\n# グラフデータをファイルにエクスポート\ntokscale graph --output usage-data.json\n\n# 日付フィルタリング（すべてのショートカットが使用可能）\ntokscale graph --today\ntokscale graph --week\ntokscale graph --since 2024-01-01 --until 2024-12-31\ntokscale graph --year 2024\n\n# プラットフォーム別フィルター\ntokscale graph --opencode --claude\n\n# 処理時間ベンチマークを表示\ntokscale graph --output data.json --benchmark\n```\n\n### ベンチマークフラグ\n\nパフォーマンス分析用の処理時間を表示：\n\n```bash\ntokscale --benchmark           # デフォルトビューと共に処理時間を表示\ntokscale models --benchmark    # モデルレポートをベンチマーク\ntokscale monthly --benchmark   # 月別レポートをベンチマーク\ntokscale graph --benchmark     # グラフ生成をベンチマーク\n```\n\n### フロントエンド用データの生成\n\n```bash\n# 可視化用データをエクスポート\ntokscale graph --output packages/frontend/public/my-data.json\n```\n\n### パフォーマンス\n\nネイティブRustモジュールは大幅なパフォーマンス向上を提供します：\n\n| 操作 | TypeScript | Rustネイティブ | 高速化 |\n|-----------|------------|-------------|---------|\n| ファイル探索 | ~500ms | ~50ms | **10倍** |\n| JSON解析 | ~800ms | ~100ms | **8倍** |\n| 集計 | ~200ms | ~25ms | **8倍** |\n| **合計** | **~1.5秒** | **~175ms** | **~8.5倍** |\n\n*約1000セッションファイル、100kメッセージのベンチマーク*\n\n#### メモリ最適化\n\nネイティブモジュールは以下を通じて約45%のメモリ削減も提供します：\n\n- ストリーミングJSON解析（ファイル全体のバッファリングなし）\n- ゼロコピー文字列処理\n- マップリデュースによる効率的な並列集計\n\n#### ベンチマークの実行\n\n```bash\n# 合成データを生成\ncd packages/benchmarks \u0026\u0026 bun run generate\n\n# Rustベンチマークを実行\ncd packages/core \u0026\u0026 bun run bench\n```\n\n\u003c/details\u003e\n\n## サポートプラットフォーム\n\n### ネイティブモジュールターゲット\n\n| プラットフォーム | アーキテクチャ | ステータス |\n|----------|--------------|--------|\n| macOS | x86_64 | ✅ サポート |\n| macOS | aarch64（Apple Silicon） | ✅ サポート |\n| Linux | x86_64（glibc） | ✅ サポート |\n| Linux | aarch64（glibc） | ✅ サポート |\n| Linux | x86_64（musl） | ✅ サポート |\n| Linux | aarch64（musl） | ✅ サポート |\n| Windows | x86_64 | ✅ サポート |\n| Windows | aarch64 | ✅ サポート |\n\n### Windowsサポート\n\nTokscaleはWindowsを完全にサポートしています。TUIとCLIはmacOS/Linuxと同様に動作します。\n\n**Windowsでのインストール：**\n```powershell\n# Bunのインストール（PowerShell）\npowershell -c \"irm bun.sh/install.ps1 | iex\"\n\n# tokscaleの実行\nbunx tokscale@latest\n```\n\n#### Windowsでのデータ保存場所\n\nAIコーディングツールはクロスプラットフォームの場所にセッションデータを保存します。ほとんどのツールはすべてのプラットフォームで同じ相対パスを使用します：\n\n| ツール | Unixパス | Windowsパス | ソース |\n|------|-----------|--------------|--------|\n| OpenCode | `~/.local/share/opencode/` | `%USERPROFILE%\\.local\\share\\opencode\\` | クロスプラットフォームの一貫性のため[`xdg-basedir`](https://github.com/sindresorhus/xdg-basedir)を使用（[ソース](https://github.com/sst/opencode/blob/main/packages/opencode/src/global/index.ts)） |\n| Claude Code | `~/.claude/` | `%USERPROFILE%\\.claude\\` | すべてのプラットフォームで同じパス |\n| OpenClaw | `~/.openclaw/` (+ レガシー: `.clawdbot`, `.moltbot`, `.moldbot`) | `%USERPROFILE%\\.openclaw\\` (+ レガシーパス) | すべてのプラットフォームで同じパス |\n| Codex CLI | `~/.codex/` | `%USERPROFILE%\\.codex\\` | `CODEX_HOME`環境変数で設定可能（[ソース](https://github.com/openai/codex)） |\n| Gemini CLI | `~/.gemini/` | `%USERPROFILE%\\.gemini\\` | すべてのプラットフォームで同じパス |\n| Amp | `~/.local/share/amp/` | `%USERPROFILE%\\.local\\share\\amp\\` | OpenCodeと同様に`xdg-basedir`を使用 |\n| Cursor | API同期 | API同期 | APIでデータを取得、`%USERPROFILE%\\.config\\tokscale\\cursor-cache\\`にキャッシュ |\n| Droid | `~/.factory/` | `%USERPROFILE%\\.factory\\` | すべてのプラットフォームで同じパス |\n| Pi | `~/.pi/` | `%USERPROFILE%\\.pi\\` | すべてのプラットフォームで同じパス |\n| Kimi CLI | `~/.kimi/` | `%USERPROFILE%\\.kimi\\` | すべてのプラットフォームで同じパス |\n| Qwen CLI | `~/.qwen/` | `%USERPROFILE%\\.qwen\\` | すべてのプラットフォームで同じパス |\n| Roo Code | `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/tasks/` | `%USERPROFILE%\\.config\\Code\\User\\globalStorage\\rooveterinaryinc.roo-cline\\tasks\\` | VS Code globalStorageタスクログ |\n| Kilo | `~/.config/Code/User/globalStorage/kilocode.kilo-code/tasks/` | `%USERPROFILE%\\.config\\Code\\User\\globalStorage\\kilocode.kilo-code\\tasks\\` | VS Code globalStorageタスクログ |\n| Mux | `~/.mux/sessions/` | `%USERPROFILE%\\.mux\\sessions\\` | 全プラットフォームで同じパス |\n| Kilo CLI | `~/.local/share/kilo/` | `%USERPROFILE%\\.local\\share\\kilo\\` | OpenCodeと同様に`xdg-basedir`を使用 |\n| Crush | `$XDG_DATA_HOME/crush/`（フォールバック: `~/.local/share/crush/`） | `%USERPROFILE%\\.local\\share\\crush\\`（設定されていれば `%XDG_DATA_HOME%\\crush\\`） | フォールバック付きでXDGデータディレクトリを使用 |\n| Synthetic | 他ソースから再帰属 | 他ソースから再帰属 | `hf:`モデル + `synthetic`プロバイダを検出 |\n\n\u003e **注**: Windowsでは`~`は`%USERPROFILE%`に展開されます（例：`C:\\Users\\ユーザー名`）。これらのツールは`%APPDATA%`のようなWindowsネイティブパスではなく、クロスプラットフォームの一貫性のためにUnixスタイルのパス（`.local/share`など）を意図的に使用しています。\n\n#### Windows固有の設定\n\nTokscaleは以下の場所に設定を保存します：\n- **設定**: `%USERPROFILE%\\.config\\tokscale\\settings.json`\n- **キャッシュ**: `%USERPROFILE%\\.cache\\tokscale\\`\n- **Cursor認証情報**: `%USERPROFILE%\\.config\\tokscale\\cursor-credentials.json`\n\n## セッションデータ保持\n\nデフォルトでは、一部のAIコーディングアシスタントは古いセッションファイルを自動的に削除します。正確な追跡のために使用履歴を保持するには、クリーンアップ期間を無効化または延長してください。\n\n| プラットフォーム | デフォルト | 設定ファイル | 無効化設定 | ソース |\n|----------|---------|-------------|-------------------|--------|\n| Claude Code | **⚠️ 30日** | `~/.claude/settings.json` | `\"cleanupPeriodDays\": 9999999999` | [ドキュメント](https://docs.anthropic.com/en/docs/claude-code/settings) |\n| Gemini CLI | 無効 | `~/.gemini/settings.json` | `\"general.sessionRetention.enabled\": false` | [ドキュメント](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/session-management.md) |\n| Codex CLI | 無効 | N/A | クリーンアップ機能なし | [#6015](https://github.com/openai/codex/issues/6015) |\n| OpenCode | 無効 | N/A | クリーンアップ機能なし | [#4980](https://github.com/sst/opencode/issues/4980) |\n\n### Claude Code\n\n**デフォルト**: 30日のクリーンアップ期間\n\n`~/.claude/settings.json`に追加：\n```json\n{\n  \"cleanupPeriodDays\": 9999999999\n}\n```\n\n\u003e 非常に大きな値（例：`9999999999`日 ≈ 2700万年）を設定すると、事実上クリーンアップが無効になります。\n\n### Gemini CLI\n\n**デフォルト**: クリーンアップ無効（セッションは永久に保持）\n\nクリーンアップを有効にしてから無効にしたい場合は、`~/.gemini/settings.json`で削除するか`enabled: false`に設定：\n```json\n{\n  \"general\": {\n    \"sessionRetention\": {\n      \"enabled\": false\n    }\n  }\n}\n```\n\nまたは非常に長い保持期間を設定：\n```json\n{\n  \"general\": {\n    \"sessionRetention\": {\n      \"enabled\": true,\n      \"maxAge\": \"9999999d\"\n    }\n  }\n}\n```\n\n### Codex CLI\n\n**デフォルト**: 自動クリーンアップなし（セッションは永久に保持）\n\nCodex CLIには組み込みのセッションクリーンアップがありません。`~/.codex/sessions/`のセッションは無期限に保持されます。\n\n\u003e **注**: これに対する機能リクエストがあります：[#6015](https://github.com/openai/codex/issues/6015)\n\n### OpenCode\n\n**デフォルト**: 自動クリーンアップなし（セッションは永久に保持）\n\nOpenCodeには組み込みのセッションクリーンアップがありません。`~/.local/share/opencode/storage/`のセッションは無期限に保持されます。\n\n\u003e **注**: [#4980](https://github.com/sst/opencode/issues/4980)を参照\n\n---\n\n## データソース\n\n### OpenCode\n\n場所: `~/.local/share/opencode/opencode.db` (v1.2+) または `storage/message/{sessionId}/*.json` (レガシー)\n\nOpenCode 1.2+はセッションをSQLiteに保存します。TokscaleはまずSQLiteから読み取り、古いバージョンの場合はレガシーJSONファイルにフォールバックします。\n\n各メッセージの内容：\n```json\n{\n  \"id\": \"msg_xxx\",\n  \"role\": \"assistant\",\n  \"modelID\": \"claude-sonnet-4-20250514\",\n  \"providerID\": \"anthropic\",\n  \"tokens\": {\n    \"input\": 1234,\n    \"output\": 567,\n    \"reasoning\": 0,\n    \"cache\": { \"read\": 890, \"write\": 123 }\n  },\n  \"time\": { \"created\": 1699999999999 }\n}\n```\n\n### Claude Code\n\n場所: `~/.claude/projects/{projectPath}/*.jsonl`\n\nアシスタントメッセージの使用量データを含むJSONL形式：\n```json\n{\"type\": \"assistant\", \"message\": {\"model\": \"claude-sonnet-4-20250514\", \"usage\": {\"input_tokens\": 1234, \"output_tokens\": 567, \"cache_read_input_tokens\": 890}}, \"timestamp\": \"2024-01-01T00:00:00Z\"}\n```\n\n### Codex CLI\n\n場所: `~/.codex/sessions/*.jsonl`\n\n`token_count`イベントを含むイベントベース形式：\n```json\n{\"type\": \"event_msg\", \"payload\": {\"type\": \"token_count\", \"info\": {\"last_token_usage\": {\"input_tokens\": 1234, \"output_tokens\": 567}}}}\n```\n\n### Gemini CLI\n\n場所: `~/.gemini/tmp/{projectHash}/chats/*.json`\n\nメッセージ配列を含むセッションファイル:\n```json\n{\n  \"sessionId\": \"xxx\",\n  \"messages\": [\n    {\"type\": \"gemini\", \"model\": \"gemini-2.5-pro\", \"tokens\": {\"input\": 1234, \"output\": 567, \"cached\": 890, \"thoughts\": 123}}\n  ]\n}\n```\n\n### Cursor IDE\n\n場所: `~/.config/tokscale/cursor-cache/`（Cursor API経由で同期）\n\nCursorデータはセッショントークンでCursor APIから取得され、ローカルにキャッシュされます。認証するには`tokscale cursor login`を実行してください。セットアップ手順は[Cursor IDEコマンド](#cursor-ideコマンド)を参照。\n\n### OpenClaw\n\n場所: `~/.openclaw/agents/*/sessions/sessions.json`（レガシーパスもスキャン: `~/.clawdbot/`, `~/.moltbot/`, `~/.moldbot/`）\n\nJSONLセッションファイルを指すインデックスファイル:\n```json\n{\n  \"agent:main:main\": {\n    \"sessionId\": \"uuid\",\n    \"sessionFile\": \"/path/to/session.jsonl\"\n  }\n}\n```\n\nmodel_changeイベントとアシスタントメッセージを含むセッションJSONL形式:\n```json\n{\"type\":\"model_change\",\"provider\":\"openai-codex\",\"modelId\":\"gpt-5.2\"}\n{\"type\":\"message\",\"message\":{\"role\":\"assistant\",\"usage\":{\"input\":1660,\"output\":55,\"cacheRead\":108928,\"cost\":{\"total\":0.02}},\"timestamp\":1769753935279}}\n```\n\n### Pi\n\n場所: `~/.pi/agent/sessions/\u003cencoded-cwd\u003e/*.jsonl`\n\nセッションヘッダーとメッセージエントリを含むJSONL形式：\n```json\n{\"type\":\"session\",\"id\":\"pi_ses_001\",\"timestamp\":\"2026-01-01T00:00:00.000Z\",\"cwd\":\"/tmp\"}\n{\"type\":\"message\",\"id\":\"msg_001\",\"timestamp\":\"2026-01-01T00:00:01.000Z\",\"message\":{\"role\":\"assistant\",\"model\":\"claude-3-5-sonnet\",\"provider\":\"anthropic\",\"usage\":{\"input\":100,\"output\":50,\"cacheRead\":10,\"cacheWrite\":5,\"totalTokens\":165}}}\n```\n\n### Kimi CLI\n\n場所: `~/.kimi/sessions/{GROUP_ID}/{SESSION_UUID}/wire.jsonl`\n\nStatusUpdate メッセージを含む wire.jsonl 形式：\n```json\n{\"type\": \"metadata\", \"protocol_version\": \"1.3\"}\n{\"timestamp\": 1770983426.420942, \"message\": {\"type\": \"StatusUpdate\", \"payload\": {\"token_usage\": {\"input_other\": 1562, \"output\": 2463, \"input_cache_read\": 0, \"input_cache_creation\": 0}, \"message_id\": \"chatcmpl-xxx\"}}}\n```\n\n### Qwen CLI\n\n場所: `~/.qwen/projects/{PROJECT_PATH}/chats/{CHAT_ID}.jsonl`\n\n形式: JSONL — 1行に1つのJSONオブジェクト、各オブジェクトに`type`、`model`、`timestamp`、`sessionId`、`usageMetadata`フィールドを含む。\n\nトークンフィールド（`usageMetadata`から）:\n- `promptTokenCount` → 入力トークン\n- `candidatesTokenCount` → 出力トークン\n- `thoughtsTokenCount` → 推論/思考トークン\n- `cachedContentTokenCount` → キャッシュされた入力トークン\n\n### Roo Code\n\n場所：\n- ローカル：`~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/tasks/{TASK_ID}/ui_messages.json`\n- サーバー（ベストエフォート）：`~/.vscode-server/data/User/globalStorage/rooveterinaryinc.roo-cline/tasks/{TASK_ID}/ui_messages.json`\n\n各タスクディレクトリには、モデル/エージェントメタデータに使用される`\u003cenvironment_details\u003e`ブロックを含む`api_conversation_history.json`も含まれる場合があります。\n\n`ui_messages.json`はUIイベントの配列です。Tokscaleは以下のみをカウントします：\n- `type == \"say\"`\n- `say == \"api_req_started\"`\n\n`text`フィールドはトークン/コストメタデータを含むJSONです：\n```json\n{\n  \"type\": \"say\",\n  \"say\": \"api_req_started\",\n  \"ts\": \"2026-02-18T12:00:00Z\",\n  \"text\": \"{\\\"cost\\\":0.12,\\\"tokensIn\\\":100,\\\"tokensOut\\\":50,\\\"cacheReads\\\":20,\\\"cacheWrites\\\":5,\\\"apiProtocol\\\":\\\"anthropic\\\"}\"\n}\n```\n\n### Kilo\n\n場所：\n- ローカル：`~/.config/Code/User/globalStorage/kilocode.kilo-code/tasks/{TASK_ID}/ui_messages.json`\n- サーバー（ベストエフォート）：`~/.vscode-server/data/User/globalStorage/kilocode.kilo-code/tasks/{TASK_ID}/ui_messages.json`\n\nKiloはRoo Codeと同じタスクログ形式を使用します。Tokscaleは同じルールを適用します：\n- `ui_messages.json`から`say/api_req_started`イベントのみをカウント\n- `text` JSONから`tokensIn`、`tokensOut`、`cacheReads`、`cacheWrites`、`cost`、`apiProtocol`を解析\n- 利用可能な場合、隣接する`api_conversation_history.json`からモデル/エージェントメタデータを補完\n\n### Mux\n\n場所:\n `~/.mux/sessions/{WORKSPACE_ID}/session-usage.json`\n\nMuxはセッションごとの累積トークン使用量を`session-usage.json`ファイルに保存します。各ファイルにはモデルごとのトークン内訳を含む`byModel`マップがあります:\n `input`、`cached`（キャッシュ読み取り）、`cacheCreate`（キャッシュ書き込み）、`output`、`reasoning`\n モデル名は`provider:model`形式を使用します（例: `anthropic:claude-opus-4-6`）— tokscaleはモデル識別のためにプロバイダプレフィクスを除去します\n サブエージェントの使用量はMuxによって自動的に親セッションにロールアップされるため、二重計上はありません\n\n### Kilo CLI\n\n場所: `~/.local/share/kilo/kilo.db`\n\nKilo CLIはOpenCodeと同様のSQLiteデータベースにセッションデータを保存します。各メッセージ行には、モデルおよびプロバイダー属性とともにメッセージごとのトークン内訳（入力、出力、キャッシュ読み取り/書き込み、推論）が含まれます。\n\n### Crush\n\n場所: `$XDG_DATA_HOME/crush/projects.json`を通じて発見されるプロジェクトごとのSQLiteデータベース（フォールバック: `~/.local/share/crush/projects.json`）\n\nCrushはプロジェクトごとのデータベース（`crush.db`）に使用量を保存します。Crushは信頼できるメッセージごとまたはモデルごとのトークン集計を提供しないため、Tokscaleはルートセッションのセッションレベルのコスト合計のみをインポートします。レコードは`model=session-total`として表示され、トークン内訳はゼロです。\n\n### Synthetic (synthetic.new)\n\nSynthetic は他ソースのメッセージを後処理で再帰属します。`hf:`プレフィックスのモデル ID または `synthetic` / `glhf` / `octofriend` プロバイダを検出した場合、ソースを `synthetic` として扱います。\n\nまた `~/.local/share/octofriend/sqlite.db` を検出し、トークン情報を持つレコードを取り込みます。\n\n## 価格\n\nTokscaleは[LiteLLMの価格データベース](https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json)からリアルタイム価格を取得します。\n\n**ダイナミックフォールバック**: LiteLLMにまだ存在しないモデル（例：最近リリースされたモデル）は、[OpenRouterのエンドポイントAPI](https://openrouter.ai/docs/api/api-reference/endpoints/list-endpoints)から自動的に価格を取得します。\n\n**Cursorモデル価格**: LiteLLMとOpenRouterの両方にまだ存在しない最新モデル（例：`gpt-5.3-codex`）は、[Cursorモデルドキュメント](https://cursor.com/en-US/docs/models)から取得したハードコード価格を使用します。これらのオーバーライドはすべてのアップストリームソースの後、ファジーマッチングの前にチェックされるため、実際のアップストリーム価格が利用可能になると自動的に優先されます。\n\n**キャッシュ**: 価格データは1時間TTLでディスクにキャッシュされ、高速な起動を確保します：\n- LiteLLMキャッシュ: `~/.cache/tokscale/pricing-litellm.json`\n- OpenRouterキャッシュ: `~/.cache/tokscale/pricing-openrouter.json`（サポート対象プロバイダーのモデル作成者価格をキャッシュ）\n\n価格には以下が含まれます：\n- 入力トークン\n- 出力トークン\n- キャッシュ読み取りトークン（割引）\n- キャッシュ書き込みトークン\n- 推論トークン（o1などのモデル用）\n- 階層型価格（200kトークン以上）\n\n## コントリビューション\n\nコントリビューションを歓迎します！以下の手順に従ってください：\n\n1. リポジトリをフォーク\n2. 機能ブランチを作成（`git checkout -b feature/amazing-feature`）\n3. 変更を加える\n4. テストを実行（`cd packages/core \u0026\u0026 bun run test:all`）\n5. 変更をコミット（`git commit -m 'Add amazing feature'`）\n6. ブランチにプッシュ（`git push origin feature/amazing-feature`）\n7. プルリクエストを開く\n\n### 開発ガイドライン\n\n- 既存のコードスタイルに従う\n- 新機能にはテストを追加\n- 必要に応じてドキュメントを更新\n- コミットは集中的かつアトミックに\n\n## 謝辞\n\n- インスピレーションを与えてくれた[ccusage](https://github.com/ryoppippi/ccusage)、[viberank](https://github.com/sculptdotfun/viberank)、[Isometric Contributions](https://github.com/jasonlong/isometric-contributions)\n- ターミナルUIフレームワーク[Ratatui](https://github.com/ratatui/ratatui)\n- リアクティブレンダリングの[Solid.js](https://www.solidjs.com/)\n- 価格データの[LiteLLM](https://github.com/BerriAI/litellm)\n- Rust/Node.jsバインディングの[napi-rs](https://napi.rs/)\n- 2Dグラフ参照の[github-contributions-canvas](https://github.com/sallar/github-contributions-canvas)\n\n## ライセンス\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/junhoyeo\"\u003e\n    \u003cimg src=\".github/assets/labtocat-on-spaceship.png\" width=\"540\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eMIT © \u003ca href=\"https://github.com/junhoyeo\"\u003eJunho Yeo\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\nこのプロジェクトが興味深いと感じたら、**スターを付けてください ⭐** または[GitHubでフォロー](https://github.com/junhoyeo)して旅に参加してください（すでに1.1k以上が乗船中）。私は24時間コーディングし、定期的に驚くべきものを出荷しています—あなたのサポートは無駄になりません。\n","funding_links":[],"categories":["Community Tools","Uncategorized","Agent Infrastructure","Developer Tools","Entwicklertools und Observability","Rust"],"sub_categories":["Uncategorized","Usage Analytics \u0026 Cost Tracking"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhoyeo%2Ftokscale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunhoyeo%2Ftokscale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhoyeo%2Ftokscale/lists"}