前言¶
在 DeepSeek Harness(DSH)裏做規劃、測繪或管線類任務時,智能體往往需要先看 DXF/DWG 圖層結構、再查實體或矢量屬性,最後出一張帶版式的分析圖,而不是通用 CAD 預覽。若在插件裏調用 GDAL 或外部轉換器,DSH 沙箱常會拒絕 spawn 子進程(EPERM),QGIS 的 qgis_process 同樣不可用。運維部維護的 dsh-geo-toolkit(GitHub:fengxiforcy/dsh-geo-toolkit)把讀圖、DWG 轉 DXF、版式出圖和 GIS 彙總/緩衝/疊加收進同一套 DSH 插件,解析與空間運算以純 JavaScript 爲主,DWG 轉換走 WebAssembly 的 dwgdxf。下面介紹它的定位、工具清單、安裝方式與典型用法。
這是什麼¶
dsh-geo-toolkit 是 DSH 工作流類插件:面向 GIS + CAD 的數據操作與分析圖,不做總平深化或效果圖,也不追求「通用 DXF 渲染器」——幾何與文字夠讀圖、夠出分析圖即可。社區目錄分類爲「工作流」;倉庫許可證爲 MIT,當前 package 版本爲 0.1.0(以倉庫 package.json 爲準)。插件在 當前 DSH 進程權限 下運行,安裝前建議自行查看源碼與許可證。
核心功能:11 個工具¶
工具通過 DSH 暴露給智能體調用,職責如下(依賴列與 README 一致):
| 工具 | 做什麼 | 依賴 |
|---|---|---|
geo_dxf_info |
DXF 概覽:圖層、實體類型分佈、塊定義、包圍盒、單位推斷 | 純 JS |
geo_dxf_query |
按圖層 / 類型 / 文字關鍵字 / 範圍找實體 | 純 JS |
geo_dwg_convert |
DWG → DXF(R13–R2018) | dwgdxf(WASM) |
geo_map_export |
DXF → 帶版式的分析圖(SVG/PNG/JPG/PDF/PSD,A0–A4,72–600dpi) | 純 JS(resvg 光柵化) |
geo_style_scan |
讀 PSD 版式:文字層級 / 區域 / 生成 style 草稿 | ag-psd |
geo_gis_read |
讀矢量(SHP / GeoJSON / KML):要素、字段、範圍、座標系、面積/長度合計 | 純 JS |
geo_gis_query |
屬性條件 + 範圍矩形篩選,返回命中數與面積/長度合計 | 純 JS |
geo_gis_summary |
按字段分組彙總:每類要素數 / 面積 / 長度 / 佔比 | 純 JS |
geo_gis_buffer |
緩衝:點/線精確(圓角帶),面近似外擴;輸出 GeoJSON | polygon-clipping(vendor) |
geo_gis_overlay |
圖層疊加:intersect / union / difference,輸出 GeoJSON 與面積 | polygon-clipping(vendor) |
geo_selfcheck |
自檢:依賴 / 解析 / 版式 / 五格式輸出 / GIS 讀查與空間運算 / 錯誤路徑 | — |
CAD 側要點¶
- 單位:插件不信
$INSUNITS;geo_dxf_info按圖形跨度推斷單位並標註置信度,座標從不縮放。 - DWG:僅支持 R13–R2018;更老或更新版本會失敗,需 CAD 另存 DXF。
- 出圖:內容與版式分離;內置
planning-a1等 JSON 版式,也可用geo_style_scan從 PSD 抽草稿,或複製styles/planning-a1.json改數值。PNG/JPG/PDF/PSD 光柵化在 worker 線程(workers/map-worker.js)執行,主進程 RSS 超 1500MB 會拒絕任務。
GIS 側要點(純 JS,無 GDAL)¶
沙箱內無法 spawn,故 SHP+DBF+PRJ、GeoJSON、KML 均爲自研解析;FileGDB 不支持(需 DSH 外手工處理)。
- 屬性過濾支持 eq/ne/gt/gte/lt/lte/contains;範圍矩形相交。
- 面積單位爲「座標單位²」:經緯度得到的是度²,米制座標纔是平方米。
- 空間運算:
geo_gis_summary精確分組;geo_gis_buffer點線精確、面爲近似外擴;geo_gis_overlay對面做 intersect/union/difference(點線需先緩衝)。
組合示例(README):buffer 出 GeoJSON → overlay 裁切 → summary 彙總,可串成「道路兩側 10 米內、按用地性質統計面積」一類流程。
安裝與啓用¶
需 CHG(Change)環境。發佈後從 npm 安裝:
dsh plugin --profile desktop add dsh-geo-toolkit
本地開發可在 profile 的 package.json 增加 file:/path/to/dsh-geo-toolkit,並在 dsh.profile.bundles 追加 dsh-geo-toolkit,重啓 DSH 生效。Node 引擎要求:^22.19 || >=24。
典型用法¶
DXF 出分析圖¶
指定 DXF、版式名、標題與輸出格式:
geo_map_export({ path: "a.dxf", style: "planning-a1", title: "...", subtitle: "03-4 ...", format: "png", dpi: 300 })
format 可爲 svg、png、jpg、pdf、psd;psd 爲分層輸出,文字層帶像素以便 Photoshop 直接可見。
從 PSD 讀版式草稿¶
geo_style_scan({ path: "示例.psd", out: "styles/from-psd-x.json" })
輸出畫布尺寸、文字層級與區域分佈,並寫入可編輯的版式 JSON。多圖同頁版式當前引擎不支持,掃描結果會說明邊界。
本地冒煙測試(不依賴 DSH)¶
node test/smoke.test.mjs
手測單個 DXF 解析:
node -e "import('./tools/dxf-info.js').then(m=>m.execute({path:'/path/to/a.dxf',includeText:true,explode:true})).then(r=>console.log(r.text))"
適用場景與注意¶
適合:在 DSH 智能體工作流裏做 DXF/DWG 信息提取、DWG 轉 DXF、規劃類分析圖導出、SHP/GeoJSON/KML 的讀查彙總與面疊加分析。
務必注意:
- 插件以當前 dsh 進程權限運行;安裝前應檢查 GitHub 倉庫 源碼與 MIT 許可證。
- 大圖 DXF(如 README 中 48MB、7108 實體)解析約 0.9s,展開塊後內存約翻倍;工具超時 120s。文字超過
maxTexts(默認 400)會跳過並在結果中報數。 - 社區目錄 skillhub.cn 插件頁 與 DeepSeek / 幻方無官方從屬關係,DSH 生態理念是「一切皆插件」,本文事實以倉庫 README 爲準。
結尾¶
dsh-geo-toolkit 把 CAD 讀圖、DWG 轉換、版式分析圖與純 JS GIS 運算放進同一 DSH 插件,規避沙箱內子進程與 GDAL 的限制。需要試用或貢獻代碼時,可打開社區目錄頁與 GitHub 倉庫對照工具表與已知限制章節。
- 目錄頁:https://www.skillhub.cn/plugins/fengxiforcy/dsh-geo-toolkit
- GitHub:https://github.com/fengxiforcy/dsh-geo-toolkit