前言¶
在 DeepSeek Harness(DSH)裏做插件或改界面時,經常需要看改完後的 UI 是否生效。瀏覽器形態可以靠地址欄或開發者工具刷新;桌面端沒有地址欄,菜單裏也沒有「刷新」項,只能整應用重啓,對話和工作區雖在宿主進程裏,但來回重啓仍然打斷開發節奏。下面介紹社區插件 dsh-re(維護者 lux09947-cmyk,分類:客戶端):在桌面端標題欄「編輯」右側增加「↻ 刷新」,只重載當前頁面,不重啓應用、不斷會話。
這是什麼¶
dsh-re 是純宿主側插件,不依賴 dsh.client,瀏覽器半邊不參與。它在 DeepSeek Harness 桌面端頂部標題欄、「應用」「編輯」同一套樣式區域裏增加第三個按鈕「↻ 刷新」;點擊後等價於重新加載當前頁面,對話、工作區、正在跑的會話仍在宿主進程中,不受影響。拿不到標題欄菜單時(例如在瀏覽器裏跑 dsh web,或外殼菜單欄尚未出現),會退回右上角的浮動藥丸,提供「↻ 刷新」「⇕ 換角落」「✕ 隱藏」(隱藏狀態寫入 localStorage)。
核心功能¶
- 標題欄刷新:優先掛進外殼菜單欄
[data-windows-menu]的 shadow root 內[role="menubar"],成爲「編輯」後面的按鈕,樣式與「應用 / 編輯」一致。 - 降級 UI:菜單欄約 10 秒內仍不可用時,使用角落藥丸;2 秒一次的看門狗會自愈重掛,且不會重複掛載第二顆按鈕。
- 自檢接口:掛載成功後會向
POST /api/dsh-re/ui-ping回傳(帶where=titlebar|corner、userAgent);GET /api/dsh-re/status可免認證讀取,用於判斷按鈕是否已進入桌面窗口。 - 靜態資源熱更新:宿主暴露
GET /api/dsh-re/ui.js,每次現讀盤並帶no-store,因此日常只改lib/ui.js時點刷新即可生效;換插件或改注入邏輯則須整應用重啓一次(注入表在宿主啓動時緩存,點刷新拿不到新表)。
安裝與啓用¶
DSH 社區插件目錄獨立於 DeepSeek / 幻方,安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證;插件以當前 dsh 進程權限運行。
- 在已安裝 DeepSeek Harness 桌面 profile 的環境中執行下列命令之一:
# 從 npm(發佈後)
dsh plugin --profile desktop add dsh-re
# 或直接從 GitHub
dsh plugin --profile desktop add github:LUX09947-CMYK/dsh-re
- 裝完後重啓一次應用(不是點刷新按鈕):首次註冊
webserver/index-inject注入行必須靠這次重啓寫入宿主緩存。 - 之後若只修改插件內的
lib/ui.js,點標題欄或藥丸上的「↻ 刷新」即可看到界面變化。
引擎要求:dsh.engines.dsh: >=0.2.0-rc.1。README 記載實測環境爲 DeepSeek Harness 桌面端 0.2.0-rc.2(Electron 44)。
典型用法¶
- 日常開發 UI:改
lib/ui.js→ 在桌面窗口點「↻ 刷新」→ 確認 menubar 或藥丸上的行爲是否符合預期。 - 確認是否掛進標題欄:請求
GET /api/dsh-re/status,不必人工猜窗口狀態。 - 若曾點藥丸「✕」隱藏:清除 localStorage 鍵
dsh-re-ui:hidden後刷新,按鈕會再次出現。
卸載:
dsh plugin --profile desktop remove dsh-re
適用場景與注意¶
適合誰:主要在 desktop profile 下開發 DSH 插件或調試注入 UI 的開發者;需要頻繁看界面迭代、又不想整應用重啓的場景。
平臺差異:僅 Windows 桌面外殼具備那條標題欄菜單欄;其它平臺或瀏覽器形態自動走角落藥丸,刷新功能本身不受影響。
安全與信任:與其它 DSH 插件一樣,宿主代碼會在應用啓動路徑中註冊路由與 index 注入,安裝前應閱讀 lib/index.js、lib/ui.js 及 cordis.patch.yml,確認行爲符合預期。
工作原理摘要(便於排查):宿主 lib/index.js 在 apply() 開頭向 webserver/index-inject 推內聯 script,由頁面加載 /api/dsh-re/ui.js;桌面端 tapIndex() 不生效,且不能用會拖垮 __DSH_BOOT_READY__ 的 script-src 異步加載方式,因此採用內聯 script 行且在 apply() 裏不能依賴會推遲執行的 object 級 inject。
結尾¶
dsh-re 解決的是桌面端「沒有刷新入口」這一具體缺口:一顆與原生菜單同風格的按鈕,或等價的角落藥丸,讓 UI 迭代回到「改文件 → 刷新頁面」的節奏。社區目錄頁:lux09947-cmyk/dsh-re;源碼與詳細說明:GitHub — LUX09947-CMYK/dsh-re。