前言¶
用 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 |
某階段缺文案時會自動回退(running → thinking → 任意非空組)。
打字機、漸變與輪換¶
- 文案可逐字打出,
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.cjs 從 config.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