Back to home

joyiok

dsh-token-usage

DSH plugin: authoritative token usage stats across sessions, with a Web sidebar panel and token_usage tool

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-token-usage

DeepSeek Harness(DSH)Token 用量统计插件。

  • Web 侧边栏:底部新增 Tokens 按钮,点击查看全部累计 / 今日 / 每个会话的 input / output / cache-read token(数据通过 Typert RPC 从宿主聚合)。
  • Agent 工具:注册 token_usage 工具,headless / Web 会话里直接问 「我一共用了多少 token」即可得到权威统计。
  • 权威计数:读取 $DSH_HOME/sessions/**/session.jsonl(.zstd),对每个 (turn, step) 只计一次(优先 assistant/messagedata.usage), 不做字符估算;内置多帧 zstd 解码,无需外部 zstd 二进制。

安装

cd /home/joy/Documents
dsh plugin --profile web add /home/joy/Documents/token-usage-dsh-plugin
dsh plugin --profile headless add /home/joy/Documents/token-usage-dsh-plugin

安装完成后重启 dsh web(客户端扫描与 Typert 清单按包缓存):

dsh web

验证:dsh --profile web --dump-config 应出现:

# == dsh-token-usage
- id: token-usage
  name: dsh-token-usage

使用

Web 侧边栏

打开任意会话 → 左下角点击 Tokens 图标 → 面板展示:

  • 全部累计 / 今日:输入、输出、输入+输出、缓存读取、含缓存总计、LLM steps;
  • 会话明细表:标题、模型、输入 / 输出 / 缓存读取、最近活动时间。

Agent 工具(headless / Web 均可)

用户:我一共用了多少 token?
Agent:调用 token_usage(scope: "all") 后回答

工具参数:

参数说明
scopeall(默认,全部会话)/ today(今日)/ current(当前会话)
includeSessions是否包含逐会话明细;默认 current/today 为 true,all 为 false

配置

可在 profile 的 cordis.patch.yml 覆盖(注意:覆盖整行 config):

- id: token-usage
  config:
    cacheTtlMs: 8000        # 聚合缓存毫秒数
    maxToolSessions: 20     # token_usage 工具最多返回的会话数

禁用插件:

- id: token-usage
  disabled: true

结构

src/index.js               # 宿主半体:Typert RPC + token_usage 工具
src/usage.js               # 零依赖聚合核心(多帧 zstd + 会话日志扫描)
lib/client.js              # 浏览器半体:侧边栏按钮 + 统计面板
lib/typert.host.js         # Typert host 清单(token-usage/aggregate)
lib/typert.remote-client.js# Typert remote 描述符(参考)
cordis.patch.yml           # dsh bundle 补丁:插入 token-usage 行
scripts/build.mjs          # esbuild 构建脚本(node scripts/build.mjs)

说明

  • totalTokens = inputTokens + outputTokenstotalWithCache 额外计入 cacheReadTokens + cacheWriteTokens
  • 会话日志正在写入时,内置解码失败会自动回退到 zstd CLI(PATH 可用时)。