Перейти к содержимому

DAG цепочки

Любая цепочка в MAESTRO CARE — это небольшой DAG: блоки для шагов, стрелки для потока данных между ними. TUI рисует этот граф везде, где появляется цепочка: прямо под свежей генерацией, в панели инспекции, вживую во время запуска и на весь экран — в модальном окне DAG (кнопка Посмотреть цепочку под свежей генерацией). Эта страница — обзор того, что показывает картинка, и клавиш, которые ей управляют.

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

ЦветТип шага
ГолубойШаг AI / LLM
ПурпурныйВызов инструмента
СинийMCP-инструмент
ЗелёныйШаг кода / Python

Под графом идёт нумерованная легенда — по строке N — описание на каждый шаг, причём ведущий номер окрашен в цвет своего блока. Если зависимость нельзя показать нарисованной стрелкой («перескок» через слои), легенда несёт её пометкой ◀ N — так ни одна зависимость не теряется.

После успешной генерации в чате рядом со строкой ✓ Цепочка сгенерирована появляется кнопка Посмотреть цепочку. Нажмите её, чтобы открыть модальное окно DAG, где рядом стоят три вида:

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

Кликните по шагу в списке — или прямо по его блоку в графе — и панель деталей вместе с подсветкой обновятся синхронно. Картинка и список — два способа управлять одним и тем же выбором.

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

КнопкаЧто делает
Сохранить в библиотекуЗаписать цепочку в Memory (после сохранения блокируется).
Эволюционировать цепочкуСохранить при необходимости и передать в Platform на эволюцию.
Изменить шагОтправить выбранный шаг в /revise для точечной правки (см. ниже).
ЗакрытьЗакрыть окно (то же делает Escape).

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

Переключает граф между сверху вниз (tb) и слева направо (lr). Широкие неглубокие цепочки лучше читаются слева направо, высокие линейные — сверху вниз. Начальную ориентацию задаёт конфиг (см. ниже).

По умолчанию блоки рисуются псевдографикой Unicode. Режим ASCII заменяет каждый глиф на простой аналог (+ - | v <), символ в символ, — для терминалов без хорошей поддержки Unicode или для чистого копирования. Это параметр конфига, и он действует на каждую поверхность DAG: встроенный след, панель инспекции, оверлей запуска и это окно.

Зависимость, перепрыгивающая больше одного слоя («перескок»), захламляет граф сверху вниз длинными пересекающимися стрелками. Шины (bus lanes) уводят такие перескоки в аккуратный жёлоб у левого поля, оставляя ствол графа чистым. Это параметр конфига, действует в раскладке сверху вниз.

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

Эти значения задают начальное состояние; клавиша l всё равно переключает раскладку вживую.

Переменная окруженияЗначенияЭффект
CARE_DEFAULTS__DAG_LAYOUTtb · lrНачальная ориентация графа в окне (по умолчанию tb).
CARE_DEFAULTS__DAG_ASCIItrue · falseРисовать любой DAG простыми ASCII-глифами (по умолчанию false).
CARE_DEFAULTS__DAG_BUS_LANEStrue · falseУводить многослойные перескоки в жёлоб у поля (по умолчанию false).
Окно терминала
export CARE_DEFAULTS__DAG_LAYOUT=lr
export CARE_DEFAULTS__DAG_ASCII=true
export CARE_DEFAULTS__DAG_BUS_LANES=true

Оверлеи — когда граф несёт данные запуска

Заголовок раздела «Оверлеи — когда граф несёт данные запуска»

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

Во время исполнения каждый блок окрашивается по тому, насколько продвинулась цепочка, и граф становится живым видом прогресса:

ЦветСтатус
СерыйОжидает / пропущен
Ярко-жёлтыйВыполняется
ЗелёныйГотово
Ярко-красныйСбой

На экране исполнения клавиша m переключает живой граф между раскраской по статусу и тепловой картой задержек: каждый блок затеняется по своему времени по шкале от меньшего к большему — зелёный → жёлтый → ярко-красный — так самые медленные шаги бросаются в глаза. Шаг без записанной метрики остаётся приглушённым. Пока запуск не завершён и тайминги недоступны, переключатель ничего не делает.

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

Нажмите y, чтобы скопировать цепочку в буфер обмена как исходник Mermaid flowchart, готовый для вставки в Markdown, в PR или в эту документацию. Направление следует текущему переключателю раскладки: сверху вниз экспортируется как flowchart TD, слева направо — как flowchart LR.

По графу можно ходить по его топологии, а не только по порядку строк. Выбор смещается, и фокус клавиатуры следует за ним на соответствующую кнопку шага:

КлавишаПереход
kК зависимости текущего шага (вверх по графу)
jК зависимому от текущего шага (вниз по графу)
pПредыдущий шаг по позиции
nСледующий шаг по позиции
lПереключить раскладку (сверху вниз ↕ / слева направо ↔)
yСкопировать цепочку как Mermaid
EscapeЗакрыть окно

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