dsh-geolibre:为 DeepSeek Harness 接入 GeoLibre 交互式地图

前言

DeepSeek Harness(DSH)采用插件化架构,允许开发者扩展其功能。在处理地理空间数据时,单纯的命令行交互往往缺乏直观性。dsh-geolibre 旨在解决这一问题,它将 GeoLibre 的地图能力引入 DSH 的 Web GUI,并为智能体提供了操作实时地图的工具接口。

是什么

这是一个 DSH 插件(dsh-geolibre),由维护者 baddying 开发,采用 MIT 许可证。它主要做两件事:一是将 GeoJSON/vector 数据渲染为交互式 GeoLibre 地图并同步到会话工程;二是让智能体通过 Agent 工具来操作这张实时地图,包括管理图层、样式、视图,以及运行 GeoLibre 算法和 Whitebox WASM 工具。

安装与启用

安装需要修改目标 DSH profile 的配置文件。

  1. 在 package.json 中声明依赖并加入 bundles:
{
  "dependencies": { "dsh-geolibre": "0.1.0" },
  "dsh": { "profile": { "bundles": ["…", "dsh-geolibre"] } }
}
  1. 在 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 可以直接调用上述工具与地图交互。

  1. 渲染数据:
    智能体接收用户指令,调用 geolibre_render_map 将 GeoJSON 数据渲染为地图。

  2. 运行算法:
    先通过 geolibre_map_run(method="listAlgorithms") 查找可用算法,再调用 geolibre_map_run(method="runAlgorithm", params={...}) 执行操作,例如对某个图层做 100km 缓冲。

  3. 更新视图或图层:
    调用 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 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜