dsh-status-rotator:把 DSH 回合狀態行換成可配置的趣味文案

前言

用 DeepSeek Harness(dsh)跑 Web 界面時,回合進行中底部會固定顯示 Deep diving... 這類狀態文字。對長期盯着界面的人來說,這行字功能上夠用,但幾乎不可定製,也讀不出當前階段或會話上下文。

下面介紹 dsh-status-rotator。它只替換 TurnStatus 那一行文案,不動 15 秒後纔出現的運行時長時鐘,也不碰聊天記錄裏的代碼塊或其它 aria-live 區域。文案、漸變、標籤頁標題、懸浮 Pill 和預設調度,都可以從 JSON 或 DSH 設置頁改,改完通常不用重啓進程。

這是什麼

dsh-status-rotator 是 maintainer 01Virex 維護的 DSH Web 插件,在 SkillHub 社區目錄歸類爲「趣味換裝」。GitHub 倉庫當前約 52 stars。

一句話定位:把 dsh Web UI 回合底部的 Deep diving... 狀態標籤,替換成按階段切換、可打字機動畫、可炫彩漸變的自定義短語,並支持模板佔位符即時取值。

許可證爲 MIT。插件隨 dsh 進程運行,安裝前建議自行查看源碼與許可證。

核心功能

經過上面的定位,下面按能力拆開說明。以下均來自項目 README 與 package.json 聲明。

階段感知文案

文案按回合進展分三組,階段切換時立即換句,不用等輪換間隔:

階段 觸發條件 默認時長
thinking 回合剛啓動,TurnStatus 裏還沒有時鐘 0 ~ 15s
running 時鐘出現,未超過 longAfterMs 15s ~ 60s
long 時鐘讀數超過 longAfterMs ≥ 60s

某階段缺文案時會自動回退(runningthinking → 任意非空組)。

打字機、漸變與輪換

  • 文案可逐字打出,typeSpeedMs 控制速度,設爲 0 關閉打字機。
  • 默認啓用流動炫彩漸變,僅作用於狀態文字,不影響時鐘;可在配置裏關閉或改顏色序列與 speed
  • intervalMs(默認 10000 ms)控制同一階段內多條文案的輪換間隔。

模板佔位符與即時引擎

任意文案、標題模板、Pill 模板都支持佔位符。隨時間變化的字段(如 {elapsed}{tps})按 liveTickMs(默認 1000 ms)刷新;設爲 0 則只在輪換時更新。

常用佔位符包括:

佔位符 含義
{elapsed} 當前回合已運行時長,風格與界面時鐘一致
{phase} / {phaseLabel} 階段 id 或本地化短標籤
{model} / {provider} 當前會話模型與供應商路由
{tps} 流式 token/秒 估算
{pending} / {tools} / {running} 待審批數、運行中工具名、運行狀態
{locale} / {date} / {time} 界面語言、本地日期與時間

即時值來自訂閱 dsh 會話快照與模型 RPC 的狀態引擎;會話 API 不可用時相關字段顯示 ,插件其餘功能繼續工作。

示例:

"phrases": {
  "zh": {
    "thinking": ["正在寫代碼 {elapsed}…", "正在{phaseLabel}中 ({elapsed})…"]
  }
}

標籤頁標題、懸浮 Pill 與預設

  • 瀏覽器標籤頁標題:可選在回合進行中輪換 document.title,空閒時恢復原標題或顯示 idleTemplate
  • 懸浮狀態 Pill:註冊在官方 shell.overlay 座位,默認模板形如 {model} · {phaseLabel} · {elapsed} · ⚡{tps} tok/s,位置與透明度可配。
  • 預設與調度:多套命名詞庫可帶獨立 config / phrases;設置頁可手動切換,也可按星期與時段(schedule)自動切換。

設置頁、熱更新與多語言

DSH「設置」裏會多出 狀態文案 頁:中英 × 三階段詞庫可視化編輯,基本參數、漸變、Pill、預設與調度規則也在同一頁。保存後通過 node half 註冊的 HTTP 路由寫回配置,已打開頁面無需刷新即可熱應用。

文案跟隨「設置 → 語言」在中英文間切換,未知語言回退中文。插件通過 role="status"aria-live="polite" 精確定位 TurnStatus,避免誤改聊天內容。

安裝與啓用

推薦用官方一行命令從 npm 安裝最新版:

dsh plugin --profile web add dsh-status-rotator

package.json 裏聲明瞭 dsh.bundle.patch,安裝後會被 dsh 自動識別,無需額外標誌。首次安裝後需要重啓一次 dsh web,瀏覽器建議 Ctrl+F5 硬刷新。

也可從本地克隆目錄或 Release 的 .tgz 包安裝,語法相同:

dsh plugin --profile web add ./dsh-status-rotator
dsh plugin --profile web add /path/to/dsh-status-rotator-<版本>.tgz

手動安裝時,需把項目放到 profile 的 node_modules 下,在 cordis.patch.yml 插入插件條目,運行 node gen-config.cjs 初始化 config.json,再重啓 dsh web

卸載時從 cordis.patch.yml 刪除 status-rotator 條目並重啓即可。

典型用法

1. 在設置頁改詞庫(上手最快)

打開 DSH 左下角「設置」→ 狀態文案,在中文 / English 標籤下分別編輯 thinking / running / long 三個文本框(每行一句),調整輪換間隔、打字機速度、漸變與 Pill,點「保存詞庫」。保存後當前頁面立即生效。

2. 直接編輯 config.json

首次可用 node gen-config.cjsconfig.example.json 生成本地 config.json。頂層結構示意:

{
  "config": {
    "intervalMs": 10000,
    "typeSpeedMs": 30,
    "longAfterMs": 60000,
    "reloadIntervalMs": 15000,
    "liveTickMs": 1000,
    "gradient": { "enabled": true, "speed": 4 },
    "title": { "enabled": false },
    "pill": {
      "enabled": true,
      "template": "{model} · {phaseLabel} · {elapsed} · ⚡{tps} tok/s",
      "position": "right-bottom"
    }
  },
  "phrases": {
    "zh": { "thinking": ["…"], "running": ["…"], "long": ["…"] },
    "en": { "thinking": ["…"], "running": ["…"], "long": ["…"] }
  }
}

頁面保持打開時,插件會按 reloadIntervalMs 自動重讀配置;切回標籤頁也會立即重讀,一般不必刷新瀏覽器。

3. 工作 / 摸魚預設按時段切換

{
  "activePreset": "work",
  "presets": [
    {
      "id": "work",
      "label": { "zh": "工作模式", "en": "Work" },
      "config": { "intervalMs": 12000, "gradient": false },
      "phrases": { "zh": { "thinking": ["正在認真寫代碼…"] } }
    },
    {
      "id": "fun",
      "label": { "zh": "摸魚模式", "en": "Fun" },
      "phrases": { "zh": { "thinking": ["正在摸魚…"] } }
    }
  ],
  "schedule": [
    { "preset": "work", "days": ["mon", "tue", "wed", "thu", "fri"], "from": "09:00", "to": "18:00" },
    { "preset": "fun", "days": ["sat", "sun"], "from": "00:00", "to": "23:59" }
  ]
}

4. 關閉炫彩漸變

"gradient": {
  "enabled": false,
  "colors": ["#ff5f6d", "#00ff88", "#4da6ff"],
  "speed": 4
}

適用場景與注意

適合誰

  • 長期在 dsh Web UI 前等待模型輸出,希望狀態行更有信息量或更個性化的開發者。
  • 需要按階段(剛啓動 / 運行中 / 長任務)展示不同語氣文案,或想把 {model}{tps} 等即時字段寫進狀態行的用戶。
  • 想在不改 dsh 本體的情況下,給界面做輕量「趣味換裝」的 DSH 用戶。

使用前請注意

  • 插件以當前 dsh 進程權限 運行;從 npm 或 GitHub 安裝前,應自行審查源碼與 MIT 許可證。
  • SkillHub(https://www.skillhub.cn/plugins/01Virex/dsh-status-rotator)是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」,本插件是社區貢獻,不是官方內置功能。
  • 若瀏覽器控制檯出現 [status-rotator] ⚠ localStorage 覆蓋生效,說明 localStorage 裏的舊覆蓋仍在生效,可能壓住外部 config.json;需要時可清理對應鍵。
  • 升級到帶設置頁與寫接口的版本後,需重啓一次 dsh web 讓 node half 註冊 PUT 路由;之後日常改詞庫可在設置頁完成。

鏈接

  • SkillHub 目錄頁:https://www.skillhub.cn/plugins/01Virex/dsh-status-rotator
  • GitHub 倉庫:https://github.com/01Virex/dsh-status-rotator
  • npm 包名:dsh-status-rotator
羽毛球分组比赛记分
小程序二维码

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

小夜