前言¶
在 DSH 桌面主窗里長時間對話時,主界面往往和 IDE、文檔、瀏覽器疊在一起。想對照屏幕內容提問,要麼來回 Alt+Tab,要麼截圖再粘貼,流程偏碎。DSH 主窗對 window.open 的處理會把 http/https 交給系統瀏覽器並拒絕內嵌第二窗口,宿主進程也沒有 Electron 主進程 API,因此沒法用「再開一個 BrowserWindow」這種常見做法。
dsh-mini 由社區維護者 xiaoxin3309 發佈,分類爲客戶端插件。它把當前會話一鍵彈出成獨立、可置頂的 WebView2 原生小窗,並在 Windows 上提供整屏/框選截圖(小窗自身不出現在畫面裏)、任意程序劃詞後的「問大肥魚」藥丸,以及全局熱鍵等能力。下面按安裝、用法和限制說明如何接入。
這是什麼¶
npm 包名 dsh-mini,當前版本 0.1.18(MIT)。倉庫:https://github.com/xiaoxin3309/dsh-mini;社區目錄頁:https://www.skillhub.cn/plugins/xiaoxin3309/dsh-mini。SkillHub 爲獨立插件目錄站點,與 DeepSeek / 幻方無官方從屬關係。
插件在架構上拆成三塊:宿主側 lib/index.js(註冊 /dsh-mini/* 路由、拼認證地址、起窗與轉發截圖)、瀏覽器側 lib/client.js(主窗註冊「彈出此窗口」按鈕,小窗用 uiWorkspace.openSession 落在當前會話)、以及原生殼 DSH小窗.exe(WinForms + WebView2,自繪標題條、托盤、截圖與劃詞邏輯)。
核心功能¶
會話小窗¶
主窗會話標題欄右側有 ▯「彈出此窗口」。點擊後打開與當前會話同步的置頂小窗;若小窗已存在,再次點擊只會把它提到前面(帶會話參數時才重新導航)。小窗標題條從左到右提供:✕ 關閉、📌 置頂、↔ 回主窗、📷 截整屏、⧉ 框選。
小窗是獨立 WebView2 窗口,沒有主窗 cookie。打開時宿主用 connection.authenticatedUrl() 帶上進程 token,殼在導航前寫入 dsh_hud=1 與 dsh_hud_session=<會話 id>,避免裸地址返回 dsh web authentication required。
截圖¶
兩個截圖鍵在原生殼內完成:先隱藏小窗,再抓屏,PNG 經 base64 和 postMessage 進入頁面,通過 Lexical 粘貼事件寫入輸入框。
| 鍵 | 行爲 |
|---|---|
📷 |
一次截取整個虛擬桌面 |
⧉ |
凍結桌面後框選:移動鼠標可吸附光標下窗口(單擊截窗口、拖拽自由矩形),Esc / 右鍵取消 |
劃詞「問大肥魚」¶
在任意程序裏用鼠標選中文字並鬆開後,光標右下方會出現藍色小藥丸「問大肥魚」。點擊後小窗置前,選中內容以引用塊(每行 > 前綴)插入輸入框。實現依賴低級鼠標鉤子與 UIA / 剪貼板等讀選區策略;管理員窗口(UIPI)內的選區受 Windows 限制,可能讀不到。
常駐服務¶
安裝並啓用 bundle 後,插件會在 DSH 啓動約 2.5 秒後拉起常駐服務(劃詞藥丸、全局熱鍵、系統托盤)。小窗本身仍由「彈出此窗口」按需打開。
HTTP 路由(供集成或排查)¶
| 路由 | 方法 | 作用 |
|---|---|---|
/dsh-mini/open |
POST | {sessionId?} 起小窗或複用已有窗口 |
/dsh-mini/close |
POST | 關閉小窗 |
/dsh-mini/focus |
POST | 重新置頂 |
/dsh-mini/shot |
POST | 截全屏(不含小窗),回 dataURL |
/dsh-mini/state |
GET | 小窗是否在跑 |
/dsh-mini/trace |
GET | 診斷信標寫入 trace.log |
安裝與啓用¶
系統要求(除 Node 與 DSH 外需本機自備):Windows 10 1903+ / 11、x64;.NET Framework 4.7.2+;Microsoft Edge WebView2 Runtime(Win11 多數自帶,Win10 常隨 Edge 已有,缺失時原生殼會提示官方 Evergreen 下載地址);package.json 聲明 "os": ["win32"]。DSH 需 >=0.2.0-rc.1,Node 需 >=20。
從 npm 安裝(README 給出的方式):
cd ~/.dsh/profiles/desktop
npm install dsh-mini
在同一 profile 的 package.json 裏,於 dsh.profile.bundles 末尾增加 "dsh-mini",然後重啓 DSH,或通過 plugin_manager set_bundle 關一次再開一次。裝完默認無需額外配置;請確認本機已安裝 WebView2 Runtime。
首次使用原生 exe 時,插件會把 app/bin/ 下的 exe 與 dll 複製到 %LOCALAPPDATA%\dsh-mini\bin\,運行時數據在同級 bin\data\(如 config.ini、hud.log),以避免 DSH 工作區沙箱限制就地運行可執行文件。
本地改源碼時,可將依賴改爲 link:<倉庫絕對路徑> 後 npm install;改 lib/index.js 需重載 bundle,改 lib/client.js 刷新頁面即可。
配置¶
通過 cordis.patch.yml 補丁項(bundle 自帶):
| 鍵 | 默認 | 說明 |
|---|---|---|
titlePrefix |
DSH 小窗 |
窗口標題 |
width / height |
460 / 560 | 小窗初始尺寸(邏輯像素) |
browserPath |
空 | 僅在沒有 DSH小窗.exe 的回退模式下使用 |
典型用法¶
- 在 DSH 桌面 profile 中按上文完成
npm install與 bundle 啓用,確認 WebView2 Runtime 可用。 - 打開任意會話,點擊標題欄
▯,小窗貼邊置頂顯示同一對話;需要對照其他窗口時用📷或⧉把截圖直接送進輸入框。 - 在其他應用裏選中一段文字,點「問大肥魚」藥丸,在小窗輸入框裏繼續提問。
- 排查問題時查看
%LOCALAPPDATA%\dsh-mini\bin\data\hud.log與trace.log;需要時可調用/dsh-mini/state或/dsh-mini/trace。
適用場景與注意¶
適合在 Windows x64 上長期使用 DSH 桌面版、希望會話窗口始終置頂、並減少截圖與劃詞粘貼步驟的開發者。不適合 macOS / Linux(插件明確限定 win32)。
插件以當前 DSH 進程及其派生子進程的權限運行;劃詞、剪貼板與全局熱鍵行爲與桌面會話綁定。安裝前建議閱讀 倉庫源碼 與 MIT 許可證,自行評估是否滿足安全與合規要求。社區目錄星標數會變動,以各站點當時顯示爲準。
結尾¶
dsh-mini 用 WebView2 原生殼繞開主窗無法內嵌第二窗口的限制,把當前會話、截圖和劃詞提問收進一個可置頂的小窗。更多信息見目錄頁 skillhub.cn/plugins/xiaoxin3309/dsh-mini 與 GitHub xiaoxin3309/dsh-mini。