用 dsh-dynamic-island 給 DeepSeek Harness 網頁界面加一塊狀態靈動島

前言

用 DeepSeek Harness(命令名 dsh)在網頁裏跑長任務時,主界面很快會堆出思考流、工具輸出和待審批請求。真正需要一眼確認的,往往只有幾件事:智能體現在是在想、在跑工具,還是卡在等你拍板;這一輪最後是成功、失敗、被截斷,還是目標被阻塞。這些信號散落在會話時間線和原生輸入區裏,切到別的窗口再回來,就要重新找。

DeepSeek Harness 由 DeepSeek AI 開源,倉庫是 deepseek-ai/deepseek-harness。官方頁面把它的架構寫成 Everything is a Plugin(一切皆插件):模型、工具、技能、會話、沙箱、調度和界面都可以按 profile 增刪,不必改 harness 源碼。目前仍是面向開發者的預覽版,接口還會變。社區站點 DeepSeek Harness 插件庫 用來發現和對比插件,它和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。安裝命令以目錄頁原文爲準。

目錄裏有一個界面增強插件 dsh-dynamic-island。它把上述狀態收進 Web GUI 邊緣一塊玻璃質感的小島:思考時核心會呼吸,跑工具時邊緣會脈衝,動手前展開「批准 / 暫不」。本文按該目錄詳情頁、GitHub 倉庫(含中英文 README、package.jsondocs/integration.md、MIT 許可證)、npm 頁面以及 DeepSeek Harness 官方資料交叉覈對後整理。

這是什麼

dsh-dynamic-island 是一款界面增強插件,由 ylifeonlyonce 維護(GitHub 用戶名爲 YLifeOnlyOnce),源碼在 YLifeOnlyOnce/dsh-dynamic-island,許可證爲 MIT,主要語言是 JavaScript。2026 年 8 月 18 日打開目錄頁和 GitHub 時,倉庫星標均爲 3;目錄收錄日期是 2026-08-15,最近一次推送是 2026-08-14。npm 包名同樣是 dsh-dynamic-island,當前版本 0.3.5(2026-08-14 發佈)。

它要解決的是「Agent 內心活動看不清」這件事:思考、工具調用、審批、異常、完成,本來都在 Harness 的會話快照和事件裏,插件把它們映射成一塊趴在屏幕邊緣的輕量表面。目錄頁和 README 都強調:它不是一隻和任務無關的桌寵,每一次形態變化都來自真實的 Harness 狀態。

需要先把定位說清楚。倉庫 README 把項目狀態寫成 高保真設計原型:同一倉庫裏既有 Vite 演示遊樂場,也有可安裝的雙面包客戶端插件。package.json 的描述也寫明 design prototype + plugin in one repo。路線圖裏「真實 GUI 聯調(橋實機覈對 + retry / continue / unblock / approve 接上真實遠端)」仍未勾選。下面介紹的能力,以倉庫文檔和樁測試爲準,不要默認已經在生產 Web GUI 裏全部跑通。

核心功能

插件掛在 Web GUI 的 shell.overlay 浮層槽上,不改 apps/web 源碼。形態是雙面包 npm 包:dsh.client 聲明瀏覽器半場(exports["./client"] 指向構建出的 lib/client.js),node 半場是空的 apply(),只爲讓包成爲 loader 入口。package.jsondsh.client.platformweb,也就是說它面向網頁界面,不是 headless / TUI。

瀏覽器半場訂閱當前會話快照和投影(goal、todos、tokenUsage、contextPressure、permissions),經 src/plugin/protocol.js 派生成島模型,再交給與演示共用的那套 React 組件渲染。README 把 Harness 信號收成八種心情,而不是直接把原始事件流鋪到屏幕上:

心情 對應信號(倉庫文檔) 界面上大致長什麼樣
待命 idle agent/status: idle 安靜小點
思考 thinking 運行中、步驟開始、推理增量 核心呼吸,膠囊顯示當前任務和步驟
執行 working tool/call 到對應 tool/result 青綠脈衝,顯示工具名和進度
確認 approval 輸入區有待處理的審批 暖珊瑚邊緣,展開「批准 / 暫不」
完成 complete 成功的 turn/end 與用量信息 結果小票
異常 alert 工具錯誤、請求錯誤、失敗的 turn/end 失敗摘要和回到正軌的入口
阻塞 blocked turn/end {blocked} 目標暫停,等解除
上限 max-tokens turn/end {max-tokens} 輸出被截斷,可續跑

八態之上還有一組載荷:流式預覽行(思考與正文分色)、工具命令卡、結果小票、目標進度環、三態任務清單、模型徽章(provider · model)。演示裏可以拖拽小島,位置會記住;⌘K / Ctrl+K 打開命令面板;Esc 收起。審批按倉庫說明是原生輸入區的鏡像入口,不另起一套狀態機,也不會替 Harness 做決定。

觀感上,README 寫的是手寫 CSS 的 Liquid Glass:分層透明、彈性形態、會動的光,不引入額外 UI 組件庫。所謂「零額外依賴」,指的是運行時不再疊一套組件框架,peer 依賴仍是 React 18 或 19。樣式放在 Shadow DOM 裏,與原生界面雙向隔離。無障礙方面,文檔寫明尊重 prefers-reduced-motion,不單靠顏色表達狀態,審批按鈕是真實可點的按鈕。

docs/integration.md 對「已經接到什麼」更具體,寫作時以它爲準,不要把演示裏能點的按鈕都當成實機已接通:

  1. 展示側:待命 / 思考 / 執行 / 審批情緒、審批文案、完成與異常等收尾原因、流式預覽(受快照批處理粒度限制)、todo 清單、目標環、token 用量和小票時長、停止取消、解除阻塞,文檔記爲已按契約接入並經樁測試。
  2. 仍有缺口:工具卡在運行中只有名稱,完整參數和退出碼要訂閱會話 log,live-bridge 尚未訂閱;結果小票的 files / checks 當前沒有投影;重試 / 繼續的 session.prompt 正文還沒接到隊列裏最近一條用戶消息;最近完成小票堆未實現。
  3. 最後一道驗證是真實 GUI 聯調。文檔寫明:樁測試不能替代瀏覽器裏對 currentProvideInfo、快照和投影的實機覈對。

安裝與啓用

社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行:

dsh plugin add github:ylifeonlyonce/dsh-dynamic-island

這是目錄頁原文,不要自行改成別的 owner/repo 拼法。如需可復現安裝,目錄頁的寫法是在後面固定 commit 哈希:

dsh plugin add github:ylifeonlyonce/dsh-dynamic-island#commit

commit 換成實際哈希。2026-08-18 覈對該倉庫 main 分支時,最新提交爲 d92f9bc83d20949b5f1beec1fd0051f9386a8b63(對應 npm 0.3.5)。哈希會隨倉庫更新變化,安裝前應再打開 GitHub 確認。

倉庫 README 另外寫了面向 web profile 的裝法,以及從 npm 裝同名包:

dsh plugin --profile web add dsh-dynamic-island
dsh --profile web

本地從源碼裝時,先 npm run build:plugin 產出 lib/client.js,再執行 dsh plugin --profile web add /path/to/this-repo。裝完需要重啓 web profile:文檔說明客戶端模塊的包元數據緩存不會自動失效,插件集變更必須重啓。重啓後可用下面這條檢查配置樹裏是否出現該插件:

dsh --profile web --dump-config | grep dynamic-island

目錄頁有一條適用於所有插件的安全說明:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。

典型用法

如果還沒把它裝進 Harness,倉庫提供獨立演示,用來看八種心情和交互,不經過真實 GUI:

git clone https://github.com/YLifeOnlyOnce/dsh-dynamic-island.git
cd dsh-dynamic-island
npm install
npm run dev

打開 Vite 打印的地址,底部有 靈動島演示 欄,可以手動切換心情,也可以點「▶ 自動演示」走一遍 待命 → 思考 → 執行 → 確認(自動批准)→ 完成。倉庫列出的可復現操作包括:

  1. 在確認態點「批准 / 暫不」,看小島是否立刻同步結果。
  2. 點「查看過程」展開島內活動流;演示裏的工具卡帶退出碼、耗時,以及一鍵複製命令。
  3. 點「清單」展開三態任務清單,目標進度環顯示 goal 輪次。
  4. 異常態點「重試」,阻塞態點「解除阻塞」,上限態點「繼續」。停止操作按文檔交給 Harness 原生界面。
  5. 按住島的空白處拖到別處,刷新後位置仍在;Esc 隨時收起。

裝進 web profile 並重啓後,文檔預期小島出現在工作區右上角浮層裏,可拖拽、位置記憶。模型徽章顯示當前 provider 與模型。這些是倉庫對「安裝後應看到什麼」的說明;真實 GUI 聯調尚未勾選,若浮層沒有出現或按鈕沒有回執,應對照 docs/integration.md 第七節的缺口清單,而不是假定自己裝錯了。

適用場景與注意事項

適合已經在用 dsh --profile web、希望把 Agent 狀態收到一塊邊緣表面的人,也適合想對照 Harness 信號設計 UI 插件的開發者:注入點、雙面包形態和協議適配層都寫在倉庫裏。不適合把它當成生產環境裏已經穩定的狀態欄,也不適合 headless / 純終端 profile——dsh.client.platform 明確是 web

使用前建議記住這幾條邊界:

  1. DeepSeek Harness 本身是開發者預覽,內部 @deepseek-ai/* 客戶端包沒有對外 SDK 版本承諾。第三方 UI 插件依賴的是倉庫內契約,上游一改,島的橋接層就要跟着改。
  2. 作者自己把項目標成高保真原型。展示側在樁測試層面大體對齊,動作側文檔估計約七成:取消、審批迴執、解除阻塞已接;重試和繼續仍待接。files / checks 小票、過程時間線也還沒有。
  3. 島上的操作按設計是原生面的鏡像,不替換 composer、輸入欄或頂欄。審批與原生 ApprovalPanel 共用同一條回執通道,誰先回執誰結算。
  4. 插件以當前 dsh 進程權限運行。安裝前閱讀 GitHub 源碼和 MIT 許可證,需要可復現安裝時固定 commit,不要只信目錄頁上的一句話簡介。

小結

dsh-dynamic-island 把 DeepSeek Harness 網頁裏本來散落的思考、工具、審批和收尾原因,收成一塊 Liquid Glass 風格的狀態島。社區目錄的安裝入口是 dsh plugin add github:ylifeonlyonce/dsh-dynamic-island;倉庫同時提供 Vite 演示和 npm 0.3.5 的 web profile 裝法。它目前仍是可安裝的設計原型,真實 GUI 聯調還在路線圖上。若要試用,先看源碼和許可證,再按目錄頁命令安裝,並以倉庫 docs/integration.md 的缺口清單核對實機行爲。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-dynamic-island/

GitHub:https://github.com/YLifeOnlyOnce/dsh-dynamic-island

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

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

小夜