前言¶
在使用 dsh-TUI 时,状态行通常只显示模型名称或会话信息,缺少上下文表达。已有 Web 版本插件可以提供旋转的状态短语,但无法直接在 TUI 中使用。dsh-tui-status-rotator 将 Web 插件的核心功能移植到 dsh-TUI,通过原生接口集成到 /settings 页面和 /status-rotator 命令,让状态行根据当前阶段(思考、运行、长任务)展示不同的短语。
插件定位¶
dsh-tui-status-rotator 是一个 dsh-TUI 客户端插件,由 Umamed26 维护。它提供基于阶段的动态状态行展示,包含打字机效果、自适应渐变、加权随机选择等特性,内置 14 个短语包共 1362 条短语。
核心功能¶
阶段感知¶
插件识别三个阶段,用不同图形和短语展示:
- ◌ 思考(thinking):模型开始生成前
- ● 运行(running):生成过程中
- ◍ 长任务(long):长时间运行(默认 60 秒以上)
阶段切换时立即切换短语,无需等待。
打字机效果¶
每个字按配置间隔逐字显示,默认 30 毫秒/字。若觉得效果过慢,可在设置中将 typewriter speed 设为 0,直接显示完整短语。
自适应渐变¶
每行字符根据流动调色板着色,默认使用主机主题调色板,并适配浅色/深色主题切换。
加权随机选择¶
默认启用加权随机,避免重复显示同一短语。可设置最近的记忆限制(默认 3 条),超出后才会再次出现。
原生集成¶
通过 dsh-TUI 的 tuiSettingsSections 和 tuiPluginHost.registerCommand 接口,插件在 /settings 中新增 “Status rotator” 页面,在 /status-rotator 下注册三个命令。
短语包与条件¶
内置 14 个短语包,默认启用 10 个。每条短语支持 { text, weight, when, rarity } 结构,when 可根据工具、重试次数、待处理数量、阶段、小时、首回合等条件匹配。
占位符¶
支持在短语中使用占位符,如 {elapsed} {phase} {model} {tps} 等,实时替换为当前值。
安装与启用¶
环境要求¶
| 依赖 | 版本要求 |
|---|---|
| dsh-TUI | v0.16+ |
| DeepSeek Harness | 0.2.1-rc.2(旧版本可能缺少接口,插件会降级并输出诊断信息) |
| Node.js | ^22.19 或 >=24 |
| pnpm | >=10 |
| 终端 | 必须为真正的 TTY(如 Windows Terminal WSL 标签、VS Code 终端),stdout 不能被管道或重定向 |
| 模型认证 | 需配置 DEEPSEEK_API_KEY 或使用 /auth login deepseek-account |
安装步骤¶
git clone https://github.com/Umamed26/dsh-tui-status-rotator
cd dsh-tui-status-rotator
npm install && npm run build # 编译到 lib/types/
dsh plugin --profile dsh-tui add file:$PWD
如果 dsh-tui 配置文件不存在,先安装主机:
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
安装后运行:
dsh --profile dsh-tui
# 缩写别名
alias dsh-tui='dsh --profile dsh-tui'
首次启动会运行 4 步引导:API 密钥、语言、模型、快捷键。选择中文后,状态短语也会切换为中文。
卸载¶
dsh plugin --profile dsh-tui remove dsh-tui-status-rotator
卸载不会删除用户数据和外部短语库,数据保留在 ~/.dsh-tui/status-rotator/。
典型用法¶
检查插件状态¶
在 dsh-TUI 中输入:
/status-rotator status
输出示例:
status-rotator on lang=zh phase=none ; view=on set=on cmd=on ;
sessions=1 proj=on/N active=idle events=N/N frames=N packs=10 preset=none ; line=- errors=none
运行时控制¶
/status-rotator next # 立即切换到下一句
/status-rotator on|off # 运行时开关(通过 /settings 持久化)
设置页面¶
在 /settings 中找到 “Status rotator” 页面,包含 15 个字段,支持实时生效和持久化。
自定义短语包与预设¶
在插件配置文件中添加预设和调度:
- id: status-rotator
config:
intervalMs: 8000
enabledPacks: [deepseek, coding, daily]
activePreset: night
presets:
- id: night
name: Night
phrases:
en:
thinking: ["Sneakily booting up Valorant…", "Entering the deep-slacking wind-up…"]
running: ["Being lazy with a straight face…", "Writing a mini-game after finishing your task…"]
long: ["Slacking so hard it forgot the task…"]
schedule:
- preset: night
days: [1, 2, 3, 4, 5] # ISO 星期,1 = 周一
from: "22:00"
to: "06:00" # 跨午夜
bankPath: null # null/省略 = ~/.dsh-tui/status-rotator/bank.json
条件短语示例¶
{
"text": "正在处理 {tool} 任务",
"weight": 2,
"when": { "tool": "code" }
}
适用场景与注意事项¶
适合希望在终端中为不同任务阶段添加上下文信息的开发者。插件以当前 dsh 进程权限运行,安装前建议查看源码和许可证(MIT)。
注意:
- 必须在真实 TTY 中使用,管道或重定向会破坏显示效果
- 旧版本 DeepSeek Harness 可能缺少接口,插件会降级并输出诊断信息
- 首次启动时选择中文可切换到中文短语库
- 卸载不会清除用户数据和外部短语库
小结¶
dsh-tui-status-rotator 通过原生接口将动态状态行功能集成到 dsh-TUI,支持阶段感知、打字机效果、自适应渐变和加权随机选择,适合需要增强终端状态展示的开发者。