构建Shippy:AI代理在海洋安全领域的经验教训
Shippy是一个用于实时海洋领域感知的AI代理,其设计注重可靠性、模块化和可审计性。文章详细介绍了其架构:由“灵魂”(系统提示)、技能(结构化Markdown文件)和配置组成。通过专用CLI与Skylight API交互,并使用Mothership平台进行沙盒托管和用户隔离。评估系统针对真实场景和加权标准对整体代理进行评分。未来计划包括代理驱动的UI控制、模型路由和跨线程记忆。
Shippy是一个用于实时海洋领域感知的AI代理,其核心目标是提供高可靠性的决策支持。在海洋分析中,错误的答案可能导致巡逻船驶向错误方向,浪费稀缺资源并危及人员安全。因此,Skylight团队在构建Shippy时,重点不在于模型本身,而在于构建一个值得信赖的系统——确保答案正确、不越界,并能应对广泛的任务场景。
Shippy的架构由三部分组成:灵魂(soul)、技能(skills)和配置(config)。灵魂是系统提示,定义Shippy的角色和行为边界;技能是处理特定请求的指令,以Markdown文件形式存在,遵循与Claude Code等工具相同的规范;配置包括代理框架(OpenClaw)、LLM(当前为Claude Opus 4.6)和运行时设置。三者打包为Docker镜像,实现版本化部署。
与Skylight API的交互通过专用CLI实现,而非让代理直接构造API调用。Skylight API参数复杂,早期原型中代理常产生细微错误。CLI将复杂性封装为简单的命令(如skylight events search),处理认证、分页和结构化输出,并自带帮助文档和错误信息。输出写入本地JSON文件,避免管道缓冲限制。
用户隔离是Shippy的另一关键设计。Skylight服务于70多个国家的数百个政府机构和非政府组织,每个用户的数据和对话历史必须严格隔离。为此,团队构建了Mothership代理托管平台,为每个用户会话提供独立的Kubernetes部署。用户打开对话时,系统启动一组包含代理运行时、技能和CLI的Pod,并以用户的JWT令牌注入,确保API调用限于该用户数据。代理写入的文件仅存在于会话内,网络层面也限制访问范围。
评估方面,Shippy不依赖静态基准,而是构建了针对整体代理(包括模型、技能和沙盒)的评估系统。领域专家编写场景和评分标准,由LLM评判对每个标准打分(0-1),加权汇总后与通过阈值比较。评估通过Harbor框架执行,每个任务在真实Shippy会话中运行,结果记录时间戳并对比历史版本。一旦技能、模型或数据变化,评估套件自动重新运行,防止回归。最新运行显示,Shippy在数据检索和安全约束任务上表现一致,但在巡逻规划任务中有时越界,几何查询存在边界简化问题,还有一次虚构了不存在的CLI命令。这些直接指导了下一轮改进。
未来方向包括:代理驱动的UI控制,让Shippy直接操作Skylight地图;模型路由,简单查询使用较小模型以节省成本;跨线程记忆,使代理能记住用户的偏好和上下文。Shippy的经验已应用于Ai2的其他平台,如野生动物保护平台EarthRanger和地球观测工具集OlmoEarth。Mothership被设计为通用平台,可托管其他代理。Shippy由Ai2的Skylight团队构建,Skylight是一个免费的海洋领域感知平台,已被300多个合作伙伴在70多个国家使用。