CLI и шпаргалка
Перенесено из репозитория формата — docs/spec/SPECIFICATION_RU.md, SYNX 3.7.4. Правки вносятся там.
Конвертация в JSON (опционально)
📎 Конвертация в JSON — это необязательная возможность. Она нужна только если вы хотите передать данные в систему, которая понимает исключительно JSON (сторонний API, legacy-код, и т.д.).
6.1 Через VS Code (расширение SYNX)
Если установлено расширение SYNX for VS Code:
- Откройте
.synxфайл - Нажмите ПКМ (правой кнопкой мыши) по файлу
- Выберите «Конвертировать в JSON»
- Готовый
.jsonфайл появится рядом
6.2 Через терминал (CLI)
bash
# Конвертировать в JSON и вывести в консоль
synx to-json config.synx
# Конвертировать и сохранить в файл
synx to-json config.synx -o config.json
# Заморозить !active конфиг в статичный .synx (без функций)
synx freeze active_config.synx -o static_config.synx6.3 Программно (если очень нужно)
python
import json
from synx import Synx
data = Synx.load('config.synx')
json_string = json.dumps(data, ensure_ascii=False, indent=2)javascript
const Synx = require('@aperturesyndicate/synx-format');
const data = Synx.loadSync('config.synx');
const jsonString = JSON.stringify(data, null, 2);Но ещё раз: это не нужно для работы. Ваш код читает
.synxнапрямую.
Краткая шпаргалка
КЛЮЧ ЗНАЧЕНИЕ → простая пара
ключ → пустой объект (группа)
вложенный_ключ значение → вложенность (2 пробела)
ключ | → многострочный текст
строка 1 (блок)
строка 2
список → список
- элемент 1
- элемент 2
# комментарий → однострочный комментарий
// комментарий → однострочный комментарий
─── Директивы ──────────────────────────────────
!active → включить маркеры + ограничения
!lock → документ только для чтения
!include ./файл.synx → включить на уровне корня
!tool → конверт вызова инструмента
!schema → экспорт JSON Schema
!llm → флаг метаданных LLM
─── Маркеры (требуют !active) ──────────────────
ключ:env VAR → переменная окружения
ключ:env:default:X VAR → env с дефолтом
ключ:calc A * B → арифметика
ключ:alias другой_ключ → ссылка на другой ключ
ключ:secret значение → скрытое значение
ключ:default dark → значение по умолчанию
ключ:random → случайный элемент
ключ:random 70 20 10 → взвешенный рандом
ключ:unique → дедупликация списка
ключ:include ./файл.synx → подключить файл
ключ:import ./файл.synx → псевдоним :include
ключ:template Привет, {имя}! → интерполяция строк
ключ:split red, green, blue → строка в массив
ключ:join:slash → массив в строку
ключ:geo → значение по региону
ключ:ref:calc:*2 база → разрешить и цепочка
ключ:i18n → перевод по локали
ключ:clamp:0:100 150 → числовое ограничение
ключ:round:2 19.999 → числовое округление
ключ:format:%.2f 19.9 → форматирование printf
ключ:map:таблица_поиска → таблица подстановок
ключ:once:uuid → сгенерировать, кэшировать
ключ:version:>=:1.0.0 ver → сравнение версий
ключ:watch ./flags.synx → чтение внешнего файла
ключ:fallback:./default.synx путь → резервный файл
ключ:spam:5:60 endpoint → ограничение частоты
ключ:prompt:label поддерево → метка для LLM
ключ:vision ./photo.png → метаданные изображения
ключ:audio ./clip.mp3 → метаданные аудио
ключ:inherit родитель → наследование объектов
─── Ограничения (требуют !active) ──────────────
ключ[min:N, max:N] → ограничения длины/значения
ключ[type:int] → тип данных
ключ[required] → обязательное поле
ключ[enum:a|b|c] → допустимые значения
ключ[pattern:regex] → regex-валидация
ключ[readonly] → только для чтения