前言¶
在 DeepSeek Harness(DSH)Web UI 裏跑智能體時,常見情況是主界面佔着一個標籤頁,人卻切去查文檔、回消息或看別的網頁。此時要判斷「這一輪還在跑」「已經結束」「在等你點批准」還是「被中斷了」,只能再切回 DSH 看一眼對話區或狀態欄。dsh-tab-status-light 把會話狀態畫在瀏覽器標籤頁的 favicon 上:灰色閃爍表示進行中,綠色表示剛完成,黃色表示等你交互,紅色表示中斷,不用切換標籤也能掃一眼。
下面介紹插件的定位、狀態規則、安裝方式與實現要點,並說明適用邊界。
這是什麼¶
dsh-tab-status-light 是面向 DSH Web UI 的純客戶端插件(分類:客戶端),由維護者 kyle2241345145351324321 發佈,源碼與文檔在 GitHub 倉庫 kyle2241345145351324321/dsh-tab-status-light。社區目錄頁:SkillHub 插件頁。
它不佔用 DSH 的 slot,只讀取當前主視圖會話的運行與交互狀態,並重繪標籤頁圖標。當前 package 版本爲 1.2.0,採用 MIT 許可證。
核心功能:四種狀態與判定依據¶
插件在官方 README 中約定四種圖標狀態,顏色與動畫如下。
| 狀態 | 顏色 | 動畫 | 判定依據 |
|---|---|---|---|
| 進行中 | 灰 #9ca3af |
每 600 ms 切換:純鯨魚 ↔ 鯨魚 + 灰點(暗半幀無圓點) | SessionStatus.running === true |
| 完成 | 綠 #22c55e |
亮 10 秒後回到純鯨魚 | 在本頁看到過該輪在跑,且最後一個 turn/end 原因不是中斷類 |
| 等你回答 | 黃 #eab308 |
常亮直到你回覆 | SessionStatus.pendingInteraction !== undefined(提問 / 覈准 / 計劃審查等) |
| 中斷 | 紅 #ef4444 |
亮 20 秒後回到純鯨魚 | 在本頁看到過該輪在跑,且最後一個 turn/end 爲 aborted / blocked / error / interrupted |
幾點行爲需要記住:
- 未選中會話、會話尚未跑完過任意一輪,或僅切換到早就結束的歷史會話時,保持原始鯨魚 favicon,不會把歷史重播成綠/紅。
- 綠、紅是「剛發生」的通知:
SETTLE_MS默認 10 000 ms 控制綠色停留;SETTLE_MS_RED默認 20 000 ms 控制紅色停留;新一輪結束會再次點亮對應顏色。 - 中斷後的紅燈會佔滿 20 秒窗口,即使其間又有回合完成,也不會被綠色蓋掉,避免取消被靜默當成成功。
資源佔用方面,README 寫明:閃爍時約每秒 2 ms JavaScript(約單核 0.2%);空閒時無定時器、無重複掃描。
安裝與啓用¶
插件以 DSH bundle(dsh.bundle.patch)形式分發。任選一種方式安裝後,用 Cmd+R / Ctrl+R 刷新頁面。
在 harness 裏通過 plugin_manager:
plugin_manager({ action: "install_bundle", target: "dsh-tab-status-light" })
CLI(Web profile):
dsh plugin --profile web add dsh-tab-status-light
# 也可以直接從 GitHub 安裝(不走 npm)
dsh plugin --profile web add github:kyle2241345145351324321/dsh-tab-status-light
本地開發時指向 checkout 目錄,改文件後刷新即可:
plugin_manager({ action: "install_bundle", target: "/path/to/dsh-tab-status-light" })
依賴說明:需要 harness 的 Web profile,且具備 @deepseek-ai/dsh-client-ui-session 與 @deepseek-ai/dsh-api-session-controller(標準安裝一般已包含)。
典型用法¶
安裝並刷新後無需額外配置即可工作:保持 DSH 在一個標籤頁打開,切到其他標籤時觀察 favicon 即可。
若需微調閃爍週期、停留時間或中斷判定,編輯倉庫根目錄 client.js 文件頭部的常量(開發模式下可 install_bundle 指向本地路徑後改代碼再刷新):
| 常量 | 默認值 | 含義 |
|---|---|---|
BADGE |
{cx:37, cy:37, radius:11, ring:4} |
圓點位置、半徑、描邊環寬度 |
BADGE_COLOR |
灰 / 綠 / 黃 / 紅 | 各狀態顏色 |
BLINK_MS |
600 |
進行中閃爍週期 |
SETTLE_MS |
10000 |
綠色停留時長 |
SETTLE_MS_RED |
20000 |
紅色停留時長 |
RED_TURN_END_KINDS |
aborted blocked error interrupted |
計爲中斷的 turn/end 原因 |
實現要點(便於判斷是否信任行爲)¶
README 中的機制摘要如下,便於理解邊界而非重複造輪子:
- 讀取
ctx.sessions.list(主視圖會話)與ctx.uiSession.sessionStatus,並訂閱該會話 event source 上的最新turn/end原因。 fetch()站點自帶的favicon.svg/favicon-dark.svg,在</svg>前插入<circle>,將<link rel="icon">的href換成 data URL;卸載時恢復原href。鯨魚圖案不拷貝進插件,上游換 logo 會跟隨。- 閃爍由小型 Web Worker 驅動,標籤在後臺時仍可閃(不支持 Worker 時退回頁面定時器);兩幀預計算爲 data URL,避免每 tick 再讀文件導致節奏不齊。
適用場景與注意¶
適合誰:長時間用 DSH Web UI 跑智能體、習慣多標籤並行,又希望用餘光判斷「該不該切回去」的開發者。
侷限(來自 README):
- 只反映主視圖會話,後臺會話不會顯示在圖標上。
- Chrome Memory Saver / 節電導致標籤頁凍結時,頁面 JavaScript 會停,任何 Web API 都無法維持閃爍;可在
chrome://settings/performance中將該站點加入「始終保持這些網站活動」。navigator.wakeLock不能解決隱藏標籤問題。 - 標籤解凍或從後臺回到前臺時會立刻重同步並重繪,看到的圖標應對應當前狀態。
- 通過 SVG data URL 換 favicon;極舊、不支持 SVG favicon 的瀏覽器可能無變化。
安全與許可:插件在當前 DSH 進程、當前瀏覽器頁面的客戶端上下文中運行,邏輯以倉庫源碼爲準;安裝前建議瀏覽 client.js 與 LICENSE(MIT)。DSH 生態奉行「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無法定從屬關係,本文不等同於官方應用商店說明。
結尾¶
dsh-tab-status-light 把 harness 會話狀態映射到標籤頁 favicon:進行中灰閃、完成綠、待交互黃、中斷紅,並刻意避免用歷史回合誤導當前狀態。需要安裝命令、調參表與行爲細節時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/kyle2241345145351324321/dsh-tab-status-light
- GitHub:https://github.com/kyle2241345145351324321/dsh-tab-status-light