前言¶
DeepSeek Harness(DSH)采用插件化架构,允许开发者扩展其功能。在处理地理空间数据时,单纯的命令行交互往往缺乏直观性。dsh-geolibre 旨在解决这一问题,它将 GeoLibre 的地图能力引入 DSH 的 Web GUI,并为智能体提供了操作实时地图的工具接口。
是什么¶
这是一个 DSH 插件(dsh-geolibre),由维护者 baddying 开发,采用 MIT 许可证。它主要做两件事:一是将 GeoJSON/vector 数据渲染为交互式 GeoLibre 地图并同步到会话工程;二是让智能体通过 Agent 工具来操作这张实时地图,包括管理图层、样式、视图,以及运行 GeoLibre 算法和 Whitebox WASM 工具。
安装与启用¶
安装需要修改目标 DSH profile 的配置文件。
- 在
package.json中声明依赖并加入 bundles:
{
"dependencies": { "dsh-geolibre": "0.1.0" },
"dsh": { "profile": { "bundles": ["…", "dsh-geolibre"] } }
}
- 在
cordis.patch.yml中配置插件参数(通常需要指定 Python 环境):
- id: geolibre
config:
geolibreEnv: "" # 留空则自动探测,否则需显式指定 geolibre 包的安装目录
python: "python" # 默认 python 可执行文件
前置依赖:
- Node.js >= 20
- Python 3(需安装 geolibre 包,可通过 pip install geolibre 安装)
核心功能¶
插件在宿主侧提供四个 Agent 工具,并在浏览器侧实现了地图交互界面。
1. 宿主侧 Agent 工具¶
- geolibre_render_map:接收 GeoJSON 数据(文本/本地文件/URL),将其渲染为地图并同步到当前会话工程。
- geolibre_map_status:查询实时地图会话状态,包括图层清单、可见性、当前视图和连接状态。
- geolibre_map_run:向已就绪的地图发送命令并等待结果。支持的命令包括:
getView、getCenter、getBounds、flyTo、fitBounds、zoomToLayer、identify、getLayerFeatures、getSelectedFeatures、getDrawnFeatures、listAlgorithms、runAlgorithm、runModelBuilder、listWhiteboxTools、runWhiteboxTool、toImage等。 - geolibre_map_update:对工程或图层进行整体或局部更新。支持整体替换工程、追加图层、删除/重命名/显隐/改样式图层、移动视图等操作。
2. 浏览器侧实现¶
- 注册「地图」侧边栏 tab,内嵌 GeoLibre 应用。
- 充当 Host(宿主进程)与 iframe 中 GeoLibre 应用之间的双向中继,通过
geolibre:load-project、geolibre:command、state等消息协议进行通信。 - GeoLibre Web App 被同源本地托管在
/dsh-geolibre/app/*,无需依赖外部 CDN。
典型用法¶
Agent 可以直接调用上述工具与地图交互。
-
渲染数据:
智能体接收用户指令,调用geolibre_render_map将 GeoJSON 数据渲染为地图。 -
运行算法:
先通过geolibre_map_run(method="listAlgorithms")查找可用算法,再调用geolibre_map_run(method="runAlgorithm", params={...})执行操作,例如对某个图层做 100km 缓冲。 -
更新视图或图层:
调用geolibre_map_update来更新地图视图(如移到上海)或更新图层样式与数据(如显示所有省会城市)。
注意事项与开发¶
- 工程状态来源:工程和图层状态以 Host 进程内的会话工程为单一事实来源。
- 运行期产物:工作区内的演示工程(
.geolibre-maps/)是运行期产物,不会随包发布。 - 刷新机制:「地图」tab 顶部的刷新按钮会重新挂载 iframe 并载入 Host 当前工程。
- 开发命令:
npm install # 安装开发依赖
npm test # 冒烟测试(纯 Node 检查 + 可选 Python 字节编译)
npm run prepack # 发布前语法检查
短结尾¶
dsh-geolibre 为 DSH 提供了可视化的地图操作能力,结合 GeoLibre 的处理算法与 Whitebox WASM 工具,适合需要在智能体工作流中进行地理空间分析的场景。更多细节可参考其 GitHub 仓库。