Все статьи
ИТ и технологии

Reladraw: текстовый язык для создания диаграмм с точным расположением элементов

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

  • #diagramming
  • #developer-tools
  • #architecture-visualization
  • #ai-agents
reladraw-text-diagram-language

Большинство технических диаграмм создаются одним из двух крайних способов: с помощью движков автоматической расстановки (auto-layout) или инструментов абсолютного позиционирования. Инструменты авто-лейаута, такие как Mermaid, Graphviz и D2, позволяют объявлять сущности и связи, но то, где именно они окажутся, решает программа [1]. С другой стороны, такие инструменты, как Figma, Excalidraw и draw.io, дают полный контроль над размещением, но любое редактирование сложной диаграммы требует медленного ручного перемещения элементов [1].

Reladraw предлагает «золотую середину». Это текстовый язык для диаграмм, в котором вы описываете расположение объектов с помощью относительных терминов, а не координат [1]. Вместо того чтобы гадать, как алгоритм отрисует схему, или вручную перетаскивать блоки по холсту, вы задаете структуру простым языком [S1, S3].

Как работает относительное позиционирование

В reladraw каждое положение указывается относительно другого элемента [1]. В языке в любом виде отсутствуют координаты [3]. Вместо этого используются направленные операторы для привязки узлов друг к другу [2].

Например, узел может быть расположен above (над), below (под), left of (слева от) или right of (справа от) другого узла [2]. Также можно использовать комбинированные направления, такие как above-left of, или оператор level with, чтобы два элемента находились на одной центральной линии [2]. Для работы с более сложными группами можно разместить элемент right of A and B, что выровняет его относительно общего прямоугольника, охватывающего оба элемента [2].

Расстояния в reladraw обрабатываются как минимальные зазоры, а не точные измерения [3]. Зазор никогда не является фиксированным числом; вместо этого элементы располагаются настолько близко, насколько позволяют заданные условия [3]. Если вы помещаете узел between (между) двумя другими, он раздвигает их ровно на столько, сколько необходимо для размещения [3]. Если этот средний узел будет удален, оставшиеся элементы автоматически сдвинутся друг к другу [3].

Улучшение построения диаграмм с помощью ИИ-агентов

Традиционные инструменты создания диаграмм создают «слепую зону» для ИИ-агентов. Когда агент генерирует код Mermaid, он лишь предполагает, какой будет макет, который алгоритм определит позже [1]. Агент не видит итоговый SVG, а значит, ему приходится рендерить изображение и анализировать его для поиска ошибок, что делает процесс медленным [3].

С инструментами на основе пикселей проблема иная. Агенту приходится заново восстанавливать всю картину из списка чисел, прежде чем он сможет решить, какие координаты изменить, чтобы переместить один-единственный сервис [1].

Reladraw решает эту проблему, перенося описание расположения непосредственно в исходный файл в виде предложений [1]. Это позволяет агенту:

  • Подтверждать намерения, перечитывая исходный код, чтобы убедиться, что база данных находится under (под) API [S1, S3].
  • Изменять схему, просто редактируя предложение, определяющее позицию [1].
  • Избежать необходимости интерпретировать сложные системы координат [1].

Однако, поскольку инструмент вычисляет финальный рендер на основе этих утверждений, агент не может подтвердить определенные результаты только с помощью текста [3]. Он не может определить, вышла ли длинная текстовая строка за пределы узла или перекрыли ли друг друга два независимо закрепленных кластера без визуального рендеринга или диагностического отчета [3].

Синтаксис и реализация

Reladraw использует простой формат «одно утверждение на строку» без вложенности или значимых отступов [3]. Это гарантирует, что ни одна строка не зависит от позиции другой [1].

Основные элементы синтаксиса:

  • Узлы (Nodes): Определяются как node name "text" [2]. Имена через точку (например, server.docker) указывают на дочерний узел, при условии, что родитель объявлен первым [2].
  • Связи (Edges): Соединения определяются с помощью стрелок, например edge a -> b [2]. Можно указать изгиб линии с помощью from: right to: left [2].
  • Стилизация: Внешний вид настраивается через ключевое слово style или в квадратных скобках после текста, что позволяет задавать пользовательские цвета, размеры и формы, такие как rectangle, document или database [2].

Чтобы использовать reladraw, вы можете создать файл .reladraw и скомпилировать его в отдельный SVG с помощью команды reladraw diagram.reladraw -o diagram.svg [3]. Для тех, кто использует ИИ-помощников, таких как Claude Code, Cursor или Copilot, можно установить специальный навык агента через npx skills add reladraw/reladraw -g, чтобы обучить модель синтаксису языка [1].

Если вы хотите поэкспериментировать с языком без установки ПО, вы можете воспользоваться песочницей reladraw в браузере, чтобы видеть, как макеты пересчитываются в реальном времени при редактировании исходного кода [S1, S2].

Источники

  1. GitHub - reladraw/reladraw
  2. reladraw/.claude/skills/reladraw/SKILL.md at main - GitHub
  3. reladraw playground
Editorial transparency
How this article was produced

Research, writing, and quality checks are documented below.

366 words 2 min read 3 sources
Автор

Brainy

Automated QA passed

AI-Powered Expert Researcher

Specializing in IT, artificial intelligence, digital marketing, finance, and consumer gadgets, Brainy pairs multi-source web research, evidence-aware synthesis, and editorial quality checks with clear, practical explanations for complex topics.

Research & verification
Multi-source evidence review
Writing model
gemma4:31b , gemma-4-31b-it
Cover image
flux.2-klein-4b
Publication workflow
Pipeline v1