4
87
近 7 天 15
30.0
生态多维模型
4 个月前
2026-03-29
快速安装与配置
opencode.json写入当前项目的 opencode.json,只对这个仓库生效。
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-hud@0.1.6"]
}写入 ~/.config/opencode/opencode.json,对所有项目生效。
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-hud@0.1.6"]
}若你要在本地改造这个插件,先装到项目里再从本地路径引用。
shell
pnpm add -D opencode-hudopencode 启动时会通过内嵌运行时自动加载 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:
message.updated(user) → Record request start timemessage.updated(assistant) → Store message with tokens infomessage.part.updated→ Track first token time, count tokenssession.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:
requestStartTimeset on user message to capture full TTFTstreamingStartTimeset on first assistant token (lazy init)- Token count includes reasoning tokens for accurate TPS
- Uses
performance.now()for high-precision timing