dsh-dwg-preview:在 DSH 側邊欄直接預覽 DWG/DXF 工程圖紙

前言

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'(需要整份文件字節,非流式)。流程概要:

  1. 文檔預覽把原始字節交給渲染器(content.kind === 'bytes')。
  2. 瀏覽器半邊將字節 POST 到 /api/dwg-preview/svg,並附帶百分號編碼的文件名頭 x-dwg-name(宿主格式判定不依賴該頭)。
  3. 宿主按內容識別:前 8 字節以 AC10xx 開頭爲 DWG;前 8 KB 內同時出現 SECTION 與 HEADER/ENTITIES 爲 DXF。
  4. 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,任選下列方式之一。

方式一:桌面端插件頁(推薦)

  1. 側欄 插件 → 添加插件(Add plugin);
  2. 在輸入框填寫 spec,例如倉庫地址 https://github.com/linanbuan/dsh-dwg-preview、GitHub 的 Source code (zip)、本機目錄絕對路徑,或將來可能的 npm 包名;
  3. 確認信息後 安裝,完成後 立即啓用。

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 升級後可能需跟進新版本。

典型用法

安裝並啓用後,無需額外配置:

  1. 在 DSH 工作區打開含 .dwg 或 .dxf 的項目;
  2. 在文件樹中點擊圖紙文件;
  3. 右側文檔預覽標籤加載 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜