mcpField
T
token-dashboard

token-dashboard

github.com/alexgreenshAgent 工作流2.8k446 次安装今天更新
代码仓库

关于 token-dashboard

token-dashboard 是用于查询会话成本并打开 Token Optimizer 仪表板的 Skill。它从会话记录读取成本数据,并在生成的仪表板中呈现上下文用量、质量、历史记录和技能。

主要功能

  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确认已加载。

详细介绍

Token Optimizer Dashboard

根据用户自己的说法,回答一次会话的费用,并打开一个最新的仪表板,显示上下文用量、质量、会话历史记录和技能。只有当用户要求查看仪表板时才打开它;询问费用绝不会打开浏览器。

Instructions

  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 个字符)。名称会与主题、slug 和项目匹配,且不区分大小写;所有字段都必须匹配;today、yesterday 和 YYYY-MM-DD 用于指定日期。询问“本周”时添加 --days N(默认值为 30),要列出更多结果时添加 --limit N。
  • 根据 sessions[] 回答:日期、主题、cost_usd.total、运行过子 Agent 时主线程与子 Agent 的费用拆分、指定日期且会话跨越多天时的 cost_usd.on_date,以及设置了 partial_reason 时的该字段。若有多个匹配项:给出 total_cost_usd 并列出这些会话;只有答案会因此改变时才询问用户要看哪一个。
  • 用一行说明 basis:基于 API 标价,因此对于订阅用户而言,这是这项工作本应产生的费用,并非账单金额。
  • 没有匹配项:说明未找到,展示 closest[],并转述 note(会话结束后才会收集)。
  • 绝不要查询 trends.db,也不要自行计算 token 费用:这是仪表板自身的数字,只读,不写入。
  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

此步骤会将最新会话数据收集到趋势数据库中,重新生成仪表板 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 守护进程;生成的文件可以正常使用,并且安装了平衡型钩子后,Stop 钩子会刷新该文件。

已针对 Claude Opus 5.5、Sonnet 5.5 和 Codex 上的 GPT-5.6 编写并验证。

评论

支持 Markdown