Shippy:构建高风险海事AI代理的架构与经验教训

Shippy:构建高风险海事AI代理的架构与经验教训

TL;DR

Hugging Face 和 Ai2 推出了 Shippy,这是一个专为高风险海事领域感知设计的海事 AI 代理。为了在错误数据可能导致资源浪费或安全风险的环境中确保可靠性,Shippy 采用了将人格与能力分离的模块化架构,使用确定性 CLI 工具来接口实时数据,并在隔离的用户沙盒中运行。

Agent 解剖:Soul、Skills 和 Config

Shippy 被结构为三个不同的组件,以确保版本控制、可审计性和灵活性:

  • Soul:定义代理人格和行为边界的系统提示。这包括显式约束,例如拒绝进行法律判断或超出可用数据进行推测。
  • Skills:定义为带有结构化前置元数据的纯 Markdown 文件(遵循 agent-skills 规范),skills 提供特定任务的说明。当前功能包括查询 Skylight API 以获取船舶数据和事件、查询专属经济区(EEZ)和海洋保护区(MPA)边界、解释船舶轨迹数据以及生成交互式地图链接。
  • Config:确定代理 harness(OpenClaw)和 LLM(目前为 Claude Opus 4.6)的运行时设置。

这些组件被打包到一个版本化的 Docker 镜像中,使开发者可以通过配置更换模型或 harness,而无需重新构建整个代理。

确定性工具用于非确定性代理

为了减轻 LLM 的非确定性,Shippy 不会发出原始 API 调用。相反,它通过一个专门构建的自文档 CLI 与 Skylight 平台进行交互。

CLI 层

直接的 API 调用经常导致分页格式错误、几何编码错误和错误的过滤器类型。Skylight CLI 将此复杂性折叠为类型化的过滤器标志(例如 skylight events search),内部处理身份验证和分页。为了避免管道缓冲区限制并确保程序化访问,CLI 将所有输出写入磁盘上的本地 JSON 文件。

API 层

在 CLI 下方是一个具有类型化 schema 和字段级描述的标准化 API。这种分层方法——Typed API $ ightarrow$ Deterministic CLI $ ightarrow$ Agent Skills——使每个组件能够独立测试,从而在每个阶段缩小错误范围。

通过 Mothership 进行沙箱托管与隔离

由于 Shippy 服务于全球 70 个国家的政府机构和非政府组织,严格的数据隔离是必需的。Ai2 开发了 Mothership,这是一个代理托管平台,为每个用户会话提供专用的临时 Kubernetes 部署。

  • 会话隔离:每个用户会话会启动一组包含代理运行时、skills 和 Skylight CLI 的 pod。
  • 安全:用户的 Skylight JWT 会在供应时注入,以将 API 调用范围限定为其特定数据。网络访问仅限于必要服务,分析过程中写入的文件会在会话结束时删除。
  • 能力:在此沙盒内,代理可以安装依赖项、运行代码并拉取数据集进行多步骤分析,而不会导致跨用户数据泄露。

评估代理性能而非模型性能

与其依赖静态的通用基准,Ai2 使用 Harbor 评估框架将 Shippy 作为一个完整的系统(模型、skills 和沙盒)与实时数据进行评估。

评估流程

领域专家创建带有加权标准的场景和评分规则。例如,捕鱼事件查询优先考虑数据准确性和边界解析,而非响应风格。该流程遵循特定的管道:

  1. 在沙盒中执行自然语言提示。
  2. LLM 评判者对每个标准从 0 到 1 进行评分,并给出书面理由。
  3. 加权总分与固定通过阈值进行比较。

发现与迭代

最近的评估确定了特定的失败模式,例如代理越过战略建议而非决策支持的范围,边界简化导致在几何敏感查询中遗漏事件,以及幻觉出现不存在的 CLI 命令。这些结果直接推动下一次 skills 改进的迭代。

未来路线图

Ai2 正在通过三个主要方向扩展 Shippy 的能力:

  • Agent 驱动的 UI 控制:使 Shippy 能够直接操作 Skylight 地图(调整过滤器和时间范围),而不仅仅是提供链接。
  • 模型路由:实施一个系统,将简单的查找路由到更小、更快的模型,同时为复杂调查保留前沿模型。
  • 跨线程记忆:开发持久化记忆,使代理能够在不同对话线程中记住用户特定的上下文(例如分析师的管辖权)。

Sources