前言¶
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()與 Clientapply()註冊契約的斷言通過,覆蓋空閒、施工、部分完成、全部完成、錯誤返工、多任務樓層摺疊、slot 註冊;- 已安裝到
desktopprofile,dsh.profile.bundles包含@local/dsh-site-view; - 運行中的 Host
/plugins/events圖已包含@local/dsh-site-view,最終客戶端 Bundle 以200返回並通過語法檢查; - Bundle 清單、locale 與 icon 導出檢查通過。
未完成的驗證:真實瀏覽器中的最終視覺驗收(當前環境沒有可用的頁面控制/截圖通道)。裝上之後應以實際頁面爲準,檢查淺色/深色主題、窄窗口、無 todo 會話與錯誤會話。
適用場景與注意¶
適合想在長會話中直接看到任務進度、工具活動和輪次消耗的 DSH 用戶。它對模型能力沒有要求,也不改變會話行爲。
幾點需要注意:
- 插件以當前 dsh 進程的權限運行,安裝前應先檢查源碼與許可證(MIT),確認第三方索引和 commit pin 可信;
- 界面上的進度是會話信號估算,不是精確完成度,不要把它當作驗收清單;
- 市場索引是用戶自己添加的,DSH 沒有官方中心市場,社區目錄屬於獨立站點,與 DeepSeek / 幻方無官方從屬關係;
- 版本仍是
0.1.0,視覺驗收尚未在真實瀏覽器裏做過,建議先在測試 profile 上裝。
小結¶
這個插件的價值在於把零散的會話信號收攏成一個統一的工地視圖:todo 變成施工塔樓層,階段變成工序航線,工具調用變成現場動態,進度條變成儀表盤的輪次與令牌。它不替代 todo 列表,而是給長會話補了一塊可掃讀的進度面板。
- 目錄頁:https://www.skillhub.cn/plugins/LuoTaiyu/dsh-worksite-plugin
- GitHub:https://github.com/LuoTaiyu/dsh-worksite-plugin