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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye