dsh-webgis

DSH PLUGIN视觉与多模态

仓库 Mekansm1/DSH-WebGIS · npm dsh-webgis

视觉与多模态 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 嵌入完整 GIS 工作台,让模型通过对话加载地图数据、读懂地图并执行缓冲区、热力与空间统计等分析。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 4 复刻 1 · 未关闭 issue 0
最近更新 2026-10-01 创建于 2026-09-06
README 17.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add [email protected]
兼容 DSH 版本0.2.0-rc.2 等 4 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@^4.0.4、@deepseek-ai/dsh-client-locale@^0.2.0-rc.2 等 13 个需要同时安装的同级依赖
npm 包名dsh-webgis可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-webgis:把 GIS 工作台搬进 DeepSeek Harness 对话的 DSH plugin

  • 对话式 GIS 空间分析
  • 60+ 可调用地理处理工具
  • 海量 CSV/SHP 流畅渲染
  • 底图矢量要素提取
  • 绘制与 SHP/GeoJSON 导入导出

适用场景

视觉识别

上游标签

dshdsh-plugindsh-plugin-marketdsh-pluginsdsh-skillgisgis-datagis-projectwebgis

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

视觉与多模态
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Mekansm1仓库 DSH-WebGIS · 默认分支 main
分类视觉与多模态vision
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue4 / 1 / 0收录时的数值,非实时
创建 / 更新2026-09-06 · 2026-10-01最后推送 2026-10-01
本站收录2026-09-08首次进入本站目录的时间

README 全文

17.9 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-webgis

A WebGIS plugin that lets LLMs truly see the geographic world. Built on DeepSeek Harness (DSH), it embeds a full GIS workbench into an AI conversation: models can load map data, understand maps, and run spatial analysis through dialogue. Its long-term goal is genuine 3D spatial understanding.

Author: Frank Wang · Feedback: [email protected]

Compatibility

  • Requires DSH 0.2.0 (built and tested against 0.2.0-rc.2). This release is not compatible with earlier harness versions. If you are on an older DSH, upgrade the harness before updating this plugin.
  • Targets the DSH Web profile and requires the host webServer service. The official Desktop transport is not yet supported.
  • Install: npx --yes @deepseek-ai/dsh plugin --profile web add dsh-webgis
  • pnpm ≥ 10 needs no approve-builds step: DuckDB ships as the official Node Neo package (@duckdb/node-api) with a platform-specific prebuilt binding through optional dependencies. A normal pnpm install is sufficient. The platform still has to be one DuckDB Node Neo supports, and packages must be fetchable from the npm registry.

What's New in 0.2.0

Harness 0.2.0 adaptation

This release retargets the plugin at DSH 0.2.0. No source changes were needed — every harness API this plugin depends on is unchanged from 0.1.7: the slot registry and its dispatch, the shell.overlay and settings.plugins.tab slots, the client module-loader protocol that lazy chunks use, the host DOM the GIS layout measures, and the session-list lookup behind the 0.1.5 fix below.

The upgrade was verified by installing both harness versions side by side and diffing their type declarations and client bundles file by file, then confirming typecheck, build, and the full test suite against 0.2.0.

  • @deepseek-ai/cordis is now ^4.0.4, matching the peer range the 0.2.0 packages declare. (The previous ^4.0.1 allowed the 4.0.2 we had pinned, so npm never raised it.)
  • Everything in the 0.1.5 section below still applies, including the session-alignment fix — 0.2.0 leaves that code untouched.

What's New in 0.1.5

Harness 0.1.7 adaptation

Three harness APIs changed in 0.1.7; all three are adapted here.

  • Current-session lookup. The harness removed SessionListState.current. On 0.1.7 the previous lookup silently returned nothing, so the browser half could not tell the host which conversation it was in. The two sides then wrote to different state buckets, and every tool that waits for the browser to answer — webgis_get_pick, webgis_export_basemap, webgis_export_map — timed out, while the map itself kept rendering, picking and navigating normally. Resolved through the harness's own retainedBy.mainView rule.
  • Plugin settings page. The settings.plugin.item slot was removed — that page is now a read-only inventory of the plugins a deployment ships. The WebGIS card is registered as a tab through settings.plugins.tab instead.
  • Vision chain message source. The shared 'plugin' message-source kind was removed from the harness vocabulary; the plugin now declares its own kind, which is how the harness documents producers extending that union.

Behaviour note: now that the browser half resolves a real session id, the GIS / traditional mode choice is stored per conversation again — it had been collapsing into a single shared slot. Each conversation is selected once.

Tools: unified and auto-routed

  • File loading is one entry point, webgis_load_dataset, covering GeoJSON, CSV, shapefile (.zip / .shp) and GDAL-readable vectors (.gdb / .gpkg / .kml / .tab / .mif / .dgn). CSV options: lonField, latField, geometryColumn, sourceCrs, filter, limit; local *.csv wildcards and SSRF-protected remote CSV downloads are supported.
  • Attribute filters, location filters, field summaries and spatial filtering/aggregation now choose their own data path. A layer displaying a sample is analysed over its full backing data; when the full data is unavailable the tool reports an error instead of quietly answering from the sample.
  • CSV filter defines the layer's real subset — rendering and later analysis both follow it. limit caps displayed rows without discarding data: small files take the first N rows in source order (repeatable), large files sample N at random. Above 100k rows the map renders the complete data by zoom level, and the tool message says so rather than claiming to show N rows.
  • Empty style updates are rejected; a partly invalid style update leaves the layer unchanged. Spatial aggregation reports truncated group/grid output explicitly.
  • Tool descriptions are shorter and standard GIS operations stay separate. 55 tools are exposed.
Previous call Replacement
webgis_load_csv({path, ...}) webgis_load_dataset({url, ...})
webgis_set_layer_color({layer, color}) webgis_set_layer_style({layer, color})
webgis_set_attribute({...}) webgis_edit_field({action: "set", ...})
webgis_add_column({...}) webgis_edit_field({action: "add", ...})
webgis_add_sequence({...}) webgis_edit_field({action: "sequence", ...})

The previous names are no longer registered. webgis_feature_summary returns one requested field statistic; webgis_layer_stats returns a count/distribution overview — both over the complete layer, independent of the display sample. Geometry-dependent operations still need the DuckDB spatial extension on the full-table path.

Failures now say what went wrong

  • A browser-to-host reply that fails is no longer swallowed. Screenshot and basemap replies used to discard transport errors silently, leaving a bare timeout as the only symptom; a failed reply is now reported back and surfaced as a named error.
  • Those timeouts also name their cause — whether the browser never connected, connected but is not attached to this conversation, or is polling normally and simply did not finish the step.

What's New in 0.1.4

  • Added a Worker-based execution path for geometry and spatial-statistics operations, selected by operation-specific workload thresholds.
  • Worker jobs forward cancellation signals, enforce time budgets, and terminate on completion, cancellation or timeout. Plugin disposal requests cleanup of active workers and queued jobs.
  • Added transferable geometry payloads, bounded job concurrency, shared timeout policies, and regression tests for encoding, dispatch, cancellation and timeouts.
  • Added a regular-grid size guard with actionable input guidance.

Scope: small workloads still execute synchronously on the host thread. Workload thresholds do not guarantee that every complex geometry runs off-thread; this release does not promise universally non-blocking execution. Worker payload encoding and result decoding also require host-thread work.

Compatibility: this release targets the DSH Web profile and requires the host's webServer service. The official Desktop transport is not yet supported. That release's DSH 0.1.5-rc1 baseline was superseded in 0.1.5 — see Compatibility.

What's New in 0.1.3

  • Migrated to DuckDB's official Node Neo driver (@duckdb/node-api). Installing the plugin no longer requires compiling the legacy duckdb native module, pnpm approve-builds, or pnpm rebuild duckdb.
  • Optimized very large CSV coordinate-point layers: DuckDB reads coordinates in columnar chunks and builds GeoArrow directly, avoiding huge numbers of { lon, lat } JavaScript objects.
  • Sampling, viewport culling, empty-view behavior, and picking semantics remain unchanged. Line, polygon, and geometry-column layers continue to use the established WKB conversion path.

What's New in 0.1.2

  • Adapted for DSH 0.1.5-rc1: retargeted the new shell layout (the conversation moved into the host main slot) and migrated to the 0.1.5 package set.
  • Export vector features from the basemap. “Export the map data in the current view” extracts real vector-tile features into new point, line, and polygon layers; a request such as “export the rivers” can limit the output to one kind.
  • Added a spatial-statistics suite: Gini, Shannon entropy, and Getis-Ord Gi* hot-spot analysis with Benjamini–Hochberg FDR correction, in addition to Moran's I. Each index inspects fields, reports what it finds, and asks you to confirm inputs before computing.
  • Unified click highlighting: polygons use a deep-blue outline and blue fill, lines use a thick blue stroke, and points use blue dots, always rendered on top.

What's New in 0.1.1

  • Fixed the “API key required” watermark on the default Carto raster basemap.
  • Fixed Carto vector basemaps (Positron / Dark / Voyager) not rendering.
  • Added a Measure tool: line length, snapping to previously drawn vertices, and closing a polygon at its start point to show perimeter and area.
  • Improved loading performance for very large SHP files.

pnpm and the DuckDB runtime

The plugin uses DuckDB's official Node Neo package (@duckdb/node-api). It installs a platform-specific prebuilt binding through optional dependencies, so pnpm ≥ 10 does not need pnpm approve-builds or pnpm rebuild duckdb. A normal pnpm install is sufficient. The target platform must still be supported by DuckDB Node Neo and be able to download packages from the npm registry.

Highlights

  • 🗺️ Conversational GIS — load data, navigate maps, and run spatial analysis through natural-language tool calls
  • 🚀 Smooth massive-data rendering — from million-row local CSV files to database results with hundreds of thousands of rows, a tiered rendering pipeline keeps the map responsive (see Massive Data Loading)
  • 🧮 GIS toolbox — 55 AI-callable tools: buffers, overlays, kernel density, Moran's I, Gini, Shannon entropy, Getis-Ord Gi*, OD matrices, and hex-bin heatmaps
  • 🛰️ Read the basemap too — extract rivers, roads, buildings, place names, and other real vector-basemap features into analysable layers
  • 🖌️ Manual workflows — interactively draw points, lines, and polygons; manage layers; import and export SHP / CSV / GeoJSON
  • 🔌 Multiple data sources — PostGIS, local files, the basemap itself, and online map services

Quick Start

  1. Open DeepSeek Harness and start a new conversation.
  2. Select GIS mode.
  3. Choose your task workspace.
  4. Ask the model, for example: “Load xxx and show it on the map.”

Features

Compute: conversational GIS analysis

Once data is loaded, tell the AI something like “show this as a hex density heatmap” or “which points fall inside this polygon?”. 55 tools can be chained behind the scenes:

  • Construct — buffer, centroid, convex hull, bounding box, dissolve, simplify, explode, smooth, grid, Voronoi, and OD matrices that show origin–destination flows
  • Overlay — clip, intersect, difference, and union
  • Query — attribute filtering, spatial joins, and selection by location
  • Transform — coordinate-system reprojection
  • Spatial statistics — kernel-density heatmaps, average nearest neighbor (ANN), global Moran's I with LISA local clusters, Gini, Shannon entropy, and Getis-Ord Gi* hot-spot analysis
  • Visualization — raw points, planar heatmaps, hex-bin heatmaps, arcs, trips, walls, and radial modes; adjust colors, sizes, and stroke widths
  • Attribute editing — batch-update field values, assign sequence numbers, and add columns
  • Basemap extraction — turn vector-basemap features into layers (see Reading the Basemap)
  • Layer management — list, remove, show/hide, inspect layer details, and view feature statistics

Every result becomes a new live layer that the next tool can continue to process, forming a complete analysis chain.

Indices ask before computing. Statistical tools follow an inspect → confirm → compute loop: a Moran's I request first reports numeric fields, missing-value counts, and the geometry family, then waits for confirmation. If a required parameter is missing, the tool explains what it needs instead of guessing.

Reading the Basemap

Vector basemaps contain real feature data: waterways, roads, buildings, parks, land use, boundaries, points of interest, and place names. The plugin can extract features from tiles in the current view into normal layers:

> - “Export the map data in the current view” → three layers: points / lines / polygons
> - “Export the rivers in this view” → one layer, with same-named segments merged into one feature

The extracted layers behave like any imported data: measure, buffer, and analyse them. This turns visible map content into layers; it is not bulk extraction. Vector tiles are cut by zoom level, so farther zoom levels expose fewer layers, and POIs/buildings generally appear only at city or street zoom. For bulk data, use Geofabrik or Overpass and import a file.

Draw: manual drawing and editing

  • The layer panel lists datasets, analysis results, database results, and imported layers, with show/hide and delete controls
  • The Create button opens a drawing toolbar on demand: points, lines, polygons, Bézier smoothing, and snapping to existing-layer vertices
  • Right-click a layer to inspect its attribute table, export GeoJSON / CSV / SHP, or delete it
  • Import SHP (.shp / .zip), CSV, or GeoJSON; CSV automatically detects a WKT geometry column and otherwise tries longitude/latitude columns

Maps and data services

  • Basemap switcher — Carto Light / Dark / Voyager, OpenFreeMap, and satellite imagery, selectable from the lower-left corner
  • Online overlay services — register WMTS / WMS / XYZ raster services; WMS supports the {bbox-epsg-3857} template
  • Data-source routing — prefer data already on screen, and query the configured database only when needed; the AI does not invent data

Massive Data Loading

From hundreds of rows to millions, the UI should remain responsive. The core idea is “count first, render in tiers, materialize on demand”, rather than pushing everything to the browser at once.

Huge local CSV files (DuckDB):

  • A CSV is loaded once into a DuckDB in-memory table, with millisecond-level filtering afterwards; 1.68 million rows loaded in roughly 2.7 seconds in our tests
  • Large files initially show a sampled view with clustering, while the full table remains in memory for later SQL, conditional, or polygon-fence filtering
  • Coordinate point layers read coordinates in DuckDB columnar chunks and build GeoArrow without million-scale JS row objects; the client still controls fetch volume by zoom tier and viewport
  • Built-in memory management — LRU table eviction plus a memory limit — helps prevent host OOM failures

PostGIS databases:

  • Read-only queries; a count is issued first to decide whether and how to load results
  • Non-4326 geometries are automatically wrapped in ST_Transform; EWKB geometries are converted to GeoJSON for display
  • statement_timeout and read-only transactions prevent slow or misdirected queries from blocking the conversation

Sampling is always transparent: when a large layer displays only a sample, it is labelled “N rows total (sampled)”, and statistics derived from the sample are flagged as such. The AI should never mistake a sample for the full dataset.

Combined with deck.gl's GPU-driven 3D rendering — hex columns, wall extrusions, and OD arcs — hundreds of thousands of rows remain smooth to zoom, filter, and analyse.


Installation and Configuration

Requirements: DSH 0.2.0 with the web profile, plus pnpm on your PATH. (0.2.0 is not compatible with earlier harness versions — see Compatibility.)

dsh plugin --profile web add dsh-webgis
# After installation restart with: dsh web
# Then start a new conversation and select GIS mode.

Optional configuration (Settings → Plugins → the WebGIS tab, or the plugin configuration file cordis.patch.yml):

  • Vision model — provider / model / baseURL / apiKey. Configure this for visual features such as “where is this place?” and reading a map from a screenshot. If the main model is multimodal, the plugin uses it directly and this can remain empty. If the main model is text-only and no vision model is configured, visual tools still return structured coordinate and feature data, but do not analyse images.
  • PostGIS database — host / port / database / user / password. Passwords are stored in DSH's credential store and never written to disk in plaintext.
  • DuckDB thresholds and memory limit.

Example prompts

> - “Load this xxx.shp onto the map”
> - “Are these points spatially clustered? Show them as a hex heatmap”
> - “Filter the points from dataset A that fall inside region B”
> - “Export the map data in the current view”
> - “Is the population of these counties clustered, or random?” (runs Moran's I)
> - “Where is this place?” (the AI captures a screenshot and analyses it)


Roadmap: from 2D maps to the 3D world

  • Phase 1 (in progress): 2D map-vision understanding — the AI reads map content and answers “what is where” and “where is this place”.
  • Phase 2 (in progress): conversational operation and analysis — moving from seeing to computing, closing the load → analyse → visualise loop.
  • Phase 3 (long-term): genuine 3D-world understanding — moving from reading 2D symbols to understanding buildings and terrain, occlusion and spatial relations, and real-world-scale reasoning. Today's 3D visuals — hex columns, wall extrusions, and OD arcs — are only the beginning. The goal is for AI to see, reason, and answer within real 3D scenes with a genuine spatial worldview.

> Long-term vision: not merely describing a picture, but giving the model spatial cognition that understands the 3D world behind the map.

> Note: DeepSeek vision models are still evolving quickly, and vision-related features have not yet received extensive deep testing.

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-webgis 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add [email protected]` 即可。对应的 npm 包名是 `dsh-webgis`。

dsh-webgis 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-webgis 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-webgis 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.7-rc.1、0.1.6-alpha.2。

dsh-webgis 需要什么运行环境?

需要同时安装 @deepseek-ai/cordis@^4.0.4、@deepseek-ai/dsh-client-locale@^0.2.0-rc.2、@deepseek-ai/dsh-client-ui-renderer@^0.2.0-rc.2、@deepseek-ai/dsh-client-ui-session@^0.2.0-rc.2、@deepseek-ai/dsh-client-ui-settings@^0.2.0-rc.2。环境不满足时安装会失败,建议先确认本机版本。

dsh-webgis 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-webgis 有哪些功能?

对话式 GIS 空间分析、60+ 可调用地理处理工具、海量 CSV/SHP 流畅渲染、底图矢量要素提取、绘制与 SHP/GeoJSON 导入导出。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

视觉与多模态
按星标排序,可作替代方案

open-design

open-design

L4 · 沙盒安装通过 10.0 万 星

awesome-gpt-image-2

awesome-gpt-image-2

GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+ 套工业级模板与可复用 Skills,新增 2.5 同提示词对比

L3 · 安装规范通过 3.4 万 星

PicGo

PicGo

L3 · 安装规范通过 2.7 万 星

iPolloWork

iPolloWork

L4 · 沙盒安装通过 6,775 星

modlens

modlens

ModLens 是 DeepSeek Harness 的视觉插件,为纯文本模型外挂视觉能力,粘贴图片即得结构化 JSON 证据(OCR、版面

L5 · 运行验证通过 4,207 星

OpenBiliClaw

OpenBiliClaw

本地私有、开源的自进化跨平台 AI 内容发现 Agent:先理解你,再主动从 B站、小红书、抖音、YouTube、X、知乎、Reddit、微

L4 · 沙盒安装通过 3,398 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。