Главная/Блог/Гайд/Shippy: Как мы строим надежные…
Гайд10 мин чтения · 15 июля 2026 г.

Shippy: Как мы строим надежные AI-агенты для спасения океана

Разбор архитектуры Shippy от Allen AI: как детерминированные инструменты, изолированные песочницы и специфичные метрики оценки создают ИИ-агента, которому можно доверить жизнь людей.

Shippy: Как мы строим надежные AI-агенты для спасения океана

Представьте себе ситуацию: в открытом океане, в сотнях миль от берега, патрульное судно готово выйти в море. Его экипаж, ресурсы и логистика уже мобилизованы. Решение о выходе принимается на основе данных, которые предоставляет искусственный интеллект. Если ИИ ошибется — отправит судно не туда, пропустит незаконный промысел или, что еще хуже, создаст ложную угрозу — это не просто «неточность в ответе». Это финансовые потери, потраченные впустую ресурсы и, потенциально, риск для жизни людей. Именно с такой высокой ставкой работает команда Skylight от Allen Institute for AI (Ai2), создавая Shippy — морской ИИ-агент для мониторинга в реальном времени.

В этой статье мы подробно разберем, как устроен Shippy, почему в высоконагруженных и критически важных системах (high-stakes domains) архитектура важнее самого языка модели, и какие инженерные решения позволили сделать агента предсказуемым. Мы погрузимся в детали: от «души» и «навыков» агента до изолированных Kubernetes-песочниц и уникальной системы оценки, которая проверяет не только знания модели, но и её поведение в реальном рабочем процессе.

01Анатомия агента: душа, навыки и конфигурация

При проектировании Shippy команда Ai2 отошла от стандартного подхода «взять большую модель и дать ей доступ к API». Вместо этого они разделили архитектуру на три четких слоя, каждый из которых отвечает за свою часть надежности. Это позволяет изолировать ошибки и легко обновлять компоненты системы без риска сломать всю логику.

Первый слой — это «Душа» (Soul). Это системный промпт, который определяет личность агента, его границы поведения и этические рамки. «Душа» явно запрещает Shippy принимать юридические решения о том, нарушает ли судно законы. Это прерогатива человека. Агент также не имеет права спекулировать на основе данных, которых нет. Эти границы зашиты в промпт, а не в веса модели, что делает их прозрачными, аудируемыми и легко редактируемыми.

Второй слой — «Навыки» (Skills). Это инструкции, которые говорят агенту, как именно выполнять конкретные задачи. Навыки Shippy следуют спецификации agent-skills, используемой в таких инструментах, как Claude Code. Они представляют собой обычные markdown-файлы с метаданными, что делает их версионируемыми и понятными для разработчиков. Среди ключевых навыков:

  • Запрос данных через API Skylight (события, данные о судах).
  • Поиск границ Исключительных экономических зон (EEZ) и морских заповедников (MPA).
  • Интерпретация треков судов (позиция и движение), опираясь на классификации моделей Atlantes.
  • Генерация интерактивных ссылок на карту Skylight, позволяющих аналитику мгновенно проверить данные.

Например, когда аналитик спрашивает: «Покажи рыболовную активность в исключительной экономической зоне Панамы за последний месяц», навык не просто ищет ключевые слова. Он сначала разрешает «EEZ Панамы» в полигон границ через API регионов, затем запрашивает события рыболовства внутри этой геометрии, форматирует результат с глубокими ссылками на карту и атрибутирует данные партнеров, таких как Global Fishing Watch. Один запрос может задействовать несколько навыков одновременно, объединяя данные из разных источников в одном диалоговом ходе.

Shippy отвечает на живой запрос о исключительной экономической зоне (EEZ) Ганы. Ответ показывает ход мыслей: источник границ, дата окончания данных, время запроса и глубокая ссылка на карту Skylight для проверки.
Shippy отвечает на живой запрос о исключительной экономической зоне (EEZ) Ганы. Ответ показывает ход мыслей: источник границ, дата окончания данных, время запроса и глубокая ссылка на карту Skylight для проверки.

Третий слой — Конфигурация (Config). Это всё остальное: выбор фреймворка для агентов (в случае Shippy это OpenClaw), выбор базовой модели (сейчас используется Claude Opus 4.6) и runtime-настройки. Секреты, такие как API-ключи, внедряются только во время выполнения. Смена модели или фреймворка — это изменение конфигурации, а не пересборка всего приложения. Это критически важно для гибкости и безопасности.

💡
Почему это важно. Разделение на «Душу», «Навыки» и «Конфигурацию» позволяет команде обновлять логику работы (навыки) или менять «мозги» (модель) независимо друг от друга, не рискуя нарушить этические границы агента.

02Детерминированные инструменты для недетерминированного агента

ИИ-агенты по своей природе недетерминированы. Вы не можете гарантировать, что модель выберет именно тот путь рассуждений, который вы ожидаете. Однако вы можете сделать детерминированными те инструменты, к которым агент обращается. В ранних прототипах Shippy позволяли модели самостоятельно конструировать запросы к API Skylight. Результат был предсказуемо плохим: агент генерировал запросы с ошибками в пагинации, которые молча отбрасывали результаты, путал типы геометрии или возвращал «правдоподобные», но неверные данные из-за неверной интерпретации фильтров.

Решение команды — создать специализированный интерфейс командной строки (CLI) для взаимодействия с API. Вместо того чтобы позволять агенту писать сырые HTTP-запросы, Shippy использует команду вида skylight events search с типизированными флагами. CLI берет на себя всю сложность: аутентификацию, пагинацию, обработку сложных геометрий и структурирование вывода.

Этот CLI также является самодокументируемым. Подробные сообщения об ошибках и справочная информация --help дают агенту (и разработчикам) достаточно контекста для восстановления после сбоев без угадывания. Кроме того, вывод CLI всегда записывается в локальный JSON-файл, а не передается через конвейер оболочки (pipe). Это решает проблемы с лимитами буфера для больших наборов данных и позволяет агенту программно получать доступ к результатам запросов на последующих этапах анализа.

Под капотом CLI лежит стандартизированное API, где различные типы ресурсов (события, суда, регионы, спутниковые снимки) доступны через единые операции search и aggregate. Входы и выходы определены как типизированные схемы с описаниями на уровне полей. Этот многоуровневый подход — типизированное API, детерминированный CLI и навыки агента, ссылающиеся на команды CLI — позволяет тестировать каждый компонент независимо. Каждый слой сужает пространство ошибок для следующего.

03Изолированное хостинг-окружение и безопасность данных

Skylight обслуживает сотни правительственных агентств и НПО в более чем 70 странах. Данные, с которыми работает Shippy, крайне чувствительны. Офицер рыболовства на Филиппинах имеет свои «Области интереса», списки наблюдения за судами и настройки оповещений, привязанные к его аккаунту Skylight. Когда он задает вопрос Shippy, агент должен вернуть именно его данные, а история его разговора никогда не должна быть видна другим пользователям.

Для обеспечения этой изоляции команда Ai2 разработала платформу Mothership. Каждый пользователь взаимодействует с Shippy внутри своей собственной эфемерной (временной) и изолированной сессии. Mothership автоматически выделяет выделенное развертывание Kubernetes для каждой сессии пользователя. Когда пользователь открывает разговор, система запускает набор подов (pods), содержащих среду выполнения агента, его навыки и CLI Skylight.

Архитектура песочницы Mothership: изолированные сессии для каждого пользователя.
Архитектура песочницы Mothership: изолированные сессии для каждого пользователя.

JWT-токен Skylight пользователя внедряется в момент создания сессии, что гарантирует, что все API-вызовы агента ограничены данными этого конкретного пользователя. Файлы, которые агент создает в ходе многошагового анализа, существуют только внутри этой сессии и никогда не передаются между пользователями. Внутри песочницы агент может писать и запускать код, устанавливать зависимости, загружать наборы данных и проводить сложный анализ. На сетевом уровне песочница ограничена только теми сервисами, которые ей необходимы для работы.

⚠️
Важно для локального запуска. Если вы планируете запускать подобные агенты локально или в закрытом контуре, принцип «одна сессия — один изолированный контейнер» является золотым стандартом для предотвращения утечек данных и конфликтов зависимостей.

04Оценка агента, а не просто модели

Большинство существующих бенчмарков оценивают общие языковые модели на статических вопросах. Они не отражают того, как агент ведет себя, когда подключен к реальному рабочему процессу: как он выбирает инструменты, запрашивает живые данные, действует на основе результатов и знает, когда остановиться. Чтобы решить эту проблему, команда Ai2 создала собственную систему оценки, которая оценивает весь агент целиком — модель, навыки и песочницу — в связке с живыми данными.

В их фреймворке эксперты предметной области (SME) пишут сценарии и рубрики (rubrics). Они выбирают критерии, применимые к каждой задаче, и устанавливают их веса, чтобы каждая задача оценивалась по тому, что действительно важно. Например, запрос о событиях рыболовства будет иметь наибольший вес для точности данных, затем разрешение границ и временных рамок, и меньший вес для атрибуции источников и стиля ответа.

Процесс оценки выглядит следующим образом:

  1. Естественный языковой запрос запускается через песочницу.
  2. LLM-судья оценивает каждый критерий рубрики от 0 до 1, предоставляя письменное объяснение, почему ответ был хорошим или плохим.
  3. Взвешенная сумма проверяется против фиксированного порога прохождения.
Обновленный пайплайн оценки (eval pipeline) Shippy.
Обновленный пайплайн оценки (eval pipeline) Shippy.

Задачи выполняются через Harbor — открытую фреймворк для оценки. Команда написала плагин для Harbor, который запускает реальную сессию Shippy на той же версии, которая тестируется, против тех же реальных данных, с которыми столкнулся бы пользователь. Пакет тестов запускается параллельно для конкретной версионной сборки Shippy, создавая файл результатов с временной меткой и отчет об изменениях баллов по сравнению с предыдущим запуском. Версия Shippy, которая регрессирует по критериям оценки, не попадает к конечным пользователям.

Shippy демонстрирует стабильные результаты как в задачах извлечения данных, так и в задачах соблюдения границ (guardrails). Агент корректно отказывается от запросов военной разведки, поддерживает изоляцию данных пользователей и точно атрибутирует источники. Однако в последних запусках были выявлены конкретные проблемы: Shippy иногда переходил тактические рекомендации вместо поддержки принятия решений в задачах планирования патрулирования, упрощение геометрии приводило к пропуску событий в запросах, чувствительных к границам, и в одном случае агент выдумал несуществующую команду CLI. Каждая из этих проблем напрямую informs (информирует) следующий раунд улучшения навыков.

Интерфейс запуска тестового набора Shippy внутри Skylight.
Интерфейс запуска тестового набора Shippy внутри Skylight.

05Что это значит на практике

Опыт создания Shippy предлагает несколько универсальных уроков для всех, кто строит ИИ-агенты для критически важных задач, будь то охрана природы, медицина или финансы.

1. Инструменты важнее модели. Не пытайтесь заставить модель «угадывать» сложные API-вызовы. Создайте детерминированный интерфейс (CLI, SDK или API-обертку), который скрывает сложность. Это снижает вероятность галлюцинаций в синтаксисе запросов.

2. Изоляция — это безопасность. В многопользовательских средах эфемерные, изолированные сессии (как в Mothership) необходимы не только для конфиденциальности, но и для стабильности. Они предотвращают конфликты состояний и утечки данных между пользователями.

3. Оценивайте поведение, а не знания. Стандартные бенчмарки (MMLU, GSM8K) не показывают, как агент работает в реальном мире. Вам нужна система оценки, которая проверяет цепочку действий: выбор инструмента -> выполнение запроса -> интерпретация результата -> форматирование ответа.

4. Прозрачность границ. Четко пропишите в системном промпте, что агент НЕ должен делать. Это проще и надежнее, чем пытаться «выучить» ограничения через дообучение. Аудируемость промптов позволяет быстро реагировать на новые угрозы или изменения в требованиях.

06Куда движется Shippy

Команда Ai2 начинает поэтапный запуск Shippy для ранних пользователей, приглашая их стресс-тестировать систему. В планах на ближайшее будущее:

  • Управление интерфейсом через агента. Сегодня Shippy возвращает ссылки на карту. В будущем он будет управлять картой Skylight напрямую: перемещаться по регионам, применять фильтры и настраивать временные диапазоны.
  • Маршрутизация моделей. Не каждый вопрос требует тяжелой модели. Команда внедряет маршрутизацию, чтобы простые запросы направлялись в более быстрые и легкие модели, а сложные расследования — в мощные модели (вроде Claude Opus).
  • Кросс-поточная память. Сейчас контекст не сохраняется между разными диалогами. Разрабатывается система памяти, которая будет запоминать постоянные факты (например, юрисдикцию аналитика или предпочтительные источники), чтобы не требовать их повторного указания в каждом новом запросе.

Работа над Shippy уже влияет на то, как Ai2 думает об агентах в других проектах, таких как платформа сохранения дикой природы EarthRanger и открытый набор инструментов для наблюдения за Землей OlmoEarth. Mothership создан как общая платформа для хостинга агентов, что означает, что морской домен — это лишь первое применение, а не последнее. Shippy доказывает, что надежные, предсказуемые и безопасные ИИ-агенты возможны, если уделять внимание архитектуре системы, а не только мощности языковой модели.

Skylight — это бесплатная платформа для мониторинга морской обстановки, используемая более чем 300 партнерами в 70 странах. Shippy, созданный командой Skylight, является ярким примером того, как технологии могут служить общественному благу, обеспечивая прозрачность и защиту океанов.

Источник: Hugging Face ↗