跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    ahmadmcer

    Token Usage

    opencode-token-usage·v1.0.8·可观测与分析

    OpenCode plugin that tracks per-session token usage (input, output, reasoning, cache, cost) in the sidebar

    GitHub 星标

    2

    近 30 天 +1

    月装机量

    323

    近 7 天 45

    综合评分

    39.8

    生态多维模型

    最近提交

    1 个月前

    2026-08-29

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-token-usage@1.0.8"]
    }

    OpenCode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    An OpenCode plugin that tracks per-session token usage and displays it in the sidebar.

    Features

    • Tracks input, output, reasoning, cache read, and cache write tokens per session
    • Calculates cache hit rate as a percentage
    • Displays total cost per session
    • Updates in real-time as you chat (refreshes every 2 seconds)
    • Persists data across sessions in ~/.opencode/token-usage.json
    • Prevents duplicate accounting when an assistant message is updated more than once
    • Safely supports concurrent OpenCode processes and bounded data retention
    • Shows clean values when no session is active

    Installation

    1. Register the server plugin

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-token-usage"]
    }
    

    2. Register the TUI plugin

    OpenCode v1.18.25 and newer installs npm plugins automatically. Add the same package name to tui.json; do not use the opencode-token-usage/tui subpath or copy a file into your local plugin directory.

    {
      "$schema": "https://opencode.ai/tui.json",
      "plugin": ["opencode-token-usage"]
    }
    

    To pin a release, use an npm version spec such as "opencode-token-usage@1.0.5" in both plugin arrays.

    The package publishes compiled JavaScript entrypoints for OpenCode's npm loader. TypeScript sources are kept in the repository for development only.

    3. Restart OpenCode

    Quit and restart OpenCode after changing either configuration file. The Token Usage section will appear in the right sidebar of any active session.

    How it works

    Server plugin

    Listens for message.updated events on completed assistant messages and accumulates token data per session ID into ~/.opencode/token-usage.json. Message IDs are used to ignore duplicate updates. Writes use a lock, a process-specific temporary file, and an atomic rename so concurrent processes do not overwrite each other's data. The store retains the 1,000 most recently updated sessions and 5,000 recent message IDs.

    The server accepts both the current session-total format and the legacy entries format, so existing data is migrated when it is read.

    TUI plugin

    Polls the current route every 2 seconds and reads the shared data file, mutating the sidebar's text nodes imperatively -- SolidJS signal reactivity does not re-render inside this slot system, so an accessor-function child only paints once. Parsed data is cached until the file modification time changes.

    Data file

    Stored at ~/.opencode/token-usage.json:

    {
      "sessions": {
        "ses_xxx": {
          "input": 8475,
          "output": 26,
          "reasoning": 0,
          "cacheRead": 8192,
          "cacheWrite": 0,
          "cost": 0,
          "updatedAt": 1750000000000
        }
      },
      "recentKeys": ["ses_xxx:msg_xxx"]
    }
    

    Older files without updatedAt or recentKeys remain supported. recentKeys is internal deduplication metadata.

    License

    MIT

    同类生态推荐