Инструкции

Мультиагентная оркестрация без Python: TypeScript-фреймворк с 3 зависимостями и локальными моделями

Open-multi-agent — минималистичный TypeScript-фреймворк для мультиагентных систем. Три зависимости, локальные модели через Ollama, параллельное выполнение задач. Разбираем архитектуру и сравниваем с Python-стеком.

6 апреля 2026 г.
7 мин чтения
мультиагентные системыTypeScriptOllamaLangGraphCrewAIAI-агентыоркестрация

Проблема: Python-монополия в мультиагентных системах

Если вы строите мультиагентную систему в 2026-м, выбор кажется очевидным: LangGraph, CrewAI, AutoGen — всё на Python. Экосистема зрелая, документации много, примеров хватает.

Но у этого «очевидного» выбора есть цена.

Python-фреймворки для агентов тащат за собой десятки зависимостей. LangChain — это 80+ пакетов. CrewAI добавляет свои. Вы получаете dependency hell ещё до того, как написали первого агента. Обновление одной библиотеки ломает три другие. Virtual environments множатся. И если ваш основной стек — TypeScript (а это весь фронтенд, большая часть бэкенда, serverless-функции), вы вынуждены держать два рантайма, два набора инструментов, два CI-пайплайна.

Open-multi-agent — проект, который говорит: это необязательно.

Что такое open-multi-agent

Это TypeScript-фреймворк для мультиагентных систем с радикально минималистичным подходом:

  • 3 зависимости. Три. Не тридцать, не триста — три npm-пакета.
  • Node.js рантайм. Никакого Python, никаких виртуальных окружений.
  • Ollama для моделей. Локальные LLM, никаких API-ключей, никакой зависимости от облачных провайдеров.

Ключевая абстракция — runTeam(). Вы описываете цель (goal), фреймворк динамически разбивает её на подзадачи и запускает агентов параллельно. Каждый агент получает свою подзадачу, выполняет её, результаты собираются и проверяются.

Архитектура: goal → subtasks → parallel agents

Паттерн, который реализует open-multi-agent: Goal (высокоуровневая цель) → декомпозиция → Subtasks (конкретные подзадачи) → назначение → Parallel Agents (каждый агент — своя подзадача) → выполнение → Results (сбор и валидация).

Декомпозиция цели

Вы передаёте runTeam() текстовое описание задачи. Первый этап — «планировщик» (тоже LLM) разбивает goal на подзадачи. Это не статическое дерево — разбиение динамическое, зависит от конкретного запроса.

Параллельное выполнение

Подзадачи распределяются между агентами и выполняются параллельно. В Node.js это работает естественно — event loop и промисы делают конкурентность тривиальной. Не нужен asyncio, не нужен threading, не нужен multiprocessing.

Контроль результатов

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

Сравнение с LangGraph и CrewAI

LangGraph

LangGraph — это графовый рантайм для агентов от создателей LangChain. Мощный, гибкий, с поддержкой стейтов, чекпоинтов, стриминга. Но:

  • Тянет за собой весь LangChain (или большую его часть)
  • Граф нужно описывать явно — каждый узел, каждое ребро
  • Python-only
  • Сложность конфигурации растёт нелинейно

Open-multi-agent выигрывает в простоте: вы описываете что нужно сделать, а не как маршрутизировать между нодами.

CrewAI

CrewAI ближе по идеологии — тоже «команда агентов». Но:

  • 40+ зависимостей
  • Привязка к OpenAI API по умолчанию
  • Python-only
  • Много «магии» — декораторы, автоматическая маршрутизация, неочевидное поведение

Open-multi-agent прозрачнее: три зависимости, код читается как обычный TypeScript.

Когда TypeScript-стек лучше

  1. Ваш продукт на TypeScript. Агенты живут рядом с бэкендом, используют те же типы, те же инструменты.
  2. Edge/serverless. Node.js-агенты деплоятся на Cloudflare Workers, Vercel Edge, Deno Deploy. Python-агенты — нет (или с костылями).
  3. Минимальный footprint. Три зависимости vs. сотня — разница в размере образа, времени холодного старта, поверхности атаки.
  4. Локальные модели. Ollama работает на любой машине с GPU. Не нужен API-ключ, не нужен интернет, данные не уходят наружу.

Паттерн runTeam() на практике

Допустим, вы хотите проанализировать конкурентов. Цель: «Собрать информацию о пяти конкурентах и сравнить их по фичам, ценам и отзывам».

runTeam() разобьёт это на:

  • Агент 1: исследовать конкурента A
  • Агент 2: исследовать конкурента B
  • ...
  • Агент 5: исследовать конкурента E

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

На Python-фреймворке вы бы описывали граф из 7-8 узлов, настраивали маршрутизацию, определяли стейт-схему. Здесь — один вызов runTeam() с текстовым описанием цели.

Ограничения

Нужно быть честным:

  • Экосистема инструментов. У LangChain тысячи интеграций — векторные хранилища, коннекторы к базам, парсеры документов. У open-multi-agent — три зависимости. Это и сила, и слабость.
  • Зрелость. LangGraph и CrewAI — проекты с командами, бюджетами, документацией. Open-multi-agent — молодой open-source проект.
  • Сложные графы. Если вам нужен DAG с условными переходами, чекпоинтами, human-in-the-loop — LangGraph сделает это лучше.
  • Ollama-only. Привязка к Ollama ограничивает выбор моделей (хотя Ollama поддерживает большинство популярных open-source моделей).

Когда выбирать open-multi-agent

Этот фреймворк идеален если:

  • Вы на TypeScript-стеке и не хотите тащить Python
  • Вам нужна параллельная обработка задач, а не сложный граф
  • Вы работаете с локальными моделями и не хотите зависеть от облачных API
  • Вам важен минимальный footprint — три зависимости, понятный код, быстрый старт
  • Вы self-host'ите инфраструктуру и контролируете, где работают модели

Что это значит для индустрии

Open-multi-agent — это симптом более широкого тренда: деPythonизация AI-стека. TypeScript-экосистема для AI растёт — Vercel AI SDK, LangChain.js, ModelFusion. Разработчики на TypeScript больше не хотят переключаться на Python ради агентов.

Три зависимости — это заявление. Не «мы тоже можем», а «может, сложность Python-фреймворков — необязательная?». Может, для 80% задач с мультиагентными системами не нужен граф из 30 узлов. Может, достаточно runTeam(), понятного TypeScript-кода и локальной модели через Ollama.

Проверить легко — проект открытый.

Автор: Алик Завалишев

Эксперт по ИИ и автоматизации процессов

Больше статей