导语

让对话模型控制三维地球,最容易演变成一个看起来很炫却难以审计的演示:它可能移动镜头、加载数据,也可能生成任意脚本去改动场景。CesiumGS 的 CesiumJS AI Starter App 给出了一条更稳妥的实现路径:低风险能力走结构化工具,高自由度代码必须经过用户批准、服务端检查和浏览器端隔离执行。对需要把 Agent 接入三维 GIS 的团队,这比把模型输出直接交给 Viewer 更有参考价值。

可核查事实

  • CesiumJS AI Starter App 是把 CesiumJS 三维地球与 LLM 聊天界面配对的可运行起步项目。
  • 项目使用结构化工具调用驱动地球,例如 fly to Paris 的镜头飞行请求。
  • 所有推理在 Node.js API 服务端进行,模型服务凭据不会发送到浏览器。
  • 复杂场景请求会走 executeCesiumCode,并先显示意图等待用户批准或拒绝。
  • 批准后,后端生成并静态验证 CesiumJS 代码片段,前端在新的 QuickJS-WASM 沙箱中执行,沙箱具有内存和时限约束。
  • generateCzml 为时态场景生成并验证 CZML 声明式数据,同样经过人工批准,但不需要代码沙箱。
  • Viewer 工具通过 Server-Sent Events 流式发送到浏览器,并针对实时 Viewer 执行。
  • 项目中的 MCP 工具默认要求用户批准,原因是外部 MCP 服务器的工具代码不受该应用控制。

以上事实来自项目 README。它是起步项目和架构示例,不应被当作已经覆盖全部生产 GIS 权限、数据治理与运维要求的成品平台。

核心机制

第一层是能力分级。镜头定位、查询视图等动作可被建模成有固定参数的工具;模型只能提供经 schema 约束的经纬度、高度和目标名称。对添加三维建筑、组合图层或编排动画这类无法由少数参数覆盖的请求,应用不直接执行模型文本,而是切换到代码模式并明确显示即将执行的意图。

第二层是批准与隔离。用户批准后,服务端仍要对生成的 CesiumJS 片段做静态验证;浏览器端则在新的 QuickJS-WASM 运行时执行,依靠内存上限、截止时间和受保护的 Viewer 桥接减少生成代码直接接触页面环境的范围。静态检查是纵深防御,不能替代运行时隔离,两者缺一不可。

第三层是把代码和数据分开处理。CZML 是声明式时态场景描述,不是任意 JavaScript,因此 generateCzml 可以验证数据再交给 CzmlDataSource 加载。它依然需要人工批准,因为数据可能造成误导性展示、资源消耗或不符合任务范围,但其攻击面与任意代码不同。

GIS 场景与实施路径

三维 GIS Agent 可先只开放镜头飞行、图层可见性、实体查询和空间量测等参数化操作。每次调用要记录操作者、时间、数据集版本、作用范围与结果;对于飞行到指定坐标这类动作,输入 schema 和权限过滤通常足够。

当需求变为按自然语言添加模型、加载外部资源、计算轨迹并生成动画时,系统应升级到批准流程。界面需要先展示数据来源、将要加载的资源、预计影响的图层和生成意图。服务端对允许 API、资源域名和对象类型做验证,客户端将代码置于独立运行时,并限制网络访问、执行时间和可调用的 Viewer 方法。

对于卫星轨迹、车辆回放和传感器时序,优先采用 CZML 或其他经过校验的声明式数据格式。若数据集涉及敏感位置、实时目标或版权影像,批准页面还要显示访问级别和共享限制。模型不应拥有绕过这些检查的后门工具。

可执行建议

  1. 将三维 GIS 能力分成查询、受限编辑和任意代码三类,默认只开放查询与固定参数工具。
  2. 为每个工具定义输入 schema、空间范围、允许数据集和调用审计,拒绝把自然语言直接作为 Viewer 脚本执行。
  3. 代码模式先让用户看到意图、资源和影响范围;批准后仍执行服务端静态检查与客户端隔离。
  4. 动态轨迹和时态表达优先走 CZML 等声明式格式,并对实体数、时间窗、文件大小和资源域名做限制。
  5. 接入 MCP 或浏览器内工具时默认要求显式批准,并按用户、项目和数据权限动态缩小工具目录。

资料来源与数据口径

本文只依据 CesiumGS CesiumJS AI Starter App 的 README 核对工具调用、批准检查点、QuickJS-WASM、CZML、SSE 与 MCP 默认批准行为。文中关于三维 GIS 权限、审计和资源限制的内容是从该架构延伸出的实施建议,不表示该示例已经替用户完成生产部署。

风险边界

人工批准不能让不可信代码自动变得安全,静态验证也无法证明所有运行时行为正确。沙箱需要持续维护,外部数据源与 MCP 服务器仍可能携带恶意或错误内容。三维场景中的视觉呈现也不能替代坐标精度、数据时效、飞行安全或专业业务判断;这些约束必须由数据治理和领域流程独立保障。

结论

三维 GIS Agent 的关键不是让模型能操作多少 CesiumJS API,而是让每种能力拥有与风险相称的边界。结构化工具负责可预测动作,批准和验证守住高风险转换,沙箱限制代码影响面,声明式数据减少不必要的任意执行。沿着这条分层路径,三维地球才可能从对话演示走向可审计的工作界面。

参考来源

  1. CesiumGS,CesiumJS AI Starter App README。https://github.com/CesiumGS/cesiumjs-ai-starter-app