前言¶
DeepSeek Harness(DSH)桌面端的工作區裏,點開 .dwg 或 .dxf 時,自帶文檔預覽通常只會提示「無法預覽」——它只覆蓋文本與圖片。做 CAD 相關開發、審圖或對照圖紙改代碼時,往往要切到 AutoCAD、LibreCAD 或在線查看器,打斷在 Harness 裏的上下文。
下面介紹社區插件 dsh-dwg-preview(維護者 linanbuan):在右側文檔預覽標籤裏直接顯示矢量圖形,支持拖拽平移、Ctrl/⌘ + 滾輪縮放和適應寬度。解碼與渲染在宿主進程完成,瀏覽器側只展示一張 SVG,不加載第三方查看器庫。
這是什麼¶
dsh-dwg-preview 是 DSH 的客戶端類 bundle 插件(@local/dsh-dwg-preview,當前版本 1.0.0)。它向官方 sidebar-documentpreview 提供的註冊表登記渲染器,按後綴認領 .dwg 與 .dxf;宿主側用 LibreDWG(WebAssembly) 把 DWG 轉成 DXF,再用倉庫內零依賴渲染器 lib/dxf2svg.mjs 生成自包含 SVG。DXF 爲純文本,可不經 LibreDWG 直接進入渲染器。
插件行 id 爲 dwg-preview,預覽槽位爲 sidebar.right.tab.document,body 鍵 @local/dsh-dwg-preview/dwg。本倉庫代碼爲 MIT 許可;若與 @mlightcad/libredwg-web(GPL-3.0)一併打包再分發,組合體受 GPL-3.0 約束。插件目錄頁:skillhub.cn/plugins/linanbuan/dsh-dwg-preview;源碼:github.com/linanbuan/dsh-dwg-preview。
核心功能¶
預覽入口與交互¶
在工作區文件樹中打開 .dwg 或 .dxf,右側文檔預覽標籤即由本插件渲染。工具欄提供放大、縮小、適應寬度,以及當前圖紙的圖元總數;視圖內可拖拽平移,Ctrl/⌘ + 滾輪縮放,普通滾輪仍用於滾動。
接管方式與數據流¶
渲染器聲明後綴 dwg、dxf,priority: 'extension',loading: 'bytes-complete'(需要整份文件字節,非流式)。流程概要:
- 文檔預覽把原始字節交給渲染器(
content.kind === 'bytes')。 - 瀏覽器半邊將字節 POST 到
/api/dwg-preview/svg,並附帶百分號編碼的文件名頭x-dwg-name(宿主格式判定不依賴該頭)。 - 宿主按內容識別:前 8 字節以
AC10xx開頭爲 DWG;前 8 KB 內同時出現SECTION與HEADER/ENTITIES爲 DXF。 - DWG 經 LibreDWG WASM 轉 DXF,再進入
dxfToSvg();結果以 SVG 字符串返回,瀏覽器用 Blob URL 顯示。
LibreDWG 的 wasm 約 9.5 MB,首次預覽 DWG 會懶加載並複用單實例;渲染結果在宿主內存中按 sha1 緩存(最多 6 張,進程退出即失效)。
宿主 API¶
兩條路由掛在 connection 的共享 /api 通道上:
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | /api/dwg-preview/ping |
健康檢查,返回 ok、plugin、cache(已緩存張數) |
| POST | /api/dwg-preview/svg |
成功:200,含 kind、svg、stats;空文件 400 EMPTY;超過 64 MB 413 TOO_LARGE;失敗 500 FAILED |
渲染能力邊界¶
支持的圖元類型包括 LINE、LWPOLYLINE(含 bulge 圓弧)、POLYLINE/VERTEX、CIRCLE、ARC、ELLIPSE、TEXT、MTEXT、ATTRIB、INSERT(嵌套塊與陣列)、HATCH、SOLID/3DFACE、POINT、DIMENSION 等;列表外實體靜默忽略。不畫線型與線寬(實線、非縮放描邊);文字不嵌字體、不做 SHX;只讀,無拾取、圖層開關、標註編輯或打印導出。
瀏覽器半邊客戶端僅 require('react');DWG 解碼依賴 @mlightcad/libredwg-web(^0.7.14),由 profile 的 dependencies 安裝。
安裝與啓用¶
先安裝 DSH 桌面端(deepseek.com/download)。本插件爲標準 bundle,聲明瞭 dsh.bundle.patch 與 dsh.client,任選下列方式之一。
方式一:桌面端插件頁(推薦)¶
- 側欄 插件 → 添加插件(Add plugin);
- 在輸入框填寫 spec,例如倉庫地址
https://github.com/linanbuan/dsh-dwg-preview、GitHub 的 Source code (zip)、本機目錄絕對路徑,或將來可能的 npm 包名; - 確認信息後 安裝,完成後 立即啓用。
Harness 會把包寫入當前 profile 的 dsh.profile.bundles 並掛載宿主半邊,無需手改 profile。
方式二:會話內 Agent¶
將會話中的 Agent 指向倉庫 URL 或本機目錄,由 Agent 調用 plugin_manager(action: install_bundle)完成安裝。
方式三:命令行¶
已安裝 dsh CLI 時:
dsh plugin --profile <profile 名> add <spec>
<spec> 與方式一相同;具體參數以 dsh plugin --help 爲準。
裝上之後¶
- 若提示需要重啓,應 重啓 DeepSeek Harness 應用(非僅刷新頁面),以便宿主半邊加載
/api/dwg-preview/*路由。 - 確認運行:插件頁查看組件是否爲「運行中」,或請求
GET /api/dwg-preview/ping。 - 臨時停用:在
cordis.patch.yml或插件頁開關設置dwg-preview的disabled: true;卸載在插件頁 卸載,會從 profile 依賴與 bundles 中移除。
維護者 README 註明在 Windows 桌面端 + DSH 0.1.7-rc.2 上實測;宿主需 Node >= 20。插件使用的 connection.fetch.register、documentPreviews 等接縫並非穩定公開 API,Harness 升級後可能需跟進新版本。
典型用法¶
安裝並啓用後,無需額外配置:
- 在 DSH 工作區打開含
.dwg或.dxf的項目; - 在文件樹中點擊圖紙文件;
- 右側文檔預覽標籤加載 SVG;用工具欄或手勢調整視圖。
開發者可在倉庫內離線自檢(不依賴 Harness):
node test/selfcheck.mjs
或通過 pnpm test 走 package.json 的 test 腳本;全部通過時輸出 31/31 checks passed。重新生成文檔示例圖:
node tools/make-example.mjs
適用場景與注意¶
適合:在 DSH 裏對照 CAD 圖紙寫代碼、審閱 DXF/DWG、Agent 工作流中需要「點開即看」矢量預覽的場景。
權限與隱私:插件以當前 DSH 宿主進程權限運行;文件字節僅在本機內存中解碼與渲染,不上傳、不寫磁盤(除插件目錄排障用 .mount.log 掛載標記)。安裝前應自行審閱 源碼與許可證;本插件非 DeepSeek 官方插件,不提供服務承諾,Harness 升級後可能失效並以錯誤提示退化,一般不會影響 Harness 啓動。
限制:單文件預覽上限 64 MB;大圖紙會佔用宿主內存並同步佔用 CPU。官方插件管理器不支持自動更新,升級需卸載後重裝;替換已安裝包後宿主半邊需重啓應用才能加載新代碼。列表外圖元不顯示時,應對照 README 中的圖元清單排查。
DSH 生態強調「一切皆插件」;SkillHub 目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-dwg-preview 補上了 DSH 文檔預覽對 CAD 圖紙的空白:宿主解碼、矢量 SVG 展示、只讀輕量交互。若你的工作區裏常有 DWG/DXF,可按上文 spec 安裝並在文件樹中直接打開驗證。
- 目錄頁:https://www.skillhub.cn/plugins/linanbuan/dsh-dwg-preview
- GitHub:https://github.com/linanbuan/dsh-dwg-preview