前言¶
DeepSeek Harness (DSH) 採用插件化架構,擴展了其原生 Web UI 的能力。針對 Typst 文檔的編寫,開發者通常需要在外部工具中查看渲染結果。dsh-typst-preview 插件解決了這個問題,它將 tinymist 的實時預覽能力直接集成到 DSH 的右側邊欄中,提供與內置 Markdown 預覽一致的 Tab 切換體驗。
安裝與啓用¶
此插件需要本地安裝 tinymist 工具。安裝插件後,需重啓 DSH 應用使配置生效。
dsh plugin --profile web add github:Limbo-137/dsh-typst-preview
核心功能¶
插件通過本地啓動 tinymist 進程來處理渲染和語法高亮,不涉及任何遠程調用或數據上傳。
- 文件讀取:僅讀取當前已打開的
.typ文件標籤頁內容,且爲只讀操作,不會修改源文件。 - 網絡行爲:無出站流量,無遙測數據。所有請求均爲同源請求(
/api/typst-preview/*)或迴環連接。 - 命令執行:在本地直接啓動
tinymist二進制文件(用於preview和lsp),不使用 Shell,不進行遠程安裝。 - 環境依賴:不讀取 Token、密鑰或 Cookie,僅用於解析
tinymist路徑和用戶主目錄。
使用方法¶
安裝並重啓後,在 DSH Web UI 中打開右側邊欄(Files),點擊 .typ 文件即可進入預覽。
- 預覽與源碼切換:打開文件後,側邊欄會出現兩個 Tab:Preview 和 Source。
- Preview:這是
tinymist preview渲染的頁面,通過 WebSocket 驅動。當你編寫文檔時,它會實時更新。工具欄提供刷新、顏色模式切換(原始/跟隨系統/反色,狀態保存在localStorage)以及在新標籤頁打開的功能。 - Source:顯示文件源碼,利用
tinymist的語義 Token 進行語法高亮(支持標題、關鍵詞、函數、字符串、數學公式、標籤、註釋及加粗/斜體標記)。支持行號、複製和“加載更多”按鈕(針對大文件)。
若需將 .typ 文件強制回退到原生文本查看器,需修改源碼中 src/client/index.tsx 的 typstTabDefinition(),將 priority 設置爲 'fallback',並調用 openResource(address, { kind: 'typst-preview' })。
權限與限制¶
該插件被視爲“高能力”插件,因此需要在商店中手動審覈通過,而非自動批准。
| 能力範圍 | 具體限制 |
|---|---|
| 文件 | 僅讀取已打開標籤頁的 .typ 文件,不寫入任何內容。 |
| 網絡 | 無出站流量,無遙測。請求爲同源或迴環。 |
| 命令 | 啓動本地 tinymist 二進制文件,不使用 Shell 或遠程安裝。 |
| 憑證 | 不讀取 Token、密鑰或 Cookie。 |
| 生命週期 | 安裝或更新時不運行任何腳本(無 preinstall/install 等鉤子)。 |
外部依賴:必須安裝 tinymist 並將其加入 PATH(或通過 tinymistPath 指定),已驗證版本爲 v0.15.0-rc1。
兼容性與注意事項¶
- DeepSeek Harness 版本:要求 DSH
>=0.1.5-rc.1(具體兼容版本範圍見下文)。 - 桌面端特性:桌面應用通過修改請求頭(
onBeforeSendHeaders)將 WebSocket 的 Origin 重寫爲應用內部 Origin,從而允許建立迴環連接。 - 舊版插件:舊版插件(掛載在
dsh-better-sidebar上)已不兼容,被此新版取代。
兼容性聲明:
package.json 中聲明的 @deepseek-ai/dsh-client-ui-primitives peer 依賴範圍是 DSH 實際強制執行的部分。evaluatePluginCompatibility 會檢查運行時版本是否滿足 semver.satisfies 範圍。
- DSH 版本範圍:
>=0.1.5-rc.1 <0.1.6-0 || >=0.1.7-rc.1 <0.2.0-0 || >=0.2.0-rc.1 <0.3.0-0 - 測試版本:
0.1.5-rc.1,0.1.5-rc.2,0.1.7-rc.2,0.2.0-rc.1均已驗證。
總結¶
dsh-typst-preview 爲 DSH 用戶提供了原生的 Typst 實時預覽能力。它通過本地編譯器和精簡的權限模型,在側邊欄內實現了高效的文檔開發流程。