跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    中文English
    Alaye-Dong
    opencode-hud

    OpenCode plugin that displays TPS, TTFT, and token metrics at conversation end.

    GitHub 星标

    4

    月装机量

    87

    近 7 天 15

    综合评分SCORE

    30.0

    生态多维模型

    最近提交

    4 个月前

    2026-03-29

    快速安装与配置

    opencode.json

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

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-hud@0.1.6"]
    }

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

    A plugin for OpenCode that displays token streaming metrics at the end of each conversation.

    [!Warning] This plugin is still in developping. Maybe not available. 🐛

    Metrics Displayed

    Metric Description
    ⚡ Avg TPS Average tokens per second (includes reasoning tokens)
    TTFT Time To First Token — latency from request to first response token
    Total tokens Cumulative token count from API (output + reasoning)
    Elapsed time Wall-clock time since the first token

    Example toast:

    ⚡ 42.5 t/s  TTFT 312ms  [639 tok / 15.0s]
    

    Installation

    From npm

    Add the plugin to your .opencode/opencode.json:

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["opencode-hud@latest"]
    }
    

    Local Development

    This plugin auto-loads when you run opencode from this directory, because it lives in .opencode/plugins/.

    Configuration

    Create a config file at ~/.config/opencode/opencode-hud.json:

    {
      "enableLogging": true,
      "logFilePath": ".opencode/hud-debug.log"
    }
    
    Option Type Default Description
    enableLogging boolean false Enable debug logging
    logFilePath string .opencode/hud-debug.log Path to log file

    Development

    # Install dependencies (Bun required)
    bun install
    
    # Run tests
    bun test
    
    # Type-check
    bun run typecheck
    
    # Build
    bun run build
    

    Project Structure

    opencode-hud/
    ├── .opencode/
    │   ├── opencode.json          # OpenCode project config
    │   └── plugins/
    │       └── hud.ts             # Plugin entry (auto-loaded by OpenCode)
    ├── src/
    │   ├── index.ts               # Plugin main entry — event handlers
    │   ├── config.ts              # Configuration management
    │   ├── logger.ts              # Configurable logging
    │   ├── types.ts               # TypeScript interfaces
    │   ├── metrics.ts             # Token estimation, duration formatting
    │   └── display.ts             # Toast formatting and emission
    ├── tests/
    │   ├── metrics.test.ts        # Unit tests
    │   └── integration.test.ts    # Event flow tests
    ├── dist/                      # Build output
    ├── package.json
    └── tsconfig.json
    

    Architecture

    The plugin listens to OpenCode events and displays metrics when a conversation ends (session.idle).

    Event Flow:

    1. message.updated (user) → Record request start time
    2. message.updated (assistant) → Store message with tokens info
    3. message.part.updated → Track first token time, count tokens
    4. session.idle → Calculate metrics and show toast

    Token Counting:

    • Primary: Uses API-provided tokens.output + tokens.reasoning
    • Fallback: Estimates from text length (length / 3)

    Key Design Decisions:

    • requestStartTime set on user message to capture full TTFT
    • streamingStartTime set on first assistant token (lazy init)
    • Token count includes reasoning tokens for accurate TPS
    • Uses performance.now() for high-precision timing