mcpField
T
token-dashboard

token-dashboard

github.com/alexgreenshエージェントワークフロー2.8k446 回インストール今日更新
リポジトリ

token-dashboard について

token-dashboard は、セッションのコスト確認と Token Optimizer のダッシュボード表示を行うスキルです。セッション記録からコストを読み取り、コンテキスト使用量、品質、履歴、スキルを生成したダッシュボードに表示します。

主な機能

  1. 01ユーザーの表現によるセッションコスト検索
  2. 02コストの算出基準と部分結果の表示
  3. 03セッションデータの収集
  4. 04使用状況ダッシュボードの生成と表示

活用シーン

  1. 01指定したセッションの推定コスト確認
  2. 02コンテキスト使用量と履歴の視覚的な確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alexgreensh/token-optimizer --skill token-dashboard

インストール後、Claude Code で/token-dashboardを入力して読み込まれたか確認します。

詳細

トークンオプティマイザーダッシュボード

ユーザー自身の言葉からセッションのコストを算出し、コンテキスト使用量、品質、セッション履歴、スキルを最新の状態で表示するダッシュボードを開きます。ダッシュボードを開くのは、ユーザーが表示を求めたときだけです。コストについて質問されても、ブラウザーは開きません。

手順

  1. ランタイムと measure.py のパスを解決する:
RUNTIME="${TOKEN_OPTIMIZER_RUNTIME:-}"
if [ -z "$RUNTIME" ]; then
  if [ -n "$CLAUDE_PLUGIN_ROOT" ] || [ -n "$CLAUDE_PLUGIN_DATA" ]; then
    RUNTIME="claude"
  elif [ -n "$OPENCODE" ] || [ -n "$OPENCODE_BIN" ] || [ -n "$OPENCODE_CONFIG_DIR" ] || [ -n "$OPENCODE_CONFIG" ]; then
    RUNTIME="opencode"
  elif [ -n "$CODEX_HOME" ]; then
    RUNTIME="codex"
  # Explicit config-dir env of another harness: same tier as Python's
  # detect_runtime() (above CLAUDECODE, which every Claude Code child inherits).
  elif [ -n "$HERMES_HOME" ]; then
    RUNTIME="hermes"
  elif [ -n "$COPILOT_HOME" ] || [ -n "$TOKEN_OPTIMIZER_COPILOT_HOME" ]; then
    RUNTIME="copilot"
  elif [ -n "$TOKEN_OPTIMIZER_CURSOR_HOME" ]; then
    RUNTIME="cursor"
  elif [ -n "$TOKEN_OPTIMIZER_ANTIGRAVITY_HOME" ]; then
    RUNTIME="antigravity"
  elif [ -n "$GROK_HOME" ] || [ -n "$TOKEN_OPTIMIZER_GROK_HOME" ]; then
    RUNTIME="grok"
  elif [ -n "$CLAUDECODE" ] || [ -n "$CLAUDE_CODE_ENTRYPOINT" ] || [ -n "$CLAUDE_CODE_SESSION_ID" ]; then
    RUNTIME="claude"
  elif [ -d "$HOME/.config/opencode" ] && [ ! -d "$HOME/.codex" ]; then
    RUNTIME="opencode"
  elif [ -d "$HOME/.codex" ]; then
    RUNTIME="codex"
  else
    RUNTIME="claude"
  fi
fi

# Resolve measure.py to the NEWEST installed copy across channels so a stale
# plugin-cache copy never shadows a fresh install. find -L follows the
# install.sh symlink under ~/.claude/skills; cd -P resolves it before reading each
# copy's plugin.json for its version. find (not bare globs) never errors under zsh.
MEASURE_PY=""; _best_ver=""
while IFS= read -r _cand; do
  [ -f "$_cand" ] || continue
  _root="$(cd -P -- "$(dirname -- "$_cand")/../../.." 2>/dev/null && pwd)"
  _ver="$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$_root/.claude-plugin/plugin.json" 2>/dev/null | head -1)"
  [ -n "$_ver" ] || _ver="0.0.0"
  if [ -z "$_best_ver" ] || [ "$(printf '%s\n%s\n' "$_ver" "$_best_ver" | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n | tail -n1)" = "$_ver" ]; then
    _best_ver="$_ver"; MEASURE_PY="$_cand"
  fi
done <<EOF
$(find -L "$HOME/.claude/skills" "$HOME/.claude/plugins/cache" "$HOME/.claude/token-optimizer" "$HOME/.codex/skills" "$HOME/.codex/plugins/cache" "$HOME/.config/opencode/plugins/cache" "$HOME/.config/opencode/plugins" -type f -name measure.py -path '*token-optimizer*/scripts/measure.py' 2>/dev/null)
EOF
if [ -z "$MEASURE_PY" ]; then echo "[Error] measure.py not found. Is Token Optimizer installed?"; exit 1; fi
export TOKEN_OPTIMIZER_RUNTIME="$RUNTIME"
  1. コストに関する質問(「昨日の Garden セッションのコストはいくらでしたか?」「TR sync セッションの料金はいくらですか?」「セッション のコストは?」)の場合は、手順 3~4 ではなく、以下を実行します。
python3 "$MEASURE_PY" session-cost <the user's words> --json
  • ユーザー自身の言葉(garden yesterday、tr sync、ID またはその先頭 8 文字)を渡します。名前はトピック、スラッグ、プロジェクトと大文字・小文字を区別せずに照合し、すべてが一致する必要があります。today、yesterday、YYYY-MM-DD は日付を指定します。「今週」の場合は --days N を追加します(デフォルトは 30)。さらに多くの結果を一覧表示するには --limit N を追加します。
  • sessions[] の値を使って回答します。日付、トピック、cost_usd.total、サブエージェントが実行された場合はメインスレッドとサブエージェントの内訳、日付が指定されていてセッションが複数日にまたがる場合は cost_usd.on_date、設定されている場合は partial_reason を示します。一致する項目が複数ある場合は、total_cost_usd を示して一覧表示します。どれかによって回答が変わる場合に限り、どの項目かを尋ねます。
  • basis を 1 行で伝えます。API の通常価格に基づくため、サブスクリプションの場合、これは請求額ではなく、その作業にかかったはずの費用です。
  • 一致する項目がない場合はその旨を伝え、closest[] を表示し、note(セッション終了時に収集されます)を伝えます。
  • trends.db を照会したり、自分でトークン料金を計算したりしてはいけません。これはダッシュボード独自の数値であり、書き込みを行わずに読み取ります。
  1. 収集して開く:
# TOKEN_OPTIMIZER_INTERACTIVE=1 marks this as a user-initiated open, so the 20s
# hook budget does not cut off a heavy rebuild on a large history. The user is
# waiting for this open, so it runs unbounded.
TOKEN_OPTIMIZER_INTERACTIVE=1 python3 "$MEASURE_PY" collect --quiet && \
  TOKEN_OPTIMIZER_INTERACTIVE=1 python3 "$MEASURE_PY" dashboard

これにより、最新のセッションデータを trends データベースに収集し、ダッシュボードの HTML を再生成して、デフォルトのブラウザーで開きます。

  1. ユーザーに伝える:ダッシュボードが開いたことを伝えます。URL に言及する前に、デーモンの状態を確認します。
    • デーモンの状態を確認します:python3 "$MEASURE_PY" daemon-status 2>/dev/null
    • DAEMON_RUNNING の場合:まず URL: http://localhost:24842/token-optimizer(ブックマーク可能、自動更新)を示し、その後にファイルへのフォールバックを伝えます。
    • DAEMON_NOT_RUNNING の場合:localhost:24842 の URL は表示しません。ダッシュボードはファイルとして開いたことを伝え、ブックマーク可能な URL が必要な場合は python3 $MEASURE_PY setup-daemon を提案します(macOS と Windows)。
    • ファイルパス:絶対にハードコードしないでください。インストール環境によって異なります。手順 3 の出力にある Dashboard: の行を示します。
    • DAEMON_NOT_RUNNING の Codex の場合:Claude デーモンが必須であるかのように伝えてはいけません。生成されたファイルはそのまま使え、balanced hooks がインストールされていれば Stop フックによって更新されます。

Claude Opus 5.5 と Sonnet 5.5、および Codex 上の GPT-5.6 向けに作成され、動作確認済みです。

コメント