dsh-tui-status-rotator:dsh-TUI 的动态状态行插件

前言

在使用 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,支持阶段感知、打字机效果、自适应渐变和加权随机选择,适合需要增强终端状态展示的开发者。

目录页 · GitHub

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye