Привет, меня зовут Егор, я работаю продуктовым дизайнером в команде, которая разрабатывает облачные сервисы для создания ИИ-агентов. Мне нужно было спроектировать интерфейс трейсинга (tracing), который помогает быстро найти проблемное место и понять, как агент пришел к такому результату. В статье расскажу, какой путь я прошел и что получилось.

Работа с ИИ-агентом выглядит так: пользователь задает запрос, агент отвечает и по пути обращается к языковой модели, инструментам и внешним сервисам. Когда результат получается неожиданным или агент ошибается, понять причину, почему так вышло, сложно: между запросом и ответом скрывается цепочка действий.

Важно, что у агентных сценариев одна особенность: это уже не один вызов модели — один ответ. Агент может планировать шаги, пересобирать план, вызывать инструменты каскадом, возвращаться к уже пройденным шагам и попадать в смысловые циклы. Из‑за этого путь выполнения легко становится непрозрачным и недетерминированным, и без трейсинга разбор превращается в догадки.

Что такое трейсинг

Трейсинг — это цепочка действий агента по шагам, которая позволяет увидеть, что происходило внутри системы, в каком порядке выполнялись задачи и где возникла проблема. Эта запись отражает полный путь одного запроса через систему — от входа до результата.

Трейс состоит из последовательности шагов (span), где каждый шаг фиксирует отдельную операцию: вызов модели, обращение к инструменту или внешний запрос. Каждый шаг содержит контекст выполнения: входные и выходные данные, длительность и статус — это позволяет не просто видеть результат, а разбирать сам процесс: как агент принимал решения, какие действия выполнял и где возникли отклонения или ошибки.

Кому нужен трейсинг

Трейсинг — это про отслеживание и мониторинг работы агента: чтобы понимать, что пошло не так, и быстро находить причину. В первую очередь он нужен опытным пользователям, которые отлаживают и улучшают систему: ИИ- и ML‑инженерам, бэкенд‑разработчикам и платформенным разработчикам.

Задачи, которые трейсинг помогает решать:

  • Быстро понять, где произошел сбой. Не «все сломалось», а конкретно на каком шаге, в каком вызове и с каким результатом.

  • Восстановить ход выполнения запроса. Что агент делал между запросом и ответом: какие шаги делал и в каком порядке.

  • Разобраться в причинах, даже если явной ошибки нет. У агентов проблемы часто проявляются не как классическое падение, а как некорректное поведение: бессмысленные повторы, неудачные вызовы инструментов, потеря контекста.

  • Увидеть, где теряется время. В трейсинге хорошо заметны аномально долгие шаги и повторяющиеся участки.

Какие задачи решает пользователь в интерфейсе трейсинга

Когда пользователь открывает трейсинг, он обычно приходит за довольно конкретными действиями:

  • Понять, на каком этапе возникла проблема. Дальше вопрос обычно звучит так: «Где именно сломалось?».

  • Увидеть, к чему обращался агент: где была языковая модель, где инструменты, где MCP‑серверы и что туда передавалось или возвращалось.

  • Понять, почему итоговый ответ получился именно таким, какая цепочка решений и результатов привела к финалу.

  • Сравнить шаги по длительности, чтобы быстро увидеть узкие места и аномалии.

Конечная цель этого интерфейса простая — помочь опытному пользователю быстро найти причину проблемы и понять, что именно стоит улучшать: промпт, инструмент, обработку ответа, таймауты или логику агента.

Что я понял, посмотрев на решения конкурентов

Я изучил несколько решений на рынке, чтобы лучше понять, как в целом устроены интерфейсы трейсинга: как показываются цепочки шагов, ошибки, время выполнения и какие UX‑паттерны используются.

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

Phoenix — дает инструменты для разбора и анализа выполнения: можно переигрывать отдельные шаги, сравнивать результаты и смотреть, как меняется поведение системы. Интерфейс помогает не просто увидеть, что произошло, а разобраться, почему агент пришел именно к такому результату.

OpenLIT — интересен связкой трейсинга и инфраструктуры: шаги агента сопоставляются с GPU‑метриками, что дает дополнительный слой понимания, где возникают задержки.

Langtrace — демонстрирует более легкий и интеграционный подход: трейсы можно встраивать прямо в пользовательские интерфейсы, делая их частью продукта.

LangWatch — раскрывает отдельный угол зрения: интерфейс строится вокруг оценки качества ответов и автоматических проверок, добавляя слой аналитики поверх самих трейсов.

В целом, большинство решений сходятся в базовых паттернах: иерархия шагов (traces/spans), возможность провалиться в детали и дополнительные слои анализа — от графов до метрик и оценки качества. При этом общее ощущение получилось довольно четким: единого канонического UX в трейсинге пока нет.

Одни продукты ближе к быстрому отладчику — позволяют быстро зайти и понять, где именно сломался сценарий. Другие работают как диагностическая система — дают больше контекста, глубже объясняют причины, но требуют большего погружения и времени на разбор.

Этот вывод оказался для меня ключевым: универсального паттерна здесь не существует. Значит, интерфейс нужно проектировать не как копию существующих решений, а как ответ на конкретные пользовательские сценарии и задачи.

Как собирались требования и почему это было непросто

Чтобы спроектировать трейсинг, сначала пришлось разобраться, как система реально работает внутри. Без этого невозможно понять, что именно нужно показывать в интерфейсе.

На этапе сбора требований я общался с инженерами (ML, ИИ, бэкенд, платформа) и разбирал их реальные сценарии работы:

  • с чего начинается разбор, когда что-то сломалось,

  • что важно увидеть сразу,

  • в какой момент они уходят глубже и какие детали смотрят.

Такие интервью как раз и нужны, чтобы вытащить реальные сценарии и боли, а не придумывать их — это базовый способ собрать требования через опыт пользователей.

Главный вывод: трейсинг никто не читает последовательно, в нем ищут конкретную проблему. Отсюда ключевое требование к интерфейсу: он должен помогать быстро сузить поиск — от общей картины к конкретному шагу.

Архитектура раздела трейсинга и логика навигации

Архитектура у меня получилась иерархическая и достаточно прямолинейная именно потому, что трейсинг быстро разрастается в объеме данных и без структуры в нем невозможно ориентироваться.

Список сессий. Точка входа — таблица со списком сессий. Здесь пользователь находит нужный запуск и сразу видит признаки проблем: ошибки, статусы, длительность.

Сессия. Проваливаясь в конкретную сессию, пользователь видит диалог с агентом в привычном формате чата — так проще восстановить контекст: что спросили и что агент отвечал. Рядом отображается список трейсов с короткой сводкой по каждому: что это был за этап, сколько занял и есть ли ошибка.

Трейс. Если нужно разобраться глубже, пользователь кликает на нужный трейс и открывает детальный просмотр — цепочку спанов: шаги агента, обращения к языковой модели, вызовы инструментов, взаимодействия с MCP‑серверами, результаты и время выполнения.

Такой маршрут помогает не утонуть в деталях сразу: сначала контекст и быстрый обзор, а дальше — детализация по запросу.

Два типа пользователей и акцент на ошибках

При проектировании я ориентировался на то, что у интерфейса есть две группы пользователей.

Первая — это инженеры. Им нужен подробный разбор: цепочка шагов, входы и выходы, ошибки, время выполнения и все технические детали.

Вторая — пользователи, которым важно быстро понять, что произошло в целом. Для них не критично сразу погружаться в детали, важнее увидеть общий контекст и понять, где примерно проблема.

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

Поскольку основной сценарий для технических пользователей — найти сбой, я сделал акцент на ошибках сразу на нескольких уровнях:

  • ошибка видна на уровне конкретного шага (span);

  • сам трейс помечается как проблемный;

  • сессия тоже показывает, что внутри есть ошибка.

Это позволяет двигаться сверху вниз: сначала заметить проблему в списке сессий, затем найти нужный trace и быстро дойти до конкретного шага, где все сломалось.

Что эта задача изменила в моем подходе

Этот опыт еще раз показал мне, что в подобных задачах дизайн — это во многом работа со структурой данных и пользовательским поиском: как провести человека от общего сигнала «что-то не так» к конкретной причине, не перегружая его на первых экранах, но сохраняя глубину для тех, кому она действительно нужна.

Трейсинг для ИИ‑агентов — молодая область, и паттерны здесь еще складываются. Поэтому для меня ключевым было опираться не на «как принято», а на реальные сценарии: как люди ищут проблемы и что им нужно увидеть в первую очередь.

Работа над tracing стала для меня важным опытом. Вот ключевые выводы, которые я для себя вынес:

  • UX для ИИ часто ближе к инженерным инструментам, чем к классическим потребительским интерфейсам.

  • Задача дизайна иногда — не упростить, а грамотно структурировать сложность.

  • Интервью с экспертами могут быть эффективнее масштабных исследований, особенно когда паттернов еще нет.

  • В молодой сфере дизайнер учится вместе с рынком.

  • Хорошие интерфейсы сложных систем почти всегда строятся слоями.

Если вы тоже проектируете observability для агентов или отлаживаете сложные ИИ-системы — делитесь своим опытом в комментариях. Как вы решаете проблему черного ящика? Какие паттерны уже работают у вас?

Комментарии (0)