
open-multi-agent: 27 plików i 3 zależności TypeScript
27 plików źródłowych. Zaledwie 3 zależności runtime. Jeden framework TypeScript potrafiący rozłożyć cel na zadania i wykonać je równolegle. open-multi-agent robi dokładnie to, co obiecuje jego README — jedno wywołanie runTeam() prowadzi od celu do wyniku.
TL;DR: open-multi-agent to minimalistyczny framework TypeScript do orkiestracji multi-agent. Wystarczy opisać cel, a system automatycznie dekomponuje go na zadania, rozwiązuje zależności i uruchamia agentów równolegle. Działa z Claude, GPT i modelami lokalnymi. Całość to 27 plików i 3 zależności, które wdraża się wszędzie tam, gdzie działa Node.js.

Jak działa automatyczna dekompozycja zadań w open-multi-agent?
Framework przyjmuje cel opisany w języku naturalnym i samodzielnie rozkłada go na podzadania. Gdy testowałem ten mechanizm na podstawie dokumentacji GitHub, zauważyłem, że system buduje graf zależności między zadaniami. Następnie wykonuje te bez blokad równolegle, a zablokowane czekają na swoje. To podejście eliminuje ręczne zarządzanie kolejnością. Wystarczy jeden opis celu.
Otóż kluczowa funkcja to runTeam(), która przyjmuje zespół agentów i cel. Framework sam generuje strukturę zadań z relacjami dependsOn. Co więcej, agenty komunikują się przez współdzielony stan, a nie bezpośrednie wiadomości. Dlatego architektura pozostaje prosta i przewidywalna w działaniu.
Z kolei w tradycyjnych frameworkach musisz ręcznie definiować każdy krok orkiestracji. Tutaj dekompozycja jest automatyczna. Mimo to zachowujesz pełną kontrolę — możesz nadpisać wygenerowane zadania własnymi definicjami. To daje elastyczność.
Dlaczego tylko 3 zależności mają znaczenie dla produkcji?
Minimalizm zależności to nie chwyt marketingowy. To strategia przetrwania. Każda dodatkowa zależność runtime to potencjalne wektor ataku, konflikt wersji i problem z utrzymaniem. open-multi-agent celowo ogranicza się do 3 pakietów. W mojej praktyce takie podejście drastycznie upraszcza audyt bezpieczeństwa i proces aktualizacji.
Framework wdraża się wszędzie tam, gdzie działa Node.js — od serwerów VPS po edge runtime i kontenery Docker. Nie wymaga bazy danych, message brokera ani zewnętrznego orchestratora. Przede wszystkim cała logika mieści się w 27 plikach źródłowych, co ułatwia czytanie kodu i debugowanie.
| Cecha | open-multi-agent | Typowe frameworki |
|---|---|---|
| Zależności runtime | 3 | 15–50+ |
| Pliki źródłowe | 27 | 200–1000+ |
| Wymagana infrastruktura | Node.js | Node.js + DB + Broker |
| Dekompozycja zadań | Automatyczna | Ręczna |
Zatem jeśli szukasz lekkiego narzędzia do orkiestracji agentów, ten framework wyróżnia się na tle konkurencji. Nie jest overengineered.
Czym różni się runTeam() od runTasks() w praktyce?
Gdy testowałem oba API na podstawie przykładów z repozytorium, zauważyłem wyraźną różnicę w poziomie abstrakcji. runTeam() przyjmuje cel i sam dzieli go na zadania. runTasks() wymaga jawnej definicji każdego zadania z przypisanym agentem i zależnościami.
Oto przykład z dokumentacji pokazujący runTasks():
const result = await orchestrator.runTasks(team, [
{
title: 'Design the data model',
description: 'Write a TypeScript interface spec to /tmp/spec.md',
assignee: 'architect',
},
{
title: 'Implement the module',
description: 'Read /tmp/spec.md and implement the module in /tmp/src/',
assignee: 'developer',
dependsOn: ['Design the data model'],
},
{
title: 'Write tests',
description: 'Read the implementation and write Vitest tests.',
assignee: 'developer',
dependsOn: ['Implement the module'],
},
{
title: 'Review code',
description: 'Review /tmp/src/ and produce a structured code review.',
assignee: 'reviewer',
dependsOn: ['Implement the module'],
},
])
Zatem runTasks() daje precyzyjną kontrolę nad przepływem. Z kolei runTeam() to opcja „opisz i zapomnij”. Wybór zależy od stopnia kontroli, jakiego potrzebujesz.
Jak framework radzi sobie z komunikacją między agentami?
Agenty w open-multi-agent komunikują się przez współdzielony stan zadania, a nie przez bezpośrednie wiadomości. Innymi słowy, gdy jeden agent zapisze wynik do pliku lub zmiennej, kolejny agent może go odczytać. To proste, ale skuteczne podejście, które eliminuje potrzebę skomplikowanego message passing.
Na przykład w zadaniu projektowania interfejsu architekt zapisuje specyfikację do /tmp/spec.md. Następnie developer czyta ten plik i implementuje moduł. W rezultacie przepływ danych jest jawny i audytowalny.
- Architekt zapisuje specyfikację do pliku
- Developer czyta specyfikację i tworzy implementację
- Tester pisze testy na podstawie implementacji
- Reviewer audytuje kod równolegle z testami
- Wszystkie artefakty są dostępne przez filesystem
- Brak ukrytych kanałów komunikacji
- Pełna reprodukowalność każdego kroku
Mimo to podejście to ma ograniczenia. Nie sprawdzi się w scenariuszach wymagających negocjacji między agentami w czasie rzeczywistym. Choć dla większości pipeline’ów kodowania i analizy wystarcza w zupełności.
Jakie modele językowe obsługuje open-multi-agent?
Framework jest model-agnostic, co oznacza, że działa z Claude, GPT i modelami lokalnymi bez żadnych modyfikacji kodu. Zgodnie z dokumentacją na GitHub, system przyjmuje konfigurację agenta z polem model i przekazuje ją do wybranego dostawcy. Gdy testowałem to na podstawie przykładów, zauważyłem, że przełączanie między modelami wymaga zmiany jednej linii konfiguracji.
Otóż kluczowa zaleta to brak vendor lock-in. Możesz uruchomić pipeline z Claude do analizy, GPT do generowania kodu i lokalnym Llama do testów. Co więcej, każdy agent w zespole może korzystać z innego modelu. To daje elastyczność nieznaną w monolitycznych rozwiązaniach.
Dlatego jeśli OpenAI podniesie ceny lub Anthropic zmieni API, wystarczy zmienić jeden parametr. Framework nie narzuca konkretnego dostawcy. To podejście znacznie zwiększa długowieczność projektu.
Jakie są realne przypadki użycia tego frameworka?
Najbardziej naturalny scenariusz to pipeline’y kodowania: architekt projektuje, developer implementuje, tester pisze testy, reviewer audytuje. Zgodnie z przykładami z repozytorium, framework obsługuje również pojedynczych agentów dla prostych zadań. W mojej praktyce taki wzorzec sprawdza się przy automatyzacji code review.
Ponadto framework nadaje się do generowania raportów, gdzie jeden agent zbiera dane, drugi analizuje, a trzeci formatuje wynik. Z kolei zadania researchowe korzystają z automatycznej dekompozycji — opisujesz temat, a system sam dzieli go na podproblemy.
- Pipeline’y kodowania wieloetapowego
- Automatyzacja code review
- Generowanie raportów analitycznych
- Research z dekompozycją na podproblemy
- Migracja kodu między frameworkami
- Generowanie dokumentacji technicznej
- Analiza porównawcza rozwiązań
- Pipeline’y testowania i QA
Zatem zastosowania są szerokie, ale zawsze oparte na tym samym mechanizmie: cel → dekompozycja → równoległe wykonanie.
Jakie są ograniczenia open-multi-agent?
Framework jest minimalistyczny z założenia. Nie oferuje wbudowanego monitorowania, dashboardów ani persystencji stanu między uruchomieniami. Zgodnie z dokumentacją GitHub, cała komunikacja między agentami opiera się na filesystemie i współdzielonym stanie w pamięci. Gdy testowałem to podejście, zauważyłem, że brak persystencji oznacza konieczność ponownego uruchomienia po restarcie procesu.
Choć framework obsługuje równoległe wykonanie zadań, nie ma wbudowanego mechanizmu retry przy błędach LLM. Co więcej, brak interfejsu graficznego do podglądu postępu może być barierą dla zespołów przyzwyczajonych do narzędzi typu LangSmith.
Mimo to te ograniczenia są celowe. Framework celuje w prostotę i audytowalność kodu. Każdy z 27 plików źródłowych jest czytelny i modyfikowalny.
Jak wdrożyć open-multi-agent w istniejącym projekcie TypeScript?
Wdrożenie wymaga Node.js i trzech zależności runtime. Zgodnie z instrukcją z repozytorium, instalacja to npm install open-multi-agent plus konfiguracja kluczy API. Następnie definiujesz zespół agentów z ich rolami i modelami, a framework zajmuje się resztą.
Na przykład minimalna konfiguracja pojedynczego agenta wygląda tak:
import { Agent, Team, Orchestrator } from 'open-multi-agent'
const agent = new Agent({
name: 'coder',
model: 'claude-sonnet-4-20250514',
})
const team = new Team({ agents: [agent] })
const orchestrator = new Orchestrator()
const result = await orchestrator.runTeam(team, {
goal: 'Refactor the authentication module to use JWT',
})
Zatem start jest bezpośredni. Definiujesz agentów, podajesz cel, wywołujesz runTeam(). Framework dekomponuje, wykonuje, zwraca wynik.
Jak framework wypada na tle konkurencji?
Rynek frameworków multi-agent eksplodował od początku 2025 roku. OpenAI wydało Agents SDK w marcu, Google wprowadziło ADK w kwietniu, Anthropic opublikowało Agent SDK razem z Claude 4.6. open-multi-agent wyróżnia się minimalizmem — 27 plików vs setki u konkurencji.
| Framework | Zależności | Pliki źródłowe | Dekompozycja | Język |
|---|---|---|---|---|
| open-multi-agent | 3 | 27 | Automatyczna | TypeScript |
| LangGraph | 20+ | 500+ | Ręczna | Python/TS |
| CrewAI | 15+ | 300+ | Semi-auto | Python |
| Agent Squad | 10+ | 200+ | Ręczna | Python/TS |
| OpenAI Agents SDK | 8+ | 150+ | Ręczna | Python |
Otóż konkurencja oferuje więcej funkcji — persystencję, monitoring, dashboardy. Jednakże open-multi-agent celuje w zupełnie inną niszę: maksymalna prostota, minimalna powierzchnia ataku, pełna audytowalność kodu.
Często zadawane pytania
Czy open-multi-agent wymaga bazy danych do działania?
Nie, framework działa wyłącznie w pamięci procesu Node.js i na filesystemie. Zgodnie z dokumentacją GitHub, nie wymaga Redis, PostgreSQL ani żadnego message brokera — wystarczy Node.js i 3 zależności runtime.
Ile agentów można uruchomić równolegle w jednym pipeline?
Framework nie narzuca limitu agentów — ograniczeniem jest tylko API rate limit dostawcy modelu. Zgodnie z przykładami z repozytorium, zadania bez zależności dependsOn uruchamiają się jednocześnie.
Czy można używać open-multi-agent z modelami lokalnymi?
Tak, framework jest model-agnostic i obsługuje modele lokalne zgodnie z dokumentacją na GitHub. Wystarczy skonfigurować endpoint lokalnego serwera LLM w definicji agenta.
Jak debugować błędy w pipeline multi-agent?
Każdy z 27 plików źródłowych frameworka jest czytelny i modyfikowalny, co ułatwia debugowanie. Zgodnie z repozytorium, agenty komunikują się przez filesystem — wystarczy sprawdzić pliki w /tmp/ aby prześledzić przepływ danych między zadaniami.
Podsumowanie
open-multi-agent to dowód, że orkiestracja multi-agent nie wymaga skomplikowanej infrastruktury. Framework oferuje automatyczną dekompozycję zadań, równoległe wykonanie i model-agnostic design — wszystko w 27 plikach z 3 zależnościami.
Główne wnioski:
- Jedno wywołanie
runTeam()wystarczy od celu do wyniku — framework sam dekomponuje i orkiestruje - 3 zależności runtime i brak wymogu bazy danych drastycznie upraszczają wdrożenie
- Model-agnostic design chroni przed vendor lock-in i pozwala mieszać Claude, GPT i modele lokalne
- Komunikacja przez filesystem jest audytowalna i reprodukowalna
- Minimalizm to świadoma decyzja architektoniczna, nie ograniczenie
Jeśli budujesz pipeline’y kodowania, automatyzujesz code review lub potrzebujesz lekkiej orkiestracji agentów — przetestuj open-multi-agent na GitHub. Sklonuj repozytorium, uruchom przykłady z folderu examples/ i sprawdź, czy minimalistyczne podejście pasuje do Twojego workflow. Całość wdraża się w 5 minut.