Bundle
dsh-statusbar-config
Template-driven conversation statistics row for DeepSeek Harness (${variable} placeholders, shadows the shipped stats line)
- Source
- MannixHu
- License
- MIT
- Updated
- Updated yesterday
Readme
# dsh-statusbar-config
[English](./README.en.md) | **中文**
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web UI 插件:用**模板完全自定义**输入框下方的会话统计行——JS 模板字符串语法 `${变量}`,想要什么写什么,即时生效。
[](https://github.com/MannixHu/dsh-statusbar-config)
[](./LICENSE)
<p align="center"><img src="./assets/stats-bar.png" alt="状态栏模板渲染效果:只显示模板里写的段落" width="560"></p>
实现方式:以更低优先级影子化 `conversation.composer.dock` 槽位中官方的 `stats` 条目,数据与官方 StatsLine 同源同精度,显示内容完全由你的模板决定。
## 模板变量
| 变量 | 含义 | 示例值 |
|---|---|---|
| `${ttft}` | 首 token 平均秒数(纯数字) | `5.8` |
| `${tps}` | 解码速度 tok/s(纯数字) | `69` |
| `${cache}` | 缓存命中率(百分数,不带 %) | `93` |
| `${input}` | 计费输入 token(紧凑格式) | `63.7M` |
| `${output}` | 输出 token(紧凑格式) | `178K` |
| `${turns}` / `${steps}` | 轮数 / 步数 | `12` / `34` |
| `${llm}` / `${tool}` | LLM / 工具调用累计时长(自带单位) | `3m12s` |
单位、分隔符、任何文字都由你写在模板里;未知变量原样显示;暂无数据的变量渲染为空。
## 安装
```bash
dsh plugin --profile web add github:MannixHu/dsh-statusbar-config
```
然后重启 `dsh web`(加载器图在进程启动时冻结)。
## 配置
两种等价方式:
- **界面里** — 设置 → 插件 → *状态栏模板* 卡片:点变量芯片插入到光标处,回车保存,即时生效(推荐)。
- **`~/.dsh/settings.yaml`** — `status-bar-config` 命名空间:
```yaml
status-bar-config:
enabled: true
template: '首 token 平均 ${ttft}s · ${tps} tok/s | 缓存命中 ${cache}% | 输入 ${input} tok · 输出 ${output} tok'
```
渲染结果:
```
首 token 平均 5.8s · 69 tok/s | 缓存命中 93% | 输入 63.7M tok · 输出 178K tok
```
`template` 留空 = 默认统计行(与官方相同的全量段落);`enabled: false` = 整行隐藏。0.1 版的段落开关已被模板取代,旧的 yaml 布尔键会被忽略,升级后改用 `template` 即可。
## 迁移
**从 0.1 的段落开关升级**:0.2 起开关由模板取代。旧的 yaml 布尔键会被忽略,把原来的开关组合改写成一条 `template:` 即可,例如原来只开 ttft/throughput/cacheHit/input/output 时:
```yaml
status-bar-config:
enabled: true
template: '首 token 平均 ${ttft}s · ${tps} tok/s | 缓存命中 ${cache}% | 输入 ${input} tok · 输出 ${output} tok'
```
**从 leonardoxr/dsh-status-bar-config 迁移**:本插件沿用同一命名空间 `status-bar-config`,settings.yaml 里的段落直接可读;但该插件依赖的 `@deepseek-ai/dsh-client-runtime` / `dsh-client-ui-slots` 已在 0.1.2-alpha 重组中移除,本插件按 alpha 后的包图重写,无需再打 inject 补丁。
## 兼容性
- 需要 DSH `0.1.2-alpha`+(客户端图依赖只声明了 alpha 重组后仍存在的包:`dsh-client-locale`、`dsh-client-ui-renderer`、`dsh-client-ui-settings`、`dsh-client-ui-conversation`)。
- 构建产物(`lib/`)随仓库提交,git 安装无需构建步骤,也不需要 `onlyBuiltDependencies` 白名单。
## 从源码构建
```bash
pnpm install
pnpm check # 类型检查 + 构建(lib/index.js 宿主半,lib/client.js 浏览器半)
```
## 许可
MIT
Install
dsh plugin --profile web add github:MannixHu/dsh-statusbar-config
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-statusbar-config from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.