Эта глава — наглядное руководство по двум графовым представлениям AITM: Contract Explorer (карта всех Behavioral Contracts проекта) и App Flow (карта того, как один конкретный элемент приложения связан со всем остальным). Здесь объясняется, что показывает каждый граф, как читать узлы, цвета и соединительные линии, что означает легенда и для чего на самом деле нужны оба представления.

Contract Explorer & App Flow

Если вы ещё не знаете, что такое Contract и knowledge graph, сначала прочитайте главу Contracts, Knowledge Graph & Hints. Эта глава опирается на неё и посвящена исключительно навигации по двум визуализациям.

Contract Explorer — карта Contracts проекта

Для чего он нужен: Contract Explorer — это интерактивный граф всех Behavioral Contracts проекта, то есть сохранённых фактов о том, как ведёт себя каждая часть кода. На одном экране видно, сколько знаний о проекте накопил AITM, насколько хорошо они покрыты тестами, какие модули самые крупные и как Contracts связаны с файлами, переменными и документацией. Это самый быстрый способ ответить на вопрос «что AITM знает о моём проекте?» — и найти слабые места (Contracts без тестов или с падающими тестами).

Где найти: в панели проекта нужно нажать подвкладку Contracts (подвкладки проекта: Develop, Testing, Archive, Setting, Optimize, Contracts, Graph и Multi Graph). Соседняя подвкладка Graph рисует граф кода проекта, а Multi Graph — граф сразу для всех проектов вкладки (она показывается, только если во вкладке больше одного проекта).

Contract Explorer — Module View по умолчанию
Contract Explorer — Module View по умолчанию.

Что находится на экране

Экран состоит из четырёх основных областей:

  • Верхняя панель — вкладки наборов данных, сводная статистика и кнопки действий.
  • Левая боковая панель — поиск, фильтры по модулям и список Contracts.
  • Основная область графа — интерактивный граф (масштабирование колесом мыши, перемещение перетаскиванием, узлы можно двигать).
  • Легенда (накладываемая панель в левом нижнем углу графа) — объясняет цвета узлов и типы линий.

Верхняя панель — вкладки и статистика

ЭлементЗначение
Contracts (количество)Contracts, полученные из кода, — основной набор данных, показываемый в графе.
Doc Contracts (количество)Contracts, извлечённые из документации (результатов Task). На этой вкладке вместо графа показывается список.
Doc Pointers (количество)Ссылки из файлов документации на Contracts — «где в документации об этом написано».
Needs Review (количество)Contracts, ожидающие проверки (например, с низкой достоверностью или после конфликтующего изменения).
Total / Passing / Failing / UnknownСводка состояния: сколько всего Contracts, у скольких тесты проходят, у скольких падают и у скольких состояние неизвестно.
CoverageПроцент Contracts, покрытых тестами.
Fix ContractsЗапускает исправление несогласованных Contracts.
ReimportЗаново считывает Contracts из исходников проекта (полная пересинхронизация).

Уровни отображения — Module View и All Contracts

Над графом находится переключатель уровня детализации:

  • Module View (по умолчанию для крупных проектов, более 500 Contracts) — каждый узел представляет целый модуль (например, «AI Chat», «Backup Service»). Размер пузыря отражает количество Contracts в модуле; линии между модулями означают, что у них есть общие исходные файлы. Это «вид с высоты птичьего полёта» — идеальная отправная точка.
  • Щелчок по модулю переходит к детализации Module Detail — граф показывает отдельные Contracts выбранного модуля.
  • All Contracts — полный граф всех Contracts сразу. В крупных проектах для производительности он ограничен 500 узлами (значок показывает количество, а ссылка «Show all» позволяет намеренно снять это ограничение).

В правом верхнем углу графа есть также переключатель средства отрисовки: SVG, Sigma (по умолчанию — WebGL, справляется с большими графами), 3D, Cosmo и deck.gl. Он не меняет функциональность, а только способ отрисовки графа — если граф тормозит на большом проекте, стоит выбрать Sigma.

Как читать граф — узлы

Contract Explorer — детали модуля AI Chat с цветными Contracts
Contract Explorer — детали модуля AI Chat с цветными Contracts.

Каждый узел (круг) — это одна сущность. Цвет показывает тип, а для Contracts одновременно и состояние тестов:

Цвет узлаТип / состояниеЗначение
зелёныйContract — Tested (passing)У Contract есть тесты, и все они проходят.
красныйContract — FailingУ Contract есть падающий тест — смотреть в первую очередь здесь.
янтарныйContract — UntestedУ Contract вообще нет тестов — поведение описано, но ничем не защищено.
синийModuleМодуль (группа Contracts) — основные пузыри в Module View.
серыйFileИсходный файл, общий для нескольких Contracts.
оранжевыйDoc (Doc Pointer)Файл документации, ссылающийся на Contracts.
фиолетовыйDoc Contract / переменнаяContract, полученный из документации, или переменная коммуникационного языка.
голубойBehavior DocСгенерированный документ с описанием поведения.

Чем больше узел, тем значимее сущность (модуль с большим числом Contracts, Contract из опасной зоны и т. д.).

Как читать граф — линии (связи)

Линии между узлами означают «эти две сущности связаны». Тип связи кодируется стилем линии:

Стиль линииСвязьЗначение
сплошнаяModule → ContractContract принадлежит модулю. В Module View толщина линии отражает количество общих файлов между модулями.
сплошная тонкаяContract → File / Variable / DocContract затрагивает файл, управляет переменной или описан в документе.
штриховая фиолетоваяDocContract → ContractDoc Contract подтверждает или дополняет Contract из кода.
штриховая оранжеваяContract → Doc PointerФайл документации ссылается на Contract.
штриховая светло-фиолетоваяDocContract ↔ Doc PointerDoc Contract и Doc Pointer относятся к одному и тому же Contract — цепочка документации.

Практическое чтение: сплошные линии — связи в коде, штриховые — связи через документацию. Штриховая линия, отходящая от Contract, означает, что для него существует письменная документация — щёлкните по оранжевому узлу, чтобы открыть её прямо в приложении.

Легенда

Легенда (панель в левом нижнем углу графа) кратко воспроизводит всё описанное выше — цвета узлов и типы связей. Для трёх состояний Contract она дополнительно показывает текущие количества и проценты (например, Tested (passing) 4/2403 (0%)): сколько Contracts из отображаемого в данный момент набора находятся в каждом состоянии. Числа пересчитываются в соответствии с активным фильтром — в Module View они относятся к модулям на экране, а после перехода внутрь модуля — к его Contracts.

Левая боковая панель

  • Search — полнотекстовый поиск по идентификаторам Contracts, описаниям поведения, файлам и переменным.
  • Filters / Groups — переключение между фильтром по модулям (кнопки с названиями модулей; All снимает фильтр) и сгруппированным деревом.
  • Список Contracts (внизу) — заполняется Contracts выбранного модуля. В каждой строке есть цветная точка с тем же смыслом, что и у узлов графа (зелёный/красный/янтарный), а также значок для Contracts в опасной зоне (местах, где небольшое изменение исторически приводило к несоразмерно большому ущербу).

Детали Contract

Щелчок по Contract (в графе или в списке) открывает окно с деталями Contract:

Детали Contract с кнопками Assembled doc и Flow
Детали Contract с кнопками Assembled doc и Flow.
РазделЧто он сообщает
Header + badgesИдентификатор Contract (например, DPL-001), модуль, статус (code-only — получен из кода, без тестов; tested — есть тесты) и значок состояния (unverified, passing, failing).
BehaviorСам Contract — одно-два предложения, точно описывающих поведение («что делает эта часть и что возвращает, когда…»).
TestsТесты, защищающие это поведение (файл + название теста).
FilesИсходные файлы, которые затрагивает Contract — щелчок фильтрует граф.
VariablesПеременные коммуникационного языка (BL.*, UI.* …), которыми управляет Contract.
Reliability ScoreОценка достоверности Contract (сочетание возраста, тестов и истории изменений). Низкая оценка означает, что к информации стоит относиться с осторожностью.
Related TasksTasks, которые создали или изменили Contract.
ScreenshotДля UI-Contracts — превью элемента (снятое на шаге E2E Pipeline).
Change HistoryКогда и каким Task был изменён Contract.
Related Contracts / DocumentationСоседние Contracts (с общими файлами) и документы, ссылающиеся на этот Contract.

В верхней части деталей находятся две важные кнопки:

  • Assembled doc — открывает полный собранный документ по Contract.
  • Flow — сразу переходит в представление App Flow (см. ниже), центрированное на первой переменной Contract. Это мост между двумя визуализациями: от «что должно выполняться» (Contract) к «как это вписывается в приложение» (поток).

App Flow — карта связей одного элемента

Для чего он нужен: если Contract Explorer показывает проект сверху, то App Flow отвечает на вопрос «как этот конкретный элемент связан с остальной частью приложения?». Видны все переменные коммуникационного языка, соседствующие с элементом, — через его пространство имён, общие Contracts, общие файлы и навигацию по UI. Это идеальный инструмент для оценки влияния изменений («если я это трону, что ещё пострадает?») и для составления точных промптов Task.

Где найти:

  1. Из Dev Panel — в запущенном приложении нужно щёлкнуть по элементу; откроется окно его деталей с вкладками Graph | Guide & Flow | App Flow.
  2. Из Contract Explorer — с помощью кнопки Flow в деталях Contract (см. выше).
App Flow — граф связей элемента BL.DOM_MAP
App Flow — граф связей элемента BL.DOM_MAP.

Что находится на экране

  • Левая колонка — данные исследуемого элемента: название, описание, слой и, прежде всего, список Contracts, которые им управляют (с идентификатором, состоянием тестов, состоянием, файлами и оценкой). Это та же информация, что и в Contract Explorer, но с точки зрения одного элемента.
  • В центре — граф — интерактивный граф с исследуемым элементом посередине и связанными переменными вокруг него.
  • Правая панель — фильтры по типам связей (флажки) и список связанных переменных, отражающий граф в виде удобного для чтения списка.

Как читать граф — узлы

Вид узлаЗначение
прямоугольник с подписьюПеременная — подпись представляет собой последний сегмент записи через точки (например, CODEMAP для BL.CODEMAP).
узел с синей рамкойИсследуемый элемент — центр графа, то, по чему вы щёлкнули.
штриховая рамкаGhost node — переменная бизнес-логики, у которой нет собственного элемента на экране (например, чисто серверная переменная BL.*). Щелчок по ghost node загружает её в левую колонку, и её тоже можно закрепить в промпте.

Как читать граф — цвета рёбер (типы связей)

Каждая линия окрашена в зависимости от того, почему переменные связаны:

Цвет ребраСвязьКак возникает
серыйnamespaceСоседи по пространству имён — у них общий префикс до точки (например, UI.PANEL.CHAT и UI.PANEL.BRAINSTORM). Означает «мы из одного семейства».
янтарныйcontractПеременные, указанные в одних и тех же Contracts — их поведение подчиняется одним и тем же правилам. Самая ценная связь для анализа влияния.
тёмно-серыйfileПеременные других Contracts, затрагивающих те же исходные файлы — связь через код.
синийnavigationСвязь в реальном UI: щелчок по этому элементу показывает целевой элемент или переходит к нему (выводится из сопоставленных эффектов в DOM).

Правая панель — фильтры и список

Вверху расположены четыре флажка — Namespace, Contract, File, Navigation — они фильтруют и граф, и список. По умолчанию отмечены Namespace + Contract (самые полезные и наименее шумные связи); File и Navigation стоит включать, когда нужно проследить связи через код или через поток UI.

В каждой строке списка показаны код переменной, название и значки типов связей. Кнопка (вставить в промпт) закрепляет код переменной прямо в промпте Task, который вы пишете, поэтому типичный сценарий такой: найти элемент в приложении → изучить его App Flow → закрепить связанные переменные → описать изменение. AI Agent получает точные адреса мест, которых касается изменение, и ему не нужно их искать.

Легенда и справка

В левом нижнем углу графа находится легенда, кратко описывающая стили узлов и цвета рёбер (в точности как описано выше). В правом верхнем углу расположена кнопка (?), открывающая всплывающую справку о том, что показывает App Flow и как выводится каждый тип связи:

App Flow — открытая всплывающая справка (?)
App Flow — открытая всплывающая справка (?).

Guide & Flow — поток бизнес-логики

Рядом с App Flow в деталях элемента есть вкладка Guide & Flow. Она объясняет выбранный элемент сверху вниз простыми шагами — сам элемент UI, а затем бизнес-Contracts, описывающие его поведение (каждый с переменными, которых он касается), — а кнопка Copy as Markdown копирует всё объяснение в буфер обмена, готовое для вставки в промпт Task.

Guide & Flow — поток бизнес-логики
Guide & Flow — поток бизнес-логики выбранного элемента.

AITM Dev Panel

Что это: небольшая плавающая панель инструментов, которую AITM может внедрить в веб-приложение управляемого им проекта. Пока вы работаете с приложением в браузере, панель служит глазами AITM внутри него: она записывает помеченные элементы UI, которые видит (строя карту экранов, кнопок и диалогов проекта, на которой основаны Contract Explorer и App Flow), и перехватывает ошибки JavaScript из консоли браузера, отправляя их в AITM, где они отображаются для проекта и из них можно создавать Tasks по исправлению ошибок.

AITM Dev Panel
AITM Dev Panel, внедрённая в запущенное приложение.

Как она туда попадает: панель — это один скрипт, который раздаёт сервер AITM и который подключается к странице приложения в режиме разработки. Wizard создания проекта добавляет её автоматически в создаваемые им веб-проекты; в собственном Dashboard AITM она тоже есть.

Что видно: четыре вкладки —

  • Elements — элементы, по которым вы щёлкнули или которые закрепили, каждый с кодом переменной, стоящими за ним Contracts и файлами, а также предупреждениями от Contracts из опасных зон. Overlay подсвечивает все помеченные элементы на странице; Pin / One Pin собирают элементы для промпта; значки в каждой строке копируют код, открывают детали элемента (Graph, Guide & Flow, App Flow) и удаляют закрепление. Clear Pins очищает список.
  • Records — элементы UI, записанные панелью со страницы.
  • Errors — ошибки JavaScript и консоли, перехваченные в этом браузере, с количеством в названии вкладки.
  • Settings — собственные параметры панели.

Панель появляется только в режиме разработки и предназначена для вас и AI Agent, а не для конечных пользователей приложения. Её полная документация открывается из меню заголовка: Help → AITM Dev Panel. Размеры шрифтов панели настраиваются в разделе Settings → Font & Style.

Практические сценарии

Найти слабые места модуля: Contracts → Module View → щёлкнуть по модулю → искать в графе янтарные (без тестов) и красные (падающие) узлы. Легенда сразу показывает проценты.

Оценить влияние изменения перед созданием Task: найти элемент в приложении через Dev Panel (или Contract в Contract Explorer и кнопку Flow) → App Flow → включить связи contract и file → всё, что с ним связано, может быть затронуто вашим изменением.

Написать точный промпт: в App Flow закрепить нужные переменные в промпте — тогда Task говорит на языке, понятном и вам, и AI Agent Pipeline (коммуникационном языке).

Проверить, задокументировано ли поведение: в Contract Explorer пройти по штриховым линиям от Contract — они ведут к документам (оранжевые узлы), которые открываются щелчком прямо в приложении.