Shippy: Architecture and Lessons in Building High-Stakes Maritime AI Agents

Shippy: Architecture and Lessons in Building High-Stakes Maritime AI Agents

TL;DR

Hugging Face와 Ai2는 고위험 운영 도메인 인식을 위해 설계된 해양 AI 에이전트인 Shippy를 선보였습니다. 잘못된 데이터가 자원 낭비나 안전 위험으로 이어질 수 있는 환경에서 신뢰성을 보장하기 위해, Shippy는 페르소나와 역량을 분리하는 모듈형 아키텍처를 활용하고, 실시간 데이터와 인터페이스하기 위해 결정론적 CLI 도구를 사용하며, 격리된 사용자 샌드박스 내에서 작동합니다.

Agent Anatomy: Soul, Skills, and Config

Shippy는 버전 관리, 감사 가능성 및 유연성을 보장하기 위해 세 가지 별개의 구성 요소로 구조화되어 있습니다:

  • Soul: 에이전트의 페르소나와 행동 경계를 정의하는 시스템 프롬프트입니다. 여기에는 법적 판단을 거부하거나 가용한 데이터 이상의 추측을 하지 않는 것과 같은 명시적인 제약 조건이 포함됩니다.
  • Skills: 구조화된 frontmatter(agent-skills spec 준수)를 가진 일반 마크다운 파일로 정의되며, 특정 작업에 대한 지침을 제공합니다. 현재 역량에는 선박 데이터 및 이벤트를 위한 Skylight API 쿼리, 배타적 경제 수역(EEZ) 및 해양 보호 구역(MPA) 경계 조회, 선박 항적 데이터 해석, 대화형 지도 링크 생성 등이 포함됩니다.
  • Config: 에이전트 하네스(OpenClaw)와 LLM(현재 Claude Opus 4.6)을 결정하는 런타임 설정입니다.

이러한 구성 요소들은 버전 관리된 Docker 이미지로 패키징되어, 개발자가 전체 에이전트를 다시 빌드하지 않고도 구성 변경을 통해 모델이나 하네스를 교체할 수 있도록 합니다.

Deterministic Tools for Nondeterministic Agents

LLM의 비결정론적 특성을 완화하기 위해, Shippy는 가공되지 않은 API 호출을 실행하지 않습니다. 대신, 목적에 맞게 제작된 자기 문서화(self-documenting) CLI를 통해 Skylight 플랫폼과 상호작용합니다.

The CLI Layer

직접적인 API 호출은 종종 잘못된 페이지네이션, 기하학적 인코딩 오류 및 잘못된 필터 유형을 초래했습니다. Skylight CLI는 이러한 복잡성을 타입화된 필터 플래그(예: skylight events search)로 압축하여 인증 및 페이지네이션을 내부적으로 처리합니다. 파이프 버퍼 제한을 피하고 프로그래밍 방식의 액세스를 보장하기 위해, CLI는 모든 출력을 디스크의 로컬 JSON 파일에 기록합니다.

The API Layer

CLI 하단에는 타입화된 스키마와 필드 수준의 설명이 있는 표준화된 API가 있습니다. 이러한 계층적 접근 방식(Typed API $\rightarrow$ Deterministic CLI $\rightarrow$ Agent Skills)을 통해 각 구성 요소를 독립적으로 테스트할 수 있어, 각 단계에서의 오류 범위를 좁힐 수 있습니다.

Sandboxed Hosting and Isolation via Mothership

Shippy는 70개국의 정부 기관 및 NGO에 서비스를 제공하므로 엄격한 데이터 격리가 필수적입니다. Ai2는 모든 사용자 세션에 대해 전용의 일시적인 Kubernetes 배포를 프로비저닝하는 에이전트 호스팅 플랫폼인 Mothership을 개발했습니다.

  • Session Isolation: 각 사용자 세션은 에이전트 런타임, skills 및 Skylight CLI를 포함하는 일련의 pod를 실행합니다.
  • Security: 사용자의 Skylight JWT는 프로비저닝 시점에 주입되어 API 호출 범위를 특정 데이터로 제한합니다. 네트워크 액세스는 필요한 서비스로 제한되며, 분석 중에 작성된 파일은 세션이 종료되면 삭제됩니다.
  • Capabilities: 이 샌드박스 내에서 에이전트는 사용자 간 데이터 유출 위험 없이 다단계 분석을 위해 종속성을 설치하고, 코드를 실행하며, 데이터 세트를 가져올 수 있습니다.

Evaluating Agent Performance over Model Performance

Ai2는 정적인 범용 벤치마크에 의존하는 대신, Harbor 평가 프레임워크를 사용하여 실시간 데이터에 대해 완전한 시스템(모델, skills 및 샌드박스)으로서 Shippy를 평가합니다.

The Evaluation Pipeline

전문가들이 가중치가 부여된 기준을 가진 시나리오와 루브릭을 작성합니다. 예를 들어, 어업 이벤트 쿼리는 응답 스타일보다 데이터 정확성과 경계 해상도에 우선순위를 둡니다. 프로세스는 특정 파이프라인을 따릅니다:

  1. 자연어 프롬프트가 샌드박스에서 실행됩니다.
  2. LLM 판사가 서술된 이유와 함께 각 기준에 대해 0에서 1 사이의 점수를 매깁니다.
  3. 가중치가 적용된 집계 값이 고정된 통과 임계값과 비교됩니다.

Findings and Iteration

최근 평가에서는 에이전트가 의사 결정 지원이 아닌 전술적 권고를 수행하려 하거나, 경계 단순화로 인해 기하학적 민감 쿼리에서 이벤트를 놓치거나, 존재하지 않는 CLI 명령어를 환각(hallucination)하는 것과 같은 특정 실패 모드가 식별되었습니다. 이러한 결과는 다음 단계의 skill 개선을 직접적으로 이끕니다.

Future Roadmap

Ai2는 세 가지 주요 초점을 통해 Shippy의 역량을 확장하고 있습니다:

  • Agent-driven UI control: Shippy가 단순히 링크를 제공하는 것을 넘어 Skylight 지도를 직접 조작(필터 및 시간 범위 조정)할 수 있도록 합니다.
  • Model routing: 단순 조회는 작고 빠른 모델로 라우팅하고, 복잡한 조사에는 프런티어 모델을 예약하는 시스템을 구현합니다.
  • Cross-thread memory: 에이전트가 서로 다른 대화 스레드 전반에 걸쳐 사용자별 컨텍스트(예: 분석가의 관할 구역)를 기억할 수 있도록 지속적인 메모리를 개발합니다.

Sources