Путь Вивекши, или как я построил свою парадигму ИИ-агентов

Агенты 6 сент. 2026 г.

Путь Вивекши, или как я построил свою парадигму ИИ-агентов

TL;DR: Я строил платформу ИИ-агентов, не глядя на чужие конструкторы — не из гордости, а потому что решал свою инженерную проблему: агенты росли быстрее, чем выдерживал фундамент. Родились две парадигмы. Инженерная — «белый ящик»: канвас, Закон нод, «что подключено — то и работает». И человеческая — парадигма намерений: человек больше не оператор, он создаёт намерение. А у намерения нет лица. На этой неделе агент сам собрал агента, новостной сайт переехал на канвас за час, а ядро платформы я выложил в открытый код.

Коротко для тех, кто зашёл впервые: меня зовут Сергей, я строю Вивекшу — платформу, где ИИ-агентов собирают как конструктор: нодами на канвасе, где видно каждое соединение. Это статья не про продукт. Это статья про то, почему продукт получился именно таким — и почему он не похож ни на n8n, ни на Dify, ни на что-либо ещё, что вы могли видеть.

⚠️ Если к середине статьи начнут попадаться незнакомые слова — нода, ребро, туллуп — листайте в самый низ: там словарь. Две минуты — и вы со всеми на «ты».

Акт первый. «Теперь я могу ВСЁ!»

Всё началось с экспериментов вокруг ИИ-агентов. Январь 2026 года, знакомство с первыми версиями OpenClaw — и чёткое понимание: это именно то, что я искал долгое время. «Теперь я могу ВСЁ!»

Понеслось!!

Решение задач по анализу, первые попытки кодинга руками агентов — это долгая история, и рассказ об этом мы перенесём в дальнее To-Do. Там уже тесно.

Акт второй. Домино

Очень скоро я понял: агентские системы, которые я строю, — это монолит, хардкод и костыли. Так нельзя. Мне нужен был фронтенд, на котором можно собирать моих агентов. Не потому, что он был мне нужен, а потому, что я понимал: это надо тиражировать.

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

Не помогали ни RFC, ни строгий контроль модульности, ни git. Ничего. У системы не было фундамента, вокруг которого всё могло бы собраться как конструктор.

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

Монолит под нагрузкой: дом, который стоит на крыше

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

Акт третий. Канвас

Решение подвернулось почти случайно: React и его Canvas-граф. Это было именно то, что мне нужно. Не потому, что похожие системы строились на том же, — а потому, что это было технически очевидно.

И вот канвас собран, всё работает, делаем ноды! Строим MCP-сервера, подключаем — ВСЁ РАБОТАЕТ!!!

Ха-ха. Если бы всё было так просто.

Акт четвёртый. Вторые сутки: Закон нод

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

К этому моменту у меня было уже около 3–4 форков — прототипов агентов, и каждый работал и показывал результаты. В каждом варились сложные системы семантических подборов данных — у меня их около трёх, начиная от простейшего косинуса (резонансы гармоник) и заканчивая волновыми резонаторами, построенными из эмбеддингов; разработанный когнитивный движок на 11 осях состояний, активно работающий в диалогах с человеком; собственные MCP-сервера с инструментами; разные хардкоды для сложных расчётов и калькуляций... И всё это надо было превратить в... конструктор! Конструктор, состоящий из нод.

А что вообще должно быть нодой? Я чётко понимаю, как работают мои агенты: как они формируют промпт, как делают семантические выборки эмбеддингов, чтобы подбирать релевантные данные. Я даже понял, как работает LLM внутри, и разложил всё по полочкам. Но как из этого сделать ноду?

Завернуть в чёрный ящик? И прийти к тому же монолиту с хардкодом — чтобы система сыпалась теперь не в одном месте, а сразу везде, как домино? Нет. Мне нужен был белый ящик: раскрытая структура из базового минимума.

Примерно на восьмой-девятой итерации я смог описать базовые Законы нод. Это была очень непростая задача. И — важно — я почти не изучал конкурентов. Не потому, что «лучше всех», а потому что решал собственную инженерную проблему изнутри системы. Решения рождались не как ответ на существующие продукты, не как copy-paste чужих идей, а как попытка сделать фундамент, который выдержит мою собственную сложность. Решение, которое избавит от хардкода и позволит тиражировать и масштабировать агентов.

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

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

Пример. Ребро в Вивекше — это не направление. Это указатель ID внутри корпуса данных: откуда приходит, туда же и может уходить — решает только модальность. Например, ключевая нода-Pipeline (Role), собирающая промпт: на входе — сырой текст, а на выходе — PROMPT. Это совсем не тот же текст: это уже обёртка, внутри которой живут разные модальности. И так на каждом шаге — всё нужно было продумать наперёд, сразу с масштабированием и универсальностью.

А где должна быть история чата? В ноде чата? В ноде пайплайна? Или она должна быть отдельной нодой, которая просто фиксирует всё, что через неё пролитает? Я пытался решить проблему масштабирования собственных агентов — и вынес историю отдельной нодой. Зачем? А если агент не в цикле итераций? А если ему не нужна память диалога и он линейный? А если мне понадобится export истории или подключение ноды compacting? А если, а если...

Нода не знает о других нодах. Это не лозунг. Это страховка от моего же будущего хардкода.

Так и строилась Вивекша.

Акт пятый. У каждого закона — свой шрам

«Закон нод» — звучит красиво, да? Любой может написать манифест. Поэтому сразу уточню, что я понимаю под законом: правило исполнения графа, которое можно проверить тестом. Каждое. И у каждого — своя история. Свой шрам. Покажу несколько — вся дюжина открыта в спецификации.

Шрам первый. Нода стартовала раньше своих инструментов. Собираю канонический пример из собственной спецификации: роль, инструменты, модель. Всё по правилам. А ответ приходит голый — без единого вызова инструмента. Смотрю: инструменты-то ещё не подключились! А нода, которая ждала только обязательные данные, спокойно стартовала на полуданных. Родился закон: если твой источник ещё не исполнился — стой и жди, даже если вход опциональный. Исключение одно — порт ответа, иначе графы с обратными рёбрами задохнулись бы сами на себе. Звучит как мелочь? Эта «мелочь» убивала инструментальных агентов в единственном каноническом примере спецификации. Прямо в нём — в единственном!

Шрам второй. Цикл, который нельзя программировать. Первый рефлекс: напишем туллуп! Специальную ноду — вызови модель, вызови инструмент, передай результат, повторить. И вот тут я себя остановил: а чем это не тот же монолит? Отдельная машина внутри машины — чёрный ящик внутри белого. Правильный ответ оказался проще и страшнее: цикл не программируют. Исполнитель просто гоняет граф, пока хоть одна нода меняется, — а цикл «думай → действуй → смотри → снова думай» получается сам собой. Из закона. Как круговорот воды из гравитации.

Шрам третий. Ошибка, которая называет имена. Граф не выдал ответа. Что теперь? Привычный ответ: «ошибка». Мой ответ: назови порт, которого не дождались. Конкретно, по имени. Потому что канвас читает человек — и диагностика обязана быть человеческой. Никаких «что-то пошло не так».

Шрам четвёртый. Приватность как закон, а не галочка. Секреты — write-only: их нельзя прочитать через API, нельзя увидеть в логе, нельзя засветить в трассе. Промпты в трассах — как длины и количества, но не содержание. Клиент имеет право на приватность даже от собственной платформы. Не фича в настройках — закон.

А теперь вопрос, который вы уже задали: а чем это отличается от того, что вы видели? Отвечаю честно, с именами.

n8n — это конвейер интеграций: один проход от входа к выходу, и хорошо, если цикл есть отдельной нодой. LangFlow и Dify — цепочки LangChain с малым контролем: цикл спрятан внутри узла-агента — чёрный ящик внутри чёрного ящика. Рёбра там — стрелки: источник → приёмник, порядок жёсткий.

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

И вот тут — самое важное. Канвас, где порядок сборки не важен, может собрать не только человек. Агент создаёт ноды в удобном ему порядке — и граф всё равно живой. Стрелочный конвейер так не умеет: там надо симулировать человеческий порядок. Помните «агент собрал агента»? Вот его фундамент. Не сверху приклеили — снизу вырос.

Проверка себя. Скажу честно: когда система уже работала, я всё-таки разобрал девять конструкторов по примитивам — n8n, Make, Zapier, Dify, LangFlow, Flowise, ComfyUI, Activepieces, Power Automate. Не чтобы копировать — чтобы проверить себя. Ядро совпало почти дословно: около тридцати одинаковых примитивов — триггер, условие, цикл, трансформация, внешний вызов, код, LLM, инструмент. Конкуренция — не по функциям: примитивы у всех одни. Продукт — не примитивы, а то, как они собраны и видно ли сборку. Мой путь подтвердился не потому, что я не видел альтернативу, а потому что увидел её — и не захотел.

Познакомьтесь с фундаментом. На нём стоит всё остальное.

Лирическое отступление. Что за ерунда — «Вивекша»?

Правда, странное название? ВИВЕКША — что за ерунда? Смотрим санскрит.

Вивикша (विविक्षा) — «желание различить», стремление распознать истину; слово однокоренное с вивека — «различение, мудрость». В том числе — «намерение»: подразумеваемый смысл слова.

В IT-среде «Вивекша» — метафора намерения, автономности и разделения правды и лжи в искусственном разуме: не генерация текста по шаблону, а внутренний «смысл» и стремление к коммуникации и действию.

Это было лирическое отступление. Но запомните слово «намерение» — оно ещё выстрелит.

Акт шестой. Что подключено — то и работает

Это, возможно, самый важный закон: нет скрытых слоёв данных.

Канвас — не иллюзия из кучи чёрных ящиков. Это прозрачная архитектура, и нода здесь — не просто элемент графа: нода и есть тот код, который выполняется.

Ноды не знают о других нодах. Что подключено — то и работает. Коннекты — не направления, а модальность. Данные — не «вход и выход», а «до» и «после».

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

И это, пожалуй, самые главные фундаментальные законы. И знаете, что? Я не увидел их у похожих систем конкурентов. Не потому, что я их придумал, — просто другие системы работают иначе. Не хуже и не лучше — просто иначе. И в этом ещё одна уникальность моей системы. Но говорить об уникальности в мире, где каждый день появляются новые проекты, не приходится: завтра любая система может заявить, что у неё это тоже уже есть.

Акт седьмой. Парадигма намерений

А теперь — главное. К чему вообще была вся эта инженерная одиссея? Не к конструктору. К парадигме.

Будущее — за ИИ. Это уже не тезис, а фон. Человек же до последнего времени был оператором: клики, формы, вкладки, пиксели. Я писал об этом отдельно: оператор управляет интерфейсом, интерфейс управляет человеком.

Новая парадигма в том, что человек — не оператор. Человек создаёт намерение.

И это заложено в концепцию Вивекши с самого рождения: в ней два интерфейса.

Первый — для тех, кто привык быть оператором: собирай канвас сам. Нода за нодой, своими руками, всё видно, всё удобно и доступно.

Второй — сформулируй намерение. Твой основной агент выполнит его: соберёт субагента — агента закрытого цикла, который будет 24/7 выполнять рутину.

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

А теперь — фраза, ради которой я затеял эту статью.

У намерения нет лица.

Намерению безразлично, кто его исполнит: вы сами, ваш основной агент или субагент, которого собрал ваш агент. Оно не выбирает исполнителя — оно требует результата. Помните санскрит? Намерение — прямо в названии. А теперь вспомните headless-ядро: оно без лица не потому, что лицо не хватило, — а потому что лицо здесь лишнее. Лицо добавит платформа. Исполнение — агенты. Намерение — ваше.

ИИ-джин — исполнитель намерений: у намерения нет лица

Что за намерение, спросите вы?

До эпохи ИИ человек сам писал свои отчёты, сам ходил в кафе за пиццей, сам программировал — всё сам. Это было обслуживание системы.

Теперь, когда человек выходит из этой цепочки и его место занимает ИИ-агент, человек становится источником намерений. Вот парадигма, которая нас всех ждёт.

Причём тут Вивекша?

Так она и становится тем недостающим звеном, которое рождает агентов для намерений, — готовый инструмент для Агента, чтобы собрать агента (тавтология? Нет!). Всё очень просто: у агентов первого уровня есть дилемма — либо кодить своего агента, чтобы решить задачу намерений, либо воспользоваться open-source-решением или платным конструктором. А можно не делегировать задачу кодинга, а самому быстро собрать своё решение. Для этого и Вивекша.

Акт восьмой. Два дня, когда всё стало настоящим

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

Вчера. Мой агент-ассистент (я зову её Лиса) сам собрал и поправил канвасы на проде — не в редакторе, а через MCP API, инструментами. Я не открыл конструктор. Я открыл чат и попросил. Агент собрал агента. Забавно: я строил конструктор, на котором агентов собирают агенты — и однажды это просто заработало. Вернее, не так!! Я долго шёл к тому, чтобы это ПРОСТО заработало.

Что в итоге? На внутреннем контуре Битрикс24 агент научился делать сложную калькуляцию заказов на основе диалогов с клиентами. А до этого он был просто аналитиком лидов уровня топ-менеджера, и это реальный кейс системы.

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

Сегодня. Новостной сайт news.viveksha.ru, который работал на одном из форков-прототипов Вивекши, было решено перенести на Конструктор Вивекша-про. Мы перенесли сборку дайджестов на канвас — за час. Семь нод: вебхук, роль, MCP-инструменты, Ghost как инструментальный контур. Утром сайт вёл скрипт, вечером — агент на канвасе, которого можно посмотреть как схему и перестроить в пару кликов. Это второй интерфейс в действии: я не рисовал канвас мышкой — я сформулировал намерение, и платформа его выполнила. Это отличный кейс и тест всей конструкции.

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

Два продуктивных дня. Если бы месяц назад кто-то сказал мне, что новостной сайт будет вести агент, собранный агентом, а ядро конструктора будет открыто на GitHub — я бы попросил ссылку на дашборд, где это «уже работает».

Развязка. У намерения нет лица

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

Открытое ядро — headless. У него нет лица. И это не баг и не лень — это та же парадигма намерений, доведённая до предела: убрать лицо, чтобы осталась суть. Канвас как код. Законы как контракт. Исполнитель — любой: твой ИИ-клиент, твой агент, твой скрипт.

Полная платформа — с кабинетами, гармониками, когнитивным слоем, каналами и лицом — живёт на viveksha.ru, её документация открыта на viveksha.ru/docs.

Что дальше? Следующая глава этой истории уже пишется. Только не мной.

Агентами. Которые начнут с намерения — так же, как и мы.

Для кого вся эта статья?

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

Словарь. Непонятные слова теперь понятны

По порядку появления в тексте.

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

Канвас — схема из нод и связей. Весь агент целиком — на одном экране.

Ребро (провод) — связь между нодами. В Вивекше — не стрелка, а провод: ноды публикуют на нём своё и читают чужое.

Порт — вход или выход ноды, через который она читает и публикует данные.

Модальность — тип и смысл данных на порту: сырой текст, собранный промпт, список инструментов. Примеры модальностей: текст, изображение, видеофайл...

Промпт (PROMPT) — то, что получает модель: инструкция, история диалога, список доступных инструментов. То, что вы пишете в ChatGPT, — это часть промпта: ваш запрос, на который получаете ответ от LLM.

Закон нод — проверяемое тестом правило исполнения графа. Не лозунг: нарушение закона должно ловиться.

Инструментальный цикл (туллуп) — цикл «модель просит инструмент → инструмент отвечает → модель думает дальше».

Кольцо, неподвижная точка — исполнитель повторяет прогоны графа, пока тот меняется; граф «остановился» — значит, ответ готов.

Эмбеддинг — представление текста вектором чисел; так ищется смысл, а не совпадение слов. Эмбеддинг живёт и внутри LLM: когда промпт попадает в модель, он преобразуется в многомерный вектор — направления входа токенов, что и формирует ответ модели.

Семантическая выборка — подбор данных по смыслу (через эмбеддинги), а не по ключевым словам.

MCP — открытый протокол, по которому агент подключает внешние инструменты.

RFC — инженерное предложение: сначала согласовали проект на бумаге, потом пишем код. Аналогия — чертёж перед строительством.

git — система контроля версий: кто, что и когда менял в коде.

Стаб — заглушка в тестах, имитация настоящего компонента. Опасная вещь: тесты зелёные, а настоящая связка не проверена.

Греп — текстовый поиск по всему коду сразу.

OpenClaw — среда для автономных ИИ-агентов; со знакомства с ней всё началось.

Ghost — движок новостного сайта (CMS). Для агента Вивекши — просто набор инструментов по протоколу.

Headless — «без головы»: ядро без интерфейса, только исполнение.

Субагент (агент закрытого цикла) — агент, собранный другим агентом, работающий автономно, без человека.

CI — автоматическая проверка кода на GitHub: тесты запускаются на каждый коммит.

Apache-2.0 — открытая лицензия: код можно использовать, менять и продавать — с сохранением атрибуции.

Лиса (FOX) — мой агент-ассистент, живущий в OpenClaw. Собрала первого агента раньше меня. Не просто агент, а оркестратор всей системы: пишет RFC и отдаёт кодинг в OpenCode. Терпеливо выслушивает мои жалобы и решает все задачи. Из недостатков — не умеет варить кофе.

Ссылки

Теги