Displays real-time input/output token estimates and generation throughput rates in the DSH Web session status bar, continuously updating during streaming output responses.
ⓘ This plugin is a sub-package of the CAPTAIN1275/dsh-ui-web monorepo — stars and activity count the whole repository.
- Language
- TypeScript
- License
- Apache-2.0
- Branch
- main
Install
$ dsh plugin --profile web add @captain1275/dsh-live-statsRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin CAPTAIN1275/dsh-ui-web/packages/dsh-live-stats for me: review the repository at https://github.com/CAPTAIN1275/dsh-ui-web first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
One-Line Description
Adds real-time input/output token estimation and generation throughput display to DSH Web's session status bar. When responding to streaming output, numbers update continuously with each chunk, and are replaced with precise values once the provider actually returns usage.
Core Features
- Real-time input token estimation: Calculates input volume before streaming response starts based on character count plus block/message framework overhead, including system prompts and tool schemas
- Real-time output token estimation: Accumulates from
text-delta/reasoning-delta/tool-call-deltastreaming chunks, refreshing the reading with each new chunk - Auto-replacement with precise values: When provider returns
usagechunk or final message, immediately replaces the heuristic estimation from earlier steps with real values - Displays generation throughput TPS: Renders throughput rate in the session status bar as
TPS 31.4 tok/s, calculated as active step's output tokens / wall-clock time - Persistent rate display: Once any step measures throughput, new steps use the last measured value before outputting their first chunk, or when encountering steps without rates; status bar doesn't flicker or disappear
- Settings panel: Browser-side mounts a settings card in the Web UI plugin group, visually editing three estimation parameters and master switch, effective immediately without restart
Technical Implementation
- Language: TypeScript (peer dependency React 18.2, dsh.client.platform="web")
- Key Dependencies:
@deepseek-ai/dsh-session-projection(projection host),schemastery(settings schema validation),zod(projection reading boundary schema),@deepseek-ai/dsh-token-meter(reading type source) - Architecture Pattern: Cordis bidirectional plugin. Host half registers a replayable session projection named
liveTokenUsage(ctx.sessionProjections.register), freezing estimation parameters into a folded closure; client half mounts TPS row inconversation.composer.dockslot, settings card inweb-ui.plugin.itemslot - Entry Files: Host side
src/index.ts(exportsinject/Config/apply), clientsrc/client/index.ts; pure function core insrc/estimator.ts(character density estimation) andsrc/projection.ts(event folding + TPS derivation)
Use Cases
When running long tasks on DSH Web, seeing only the final token count feels uncertain. This plugin turns "how fast is the model generating" and "approximately how many tokens is this response" into real-time readings on the status bar. Ideal for heavy users who need immediate throughput and usage observation, and for engineers sensitive to KV cache costs to compare actual rates across different models/parameters.
Prerequisites & Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH Web | 0.1.0-rc.6 | All peerDependencies pinned to ^0.1.0-rc.6 (including dsh-client-runtime, dsh-client-connection, dsh-client-ui-conversation, dsh-client-ui-settings, dsh-client-ui-slots, dsh-invariants, dsh-llm, dsh-session, dsh-session-projection, dsh-settings, dsh-token-meter) |
| React | 18.2.0 | Both client card and TPS row use React components |
| Platform | Cross-platform (macOS / Windows / Linux) | Runtime is OS-agnostic, but dsh.client.platform="web", only renders in Web host |
| Native Modules | None | All logic completed in TypeScript and React, no node-gyp dependencies |
Installation
dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/dsh-live-stats
After installation, restart dsh web and the TPS group appears in the session status bar; it can also be added as a regular overlay line to ~/.dsh/config.yaml (saves and hot-reloads):
- insert:
- id: live-stats
name: '@captain1275/dsh-live-stats'
config:
charsPerToken: 4
blockOverhead: 4
roleOverhead: 4
Configuration Options
| Configuration | Type | Description | Default |
|---|---|---|---|
enabled | Boolean | Master switch, disables token estimation and throughput tracking, but still registers projection skeleton | true |
charsPerToken | Number | Approximate number of text characters per token; Chinese has higher density, can adjust to around 1.5 | 4 |
blockOverhead | Non-negative integer | Fixed framework token count for each content block (text/tool call/tool result) | 4 |
roleOverhead | Non-negative integer | Fixed framework token count per message or assistant response | 4 |
The three estimation parameters only take effect when charsPerToken is a positive finite number and blockOverhead and roleOverhead are non-negative integers; otherwise an error is thrown during the loading phase. After modifying from the settings panel, the host discards the old projection and refolds the session log with the new parameters, no restart of dsh web required.
FAQ
Q: Do I need to restart DSH Web after installation?
A: Yes. Projection registration happens in the host process; after installing or uninstalling, you must restart dsh web for it to take effect; browser hard refresh cannot replace host restart.
Q: Will it change the actual token count sent to the model?
A: No. The plugin doesn't inject prompt segments, doesn't register tools, doesn't emit session events, has zero impact on token count for each request to the model, and won't affect KV cache stability of system prompts.
Q: What should I fill in for charsPerToken?
A: The default 4 characters/token is sufficient for pure ASCII, but underestimates for Chinese. You can lower it to around 1.5 in the settings panel or ~/.dsh/config.yaml, then observe the deviation between ~ estimation and the provider's actual returned values to fine-tune.
Q: What does the ~ before the numbers in the status bar mean?
A: It indicates it's a heuristic estimation based on character count. Once the provider returns a usage chunk or final message with usage during streaming, the estimation is replaced in-place with the precise value; mid-process retries replace estimations from that step onward, aborted rounds remove their unsettled estimations.
Q: Do I need to clean up data after uninstalling?
A: The plugin itself doesn't persist any data; after uninstalling, the next time dsh web starts, it won't register the liveTokenUsage projection, and the session status bar automatically returns to the style without TPS group, no manual cache or data clearing required.
Q: Does it support TUI or desktop?
A: Not currently supported. The TPS row only renders in DSH Web's session status bar (composer dock); TUI, desktop, and mobile have no equivalent display locations.
Difficulty Level
Beginner — Install with one command, restart DSH Web to see results, all three estimation parameters have default values; only need to adjust when significant estimation deviation is observed.
Known Issues & Limitations
- Heuristic estimation: Input/output totals marked with
~are only character count approximations before provider usage arrives; precise cache hit statistics always come from DSH's built-in token usage projection, this plugin won't replace that authoritative path - Web only:
TPSgroup renders in DSH Web's composer dock; TUI, desktop, and mobile have no equivalent display locations - Single active step: Each session only tracks one active step, status bar displays that session's view; concurrent sessions each have independent projections that don't interfere
- Density assumption:
charsPerToken=4overestimates for pure ASCII, underestimates for Chinese; if estimation deviation is significant, this value can be fine-tuned according to deployment - Doesn't affect model experience: The plugin has zero intrusion into model's prompts/tools/event stream, only consumes persisted event stream for read-only rendering
基于 zhu1090093659/dsh-web-ui(Apache-2.0)开发的 DeepSeek Harness(DSH)Web UI 插件套件。全套 22 个包已发布到 npm(
@captain1275/*)。
DSH Web UI 全家桶为 DeepSeek Harness 的 Web 界面提供一系列插件与皮肤:极光毛玻璃皮肤、任务看板、 SSH 运维、右侧文件/变更面板、Git 图谱、移动端远程控制、DeepSeek 娘看板娘(养成系)、实时令牌统计, 以及皮肤中心。所有插件既可独立安装,也可通过聚合包一次装齐。
极光 Aurora 皮肤效果(沉浸光感 / 深色 / 浅色)



特性
极光(Aurora)皮肤(支持动态背景)
- 毛玻璃输入框:高斯模糊(backdrop-filter 30px)+ 半透明玻璃底 + 细边框 + 内高光
- 自定义背景:URL / 本地图片 / 动图(GIF/WebP)/ 视频(mp4/webm) / 透明度 / 模糊调节,
深浅两套极光渐变;视频背景支持静音开关、本地文件持久化(存
~/.dsh/skin-aurora-media/,刷新不丢) - 仿Claude Code推理等级滑块:点击模型菜单的「推理等级」弹出 Effort 滑块面板——无极拖动、松手吸附、 WebGL 火焰跟随、OFF/MAX 刻度、Low/Medium/High/Ultracode 状态

- 用户消息气泡毛玻璃:与输入框统一的玻璃质感
DeepSeek 看板娘(养成系)
- 图片资源(社区同人资源,codex-pet-DeepSeek-girl)
- 养成系统:亲密度 4 级成长(幼鲸 / 伙伴 / 挚友 / 深海羁绊)、升级庆祝气泡、进度条、 Token 零食经济、使用时长成长(每 30 分钟 +1)
- 待机随机气泡:空闲时随机说话(live2d 风格文案)
- 摸头 / 喂食 / 改名 / 拖动,召唤按钮(live2d 同款贴边滑出)
Skill 人格设定
- 设置「人格设定」:开关启用/禁用常驻人格,编辑技能名、描述与人格正文
- 一键生效:保存后写入用户级技能
~/.dsh/skills/catgirl-rp/SKILL.md,DSH 技能系统实时加载, 所有新对话自动以该人格回应(含语气、动作表达、互动规则) - 内置猫娘人格:默认提供「小咪」猫娘人格(常驻生效、好感度系统、模式切换指令),可自由改写
- 可临时退出:对话中说「退出角色扮演模式」即切回普通助手,说「进入角色扮演模式」恢复

用量看板
- 彩色统计卡:累计 token、调用次数、缓存命中、估算费用(按 DeepSeek 官方定价)
- 近 14 天趋势:每日 token 消耗柱状图
- 模型分布:各 provider/model 用量环形图 + 图例
- 会话排行:Top 20 会话(标题 / 模型 / 调用数 / token / 费用)
- 自动记录:对话时自动采集 token 用量(会话快照替换语义,不双计),存
~/.dsh/usage.json - 侧边栏入口:彩色柱状按钮打开全屏看板
功能插件
| 插件 | 功能 |
|---|---|
| dsh-task-board | 侧边栏任务看板:多列 kanban、真实执行(驱动 agent 会话)、定时执行(cron) |
| dsh-ssh | SSH 运维:主机管理、远程执行、SFTP 传输、隧道、集群并发、Web 终端 |
| dsh-aionui-panel | 右侧「预览 / 文件 / 变更」面板:文件树、多格式预览、git 操作、文件拖拽 |
| dsh-git-graph | 会话头部 git 分支选择器 + 提交图 |
| dsh-live-stats | 实时 token 估算与生成速度 |
| dsh-full-stats | 完整统计行:覆盖官方统计(不省略)+ 运行状态指示 + 自定义状态文本(含替换官方 Deep diving...) |
| dsh-usage-dashboard | 用量看板:彩色统计卡 / 近 14 天趋势 / 模型分布 / 会话排行 / 费用估算 |
| dsh-web-ui-settings | 设置页「Web UI 插件」配置组 + 「人格设定」+「关于」版权页 |
| dsh-web-ui-all | 聚合包:一键安装全部插件 |
皮肤中心
10 套皮肤(ths / xp / blue-fantasy / dragon-heir / minecraft / miku / trading / whale-song / aurora / skin-center),支持皮肤启用互斥管理与一键切换。
其余皮肤(ths / xp / blue-fantasy / dragon-heir / minecraft / miku / trading / whale-song) 为上游 dsh-web-ui 自带皮肤。
安装
方式一:npm(推荐,已发布)
# 在 DSH profile 目录(~/.dsh/profiles/web)安装聚合包
npm install @captain1275/[email protected]
然后在 profile 的 package.json 里把 @captain1275/dsh-web-ui-all 加入
dsh.profile.bundles:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@captain1275/dsh-client-ui-skin-aurora",
"@captain1275/dsh-full-stats",
"@captain1275/dsh-web-ui-all"
]
}
}
}
重启 DSH 即生效。
方式二:从源码(开发)
git clone <your-repo-url> dsh-web-ui
cd dsh-web-ui
pnpm install
pnpm -r build
# 把本地包链接进 profile(junction)
node scripts/link-profile.mjs
开发
- 构建:
pnpm -r build(或pnpm --filter <package> build) - 新增皮肤:参考
packages/skins/aurora(skin.json+src/client+cordis.patch.yml), 然后用node scripts/skin-center-bundles重新生成注册表 - 聚合包 patch:编辑
packages/dsh-web-ui-all/aggregate.yml后node scripts/aggregate.mjs - 皮肤资产同步:
node packages/dsh-skins/build.mjs
目录结构
packages/
├─ dsh-task-board / dsh-ssh / dsh-aionui-panel / dsh-git-graph
├─ dsh-pet / dsh-live-stats / dsh-full-stats
├─ dsh-web-ui-settings / dsh-web-ui-all / dsh-skins
└─ skins/ # 皮肤源码(aurora、miku、ths 等)
scripts/ # 构建 / 注册表 / 链接工具
shared/ # 共享构建预设(tsdown.client.ts)
版权与许可
- 主体代码:zhu1090093659/dsh-web-ui,Apache-2.0
- 增强优化:@captain1275
- DeepSeek 娘精灵图:xpy12367/codex-pet-DeepSeek-girl, 社区同人资源,版权归原作者
- 人形图标:Font Awesome 6.7.2,CC BY 4.0
- 样式参考:live2d-widget(GPL-3.0,仅参考视觉风格,未搬用代码)
- 商标:DeepSeek 及其相关标识均为 DeepSeek 官方资产;本插件为社区开发者独立维护的非官方同人项目, 不代表 DeepSeek 官方立场。
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/CAPTAIN1275/dsh-ui-web/packages/dsh-live-stats)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.