dsh-worksite-plugin:把 DSH 會話進度翻譯成一座施工工地

前言

DSH 的會話視圖默認以對話流呈現。一次長任務跑下來,你能看到模型每一輪的輸出,但很難一眼看出工程進度:哪些任務做完了、當前在哪個階段、上一個出錯是不是返工、這輪用了多少 token。用文本 todo 列表或日誌去補,就得在對話和筆記之間來回切。

下面介紹 luotaiyu/dsh-worksite-plugin(工程現場插件,DSH Web GUI 會話視圖插件)。它把當前 Session 的持久事件、任務清單和運行狀態,翻譯成一座正在施工的工地:擬人化工程師“小匠”、施工塔、工序航線、現場動態和工程儀表盤。項目由 LuoTaiyu 維護,版本 0.1.0,許可證 MIT。

這是什麼

一句話定位:一個掛在 DSH 會話視圖切換環裏的主題化可視化插件,不改模型行爲,只負責把會話信號渲染成工地視圖。

  • 包名:@local/dsh-site-view
  • 倉庫:https://github.com/LuoTaiyu/dsh-worksite-plugin
  • 狀態視圖:安裝後打開任意會話,頂部會話視圖切換環會出現“工程現場 / Worksite”

環境要求寫在 package.json 的 engines 裏:

"engines": {
  "dsh": ">=0.2.1-rc.5 <0.3.0"
}

GitHub 倉庫名只接受 ASCII 字符,中文名會被清洗成 -,所以實際倉庫使用穩定 slug dsh-worksite-plugin,項目中文名仍是“工程現場插件”。

核心功能

擬人化現場工程師“小匠”

六種狀態:思考、施工、驗收、交付、返工、待命。每種狀態帶表情、安全帽、圖紙、扳手和狀態氣泡,狀態直接來自 useSession() 的 running、blank、promptAttempted 和錯誤狀態。

施工塔

把 todo 或會話階段映射成樓層,樓層分已完成、施工中、待建三種狀態,附帶塔吊和作業面提示。多任務樓層會做摺疊。

工序航線

四段式階段軌:圖紙會審 → 主體施工 → 質量驗收 → 交付使用,對應 deriveSite() 推導出的會話階段。

現場動態

最近 5 次工具調用,按改圖、看圖、勘測、施工、外勤、排期、分包、交付分類展示,數據來自 Session binding 的 eventSource(resident 會話事件窗口)。

施工清單與進度估算

直接讀取 useProjection('todos') 的當前任務清單。沒有 todo 時降級爲按會話階段估算。

需要明確的一點:這裏的進度是會話信號估算,不是模型自報的完成度。todo 佔主導,工具活動與驗收信號作補充;界面上明確標註了這一點。

工程儀表盤

展示工序、改圖、輪次、用時、令牌、異常六項。

主題與無障礙

全部 UI 使用 --dsw-alias-* 主題令牌,支持淺色/深色、鍵盤焦點與 prefers-reduced-motion。

安裝與啓用

README 給了三種方式,都沒有 dsh plugin add 這樣的單行命令,不要憑插件名拼接。

方式一:從 GitHub 安裝

在 DSH 的 Plugin Manager 中使用“安裝第三方插件”,填入 commit-pinned Git 地址:

git+https://github.com/LuoTaiyu/dsh-worksite-plugin.git#5c52c9019e461399feddcf060b4e86522d0c7b06

如果更希望跟隨倉庫更新,可以先用倉庫地址安裝,再做一次更新:

git+https://github.com/LuoTaiyu/dsh-worksite-plugin.git

方式二:從插件市場安裝

DSH 當前沒有官方中心市場;Plugin Manager 的 Discover 只列出用戶自己添加的索引。該倉庫自帶一個 format 1 市場索引:

https://cdn.jsdelivr.net/gh/LuoTaiyu/dsh-worksite-plugin@main/market.json

啓用 Plugins → Experimental plugins → Custom plugin markets,在 Discover 中添加這個索引,即可搜索並安裝“工程現場”。

下面是插件市場索引地址,可用 web_fetch 打開覈對:

https://cdn.jsdelivr.net/gh/LuoTaiyu/dsh-worksite-plugin@main/market.json

方式三:本地安裝

本包是一個本地 Bundle。通過 Plugin Manager 的“安裝第三方插件 → 本地目錄”安裝 dsh-site-view 目錄的絕對路徑,或由宿主側 install_bundle 完成。

當前桌面 profile 以 link: 方式安裝到本工作區;移動或重命名 dsh-site-view 目錄後,需要重新安裝一次。

裝完後打開任意會話,頂部視圖切換環裏找“工程現場 / Worksite”。若暫時看不到,刷新一次頁面即可加載新客戶端 Bundle。

數據來源與文件結構

數據由五個入口餵給瀏覽器側的 client.js:

數據源 用途
useSession() running、blank、promptAttempted、錯誤狀態
useProjection('todos') 當前任務清單
useProjection('goal') 持久目標(可選)
useProjection('title') 會話標題(可選)
Binding 的 eventSource resident 會話事件窗口:工具調用、輪次、錯誤、token 用量

倉庫文件分工:

文件 作用
package.json Bundle 清單、dsh.bundle.patch、dsh.client
cordis.patch.yml 插入 site-view 行
index.js Host 半側(空實現,負責 Loader 行)
client.js 瀏覽器半側:conversation.view 註冊、數據推導、React 組件、CSS
locale/{en,zh}.json Plugin Manager / Settings 顯示元數據
icon.svg 原創圖標
market.json DSH 插件市場索引(format 1)

瀏覽器側通過 deriveSite()、buildFloors() 和 Client apply() 註冊契約把數據推導成視圖模型。

典型用法與驗證

裝好後不需要額外配置,進任意會話切換到“工程現場”即可。要看推導邏輯本身是否成立,可以跑倉庫自帶的純函數測試:

node test/derive.test.mjs

README 記錄的已完成驗證:

  • node --check 通過;
  • package.json / locale JSON 解析通過;
  • deriveSite()、buildFloors() 與 Client apply() 註冊契約的斷言通過,覆蓋空閒、施工、部分完成、全部完成、錯誤返工、多任務樓層摺疊、slot 註冊;
  • 已安裝到 desktop profile,dsh.profile.bundles 包含 @local/dsh-site-view;
  • 運行中的 Host /plugins/events 圖已包含 @local/dsh-site-view,最終客戶端 Bundle 以 200 返回並通過語法檢查;
  • Bundle 清單、locale 與 icon 導出檢查通過。

未完成的驗證:真實瀏覽器中的最終視覺驗收(當前環境沒有可用的頁面控制/截圖通道)。裝上之後應以實際頁面爲準,檢查淺色/深色主題、窄窗口、無 todo 會話與錯誤會話。

適用場景與注意

適合想在長會話中直接看到任務進度、工具活動和輪次消耗的 DSH 用戶。它對模型能力沒有要求,也不改變會話行爲。

幾點需要注意:

  1. 插件以當前 dsh 進程的權限運行,安裝前應先檢查源碼與許可證(MIT),確認第三方索引和 commit pin 可信;
  2. 界面上的進度是會話信號估算,不是精確完成度,不要把它當作驗收清單;
  3. 市場索引是用戶自己添加的,DSH 沒有官方中心市場,社區目錄屬於獨立站點,與 DeepSeek / 幻方無官方從屬關係;
  4. 版本仍是 0.1.0,視覺驗收尚未在真實瀏覽器裏做過,建議先在測試 profile 上裝。

小結

這個插件的價值在於把零散的會話信號收攏成一個統一的工地視圖:todo 變成施工塔樓層,階段變成工序航線,工具調用變成現場動態,進度條變成儀表盤的輪次與令牌。它不替代 todo 列表,而是給長會話補了一塊可掃讀的進度面板。

  • 目錄頁:https://www.skillhub.cn/plugins/LuoTaiyu/dsh-worksite-plugin
  • GitHub:https://github.com/LuoTaiyu/dsh-worksite-plugin
羽毛球分组比赛记分
小程序二维码

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

小夜