前言¶
用 DeepSeek Harness(DSH)的 Web 界面跑智能體時,頁面往往佔着一個標籤頁。切到其他標籤處理別的事,很難一眼判斷:後臺是否還有 root session 在跑、剛纔那輪是否已經結束。反覆切回 DSH 頁確認,會打斷手頭工作。
下面介紹社區插件 dsh-tab-indicator(維護者 zz0-0,分類:客戶端)。它在 DSH 瀏覽器標籤的 favicon 和標題上反映全局 running/done 狀態,不輪詢、不訪問外網,也不需要 DeepSeek API Key。插件以 DSH「一切皆插件」的方式接入 Web profile;目錄頁見 SkillHub,源碼在 GitHub。
這是什麼¶
dsh-tab-indicator 是一個 DSH Web 插件(當前 package 版本 0.1.0,許可證 MIT)。Host 側跟蹤正在運行的 root agent,通過 Server-Sent Events(SSE)把快照推給注入到 DSH 首頁的瀏覽器腳本;腳本在頁面 favicon 上繪製藍色數量角標,並在任務完成時用綠色對勾與標題裝飾提示。計數針對 整個 DSH host,不限於當前 workspace;子 agent 的 turn 計入其 root turn,不會單獨加一。
核心功能¶
運行中的數量角標¶
只要有一個或多個 root session 在運行,favicon 上會顯示藍色數字角標(1、2 … 9+)。僅有一個運行中的 session 時,標題保持原樣;多於一個時,標題會增加 (N)。設計上 不用標題圓點,用數字表達併發數。
完成時的對勾¶
某次 run 結束時,標籤頁 favicon 約 1 秒 顯示綠色對勾。若仍有其他 run 在跑,角標會恢復;若已全部結束,對勾僅在 標籤頁被隱藏或窗口失焦 時保留,回到該標籤後會清除。
靜態 favicon 與主題¶
角標只在 運行數量或 running/done 狀態變化 時重繪 favicon,避免 Chrome 把每次 link rel="icon" 變更當作新加載、導致書籤欄圖標不停閃爍。插件會跟隨瀏覽器當前淺/深色 favicon 變體,空閒時恢復原始 <link> 元素。
同步方式與權限¶
Host 通過 GET /dsh-tab-indicator/events 推送完整快照(text/event-stream),頁面在 host 重啓後會自動跟上;無輪詢。SSE 與 Web API 一樣受瀏覽器 cookie 保護。插件 不做出站請求,不採集遙測,不處理憑據。
計數粒度與限制¶
計數是 turn 級別:比 turn 存活更久的後臺 job 不會計入。Host 每 2 秒與 ctx.agents.roots() 對賬,修復插件重載時可能漏掉的狀態。頁面標題由 React DocumentTitle 管理,插件用 MutationObserver 在應用改寫標題後重新應用 (N) / ✓ 裝飾。
環境要求¶
- DSH 0.2.1.x,且使用 web profile;README 寫明在
0.2.1-rc.3上測試過。 - 開發與測試需 Node.js
^22.19.0 || >=24.0.0(與 DSH 要求一致)。 - 不需要 DeepSeek API Key。
安裝與啓用¶
從 GitHub 安裝並重啓 Web 服務(以下命令來自項目 README):
dsh plugin --profile web add github:zz0-0/dsh-tab-indicator
systemctl --user restart dsh-web
也可使用顯式 git URL:
dsh plugin --profile web add git+https://github.com/zz0-0/dsh-tab-indicator.git
systemctl --user restart dsh-web
安裝後應對 DSH Web 頁 硬刷新(Ctrl/Cmd + Shift + R)。插件會把瀏覽器腳本注入 DSH 首頁,首次必須刷新才能加載。systemctl 行假設使用 Linux 用戶服務;若手動運行 dsh web,應重啓對應進程而非 systemctl。
本地開發可鏈接目錄(將路徑換成你的檢出位置):
dsh plugin --profile web add link:/path/to/dsh-tab-indicator-plugin
systemctl --user restart dsh-web
更新與移除:
dsh plugin --profile web add github:zz0-0/dsh-tab-indicator
systemctl --user restart dsh-web
dsh plugin --profile web remove dsh-tab-indicator
systemctl --user restart dsh-web
典型用法¶
安裝並硬刷新後,無需額外配置項:照常打開 DSH Web 界面即可。
- 啓動一個或多個 root session 後,觀察標籤 favicon 上的藍色數字;多 session 時標題會出現
(N)。 - 切到其他標籤或窗口,通過角標判斷 DSH 是否仍在跑;其他 workspace 裏的 run 同樣計入。
- 某次 run 結束時留意約 1 秒的綠色對勾;若你仍停留在該標籤且已無其他 run,對勾行爲會按 README 描述清除。
Host 還會在首頁注入:
<script defer src="/dsh-tab-indicator/client.js?v=1"></script>
SSE payload 形態示例(字段以實際爲準):
GET /dsh-tab-indicator/events text/event-stream
data: {"type":"state","running":1,"sessions":["…"],"at":…}
適用場景與注意¶
適合:長時間用 DSH Web 界面、常把 DSH 標籤留在後臺、需要 全局 root session 併發感知,又不想開輪詢或第三方服務的開發者。
安裝前請知悉:插件與當前 dsh 進程同權限 運行,會註冊 host 路由並改寫首頁注入腳本。安裝前應閱讀 源碼與 MIT 許可證,確認可接受其行爲。
排查(摘自 README):安裝後無角標——重啓 dsh-web 並硬刷新,確認 profile 已列出 dsh-tab-indicator。對話結束但數字仍在——檢查是否還有其他 root session 或 turn;必要時重啓 dsh-web。favicon 未恢復——刷新頁面;書籤圖標可能緩存滯後。角標顯示 9+ 表示超過九個 root session 在運行。favicon 不會動畫,這是有意設計(見 README「Why the favicon is static」)。
結尾¶
dsh-tab-indicator 把 DSH 智能體的 running/done 狀態落到瀏覽器標籤的 favicon 與標題上,SSE 推送、本地運行、無 API Key,適合作爲 Web 側的小而專的客戶端插件。
- 目錄頁:https://www.skillhub.cn/plugins/zz0-0/dsh-tab-indicator
- GitHub:https://github.com/zz0-0/dsh-tab-indicator