Przejdź do głównej zawartości

Wzorce orkiestracji wielu agentów: planista, wykonawcy, sędzia

Wzorce orkiestracji wielu agentów to cztery sposoby podziału pracy programistycznej między agentów kodujących: fan-out/fan-in, pipeline, best-of-N z sędzią oraz rozdzielenie autora i recenzenta. Każdy opłaca się tylko wtedy, gdy praca dzieli się na części weryfikowalne niezależnie albo gdy błędna odpowiedź kosztuje więcej niż dodatkowe przebiegi; inaczej tylko mnoży koszt tokenów.

Uruchamiasz ośmiu agentów w serwisie rozliczeń. Po południu trzy gałęzie przepisały ten sam routes/index.ts, dwóch agentów wymyśliło różne kształty jednego zdarzenia, „recenzent” zatwierdził kod z własnego kontekstu, a dzienny budżet zniknął. Narzędzie zrobiło, o co prosiłeś. To wzorzec nie pasował do pracy.

Ta strona jest dla programistów, którzy uruchamiają agentów, i tech leadów, którzy decydują, ilu pracuje naraz i co oznacza „gotowe”.

  • Tabelę decyzyjną: do którego wzorca pasuje zadanie, a które zostają przy jednym agencie.
  • Planistę, wykonawcę i sędziego jako pliki w repozytorium: subagenta Claude Code w worktree, sędziego tylko do odczytu, blok [agents] dla Codex.
  • Cztery prompty do skopiowania: dekompozycję, audyt fan-out, ocenę best-of-N, recenzję adwersarialną.
  • Łańcuch weryfikacji, który dowodzi poprawności bez czytania linia po linii.
  • Kontrolę kosztu w każdym narzędziu i typowe awarie.

Polecenia i ustawienia na tej stronie sprawdzono 26.09.2026 w Claude Code 2.1.283 i codex 0.157.1 (--help i kod źródłowy Codex). Szczegóły Cursora sprawdzono na cursor.com 28.08.2026.

Każdy wzorzec łączy trzy role inaczej. Nazywaj je w promptach i definicjach agentów: większość awarii bierze się z tego, że jeden agent po cichu gra dwie role.

RolaRobiNie możeWynik
PlanistaDzieli cel na jednostki, przypisuje każdej jednostce jej pliki, pisze wspólne kontrakty i podaje test akceptacyjny każdej jednostkiPisać kodu implementacjiPlik planu: jednostki, przypisane ścieżki, zależności, polecenie, które dowodzi każdej jednostki
WykonawcaImplementuje albo bada dokładnie jedną jednostkę, we własnym worktree lub VMDotykać plików spoza swojej jednostki ani edytować testów, które go oceniająGałąź albo raport oraz wynik polecenia akceptacyjnego
SędziaNajpierw uruchamia deterministyczne sprawdzenia, potem porównuje albo ocenia wyniki wykonawcówEdytować kodu, który ocenia, ani wiedzieć, który agent czy model napisał którego kandydataWerdykt z dowodami: uruchomione polecenia, kody wyjścia, plik i linia

Zespoły pomijają sędziego. Sędzia, który tylko czyta kod, jest drugą opinią; ten, który uruchamia test reprodukujący, sprawdzenie typów i testy toru, a ocenia tylko resztę, jest bramką. Zobacz sprawdzenia oceniane przez model.

Który wzorzec orkiestracji pasuje do twojego zadania?

Dział zatytułowany „Który wzorzec orkiestracji pasuje do twojego zadania?”

Wybieraj na podstawie kształtu pracy, nie liczby agentów, których możesz uruchomić.

WzorzecKształtOpłaca się, gdyTylko mnoży koszt, gdySędzia sprawdza
Fan-out/fan-inTen sam krok na wielu niezależnych elementach, potem jedno scalenieElementy mają osobne pliki, nie dzielą zmieniających się kontraktów i każdy ma własne sprawdzenieElementy dzielą pliki albo kontrakt, który wciąż się zmienia; scalanie przerabia wszystkoSprawdzenie każdego elementu, potem jeden przebieg integracyjny po scaleniu
PipelineEtapy po kolei (specyfikacja → plan → implementacja → weryfikacja → code review), każdy z własnymi narzędziami i kontekstemEtapy potrzebują różnych uprawnień albo kontekstu, a każdy przekazuje plik, który da się zwalidowaćEtapy przekazują sobie prozę; jeden agent zmieściłby całe zadanie w kontekścieArtefakt na granicy każdego etapu, względem schematu albo listy kontrolnej
Best-of-N z sędziąN niezależnych prób jednego problemu, jeden sędzia wybieraPrzestrzeń rozwiązań jest szeroka, błędna pierwsza odpowiedź jest droga, a sędzia może orzec na podstawie dowodówZmiana jest mechaniczna, więc próby się zbiegają; albo sędzia może wydać tylko opinięTest reprodukujący, benchmark albo zgodność ze specyfikacją dla każdego kandydata
Autor i recenzentJeden agent pisze, drugi, ze świeżym kontekstem, recenzuje, autor poprawiaPrawie zawsze na poziomie pull requesta: to najtańszy wzorzec o najwyraźniejszym zyskuPętla nie ma reguły zatrzymania i para spiera się przez kolejne rundyUwagi z plikiem, linią i nieprzechodzącym poleceniem, a nie preferencje stylistyczne

Resztę obejmują dwie reguły. Problem, który jeden agent mieści w kontekście, zostaje przy jednym agencie: orkiestracja kupuje szerokość, izolację albo niezawodność, nigdy tańszy trudny problem. Zadanie kończące się jednym warunkiem „przechodzi/nie przechodzi” („build jest zielony”) to pętla celu; zobacz polecenie /goal.

Fan-out uruchamia jednego wykonawcę na element; fan-in zbiera i weryfikuje wyniki, jak w audytach, migracjach plik po pliku i uzupełnianiu testów. Wzorzec opłaca się, gdy każdy element ma własne pliki, nie zależy od niczego, co inny wykonawca wciąż pisze, i potrafi udowodnić swoją poprawność samodzielnie własnymi testami, sprawdzeniem typów i lintem. Element, który oblewa którykolwiek warunek, należy do szeregowego kroku bazowego przed fan-outem: migracje, wspólne typy, rejestracje w plikach barrel.

Jakość fan-outu najczęściej ginie na etapie fan-in. Wymagaj trzech rzeczy:

  • Rozliczenia pokrycia. Raport wymienia niezakończone elementy; „brak uwag” z 60% plików to nie „brak uwag”.
  • Deduplikacji i obalania. Drugi przebieg próbuje obalić każdą uwagę, zanim do ciebie trafi.
  • Jednego przebiegu integracyjnego. Pełny zestaw testów uruchamia się raz na scalonym wyniku, bo każdy tor udowodniono tylko w izolacji.

W Claude Code poprzedź prompt słowem ultracode albo dopisz „use a workflow”, by uruchomić dynamiczny workflow; w Codex i Cursorze agent deleguje pracę subagentom.

Pipeline uruchamia etapy po kolei, a każdy dostaje tylko potrzebny mu kontekst i narzędzia: planista tylko do odczytu, implementujący w worktree, weryfikator, który uruchamia testy, ale nie edytuje. Opłaca się, gdy te uprawnienia mają znaczenie albo gdy kontekst jednej sesji by się zapełnił.

Cała konstrukcja pipeline’u opiera się na przekazaniu między etapami. Każdy etap zapisuje plik o kształcie, który da się sprawdzić: plan.json względem schematu, gałąź względem jej polecenia akceptacyjnego. Etapy, które przekazują sobie prozę, kumulują nawzajem swoje błędy.

Człowiek zatwierdza plan i scalenie (zobacz łańcuch weryfikacji niżej). Wersję od zgłoszenia do pull requesta opisuje strona od zgłoszenia do PR bez rąk na klawiaturze.

Kiedy best-of-N z sędzią jest wart dodatkowych przebiegów?

Dział zatytułowany „Kiedy best-of-N z sędzią jest wart dodatkowych przebiegów?”

Best-of-N uruchamia N niezależnych prób jednego problemu, a sędzia wybiera jedną. Opłaca się przy błędzie o niejasnej przyczynie, poprawce wydajności z kilkoma sensownymi podejściami albo decyzji projektowej, pod warunkiem że test reprodukujący albo benchmark rozstrzyga, która próba zadziałała.

Tylko mnoży koszt przy pracy mechanicznej (zmiana nazwy, codemod, podbicie zależności), gdzie próby się zbiegają, albo z sędzią bez dowodów.

Trzy reguły sprawiają, że sędzia jest wart swojej ceny:

  • Dowody przed gustem. Sędzia uruchamia na każdym kandydacie test reprodukujący, dotknięty zestaw testów i ewentualny benchmark, a czytelność ocenia tylko wśród tych, którzy przeszli.
  • Porównanie w ciemno. Usuń z kandydatów nazwę agenta, model i numer próby, zanim zobaczy je sędzia, i zmieniaj ich kolejność między przebiegami.
  • Brak prawa edycji. Sędzia może uruchamiać kandydatów w jednorazowych worktree, ale nigdy nie „dopracowuje” zwycięzcy. Jeśli żaden nie przechodzi, werdykt brzmi „żaden”.

Daj każdej próbie inny punkt startu (nieprzechodzący test, ostatnie commity, przepływ danych na granicy API); identyczne prompty na jednym modelu często dają niemal identyczne próby. Jeśli diffy nadal się zbiegają, zadanie jest mechaniczne: zostań przy jednej próbie.

Agent recenzujący własną pracę wnosi martwe pola, które spowodowały błąd. Recenzent ze świeżym kontekstem, narzędziami tylko do odczytu i stałym formatem raportu wyłapuje inne błędy; inny model albo dostawca odbiega jeszcze bardziej.

Dwa ograniczenia chronią przed pętlą bez końca. Recenzent zgłasza tylko uwagi poparte plikiem, linią i poleceniem pokazującym problem, więc styl nie blokuje. Autor dostaje najwyżej dwie rundy poprawek, potem otwarte uwagi trafiają do człowieka. Akceptacja nigdy nie zastępuje CI.

Wszystkie trzy narzędzia realizują cztery wzorce innymi mechanizmami: skryptowane workflow w Claude Code, subagenci i próby w chmurze w Codex, subagenci i agenci w chmurze we własnych VM w Cursorze.

WzorzecMechanizm w Cursorze
Fan-out/fan-inSubagenci; od wydania z 19.08.2026 „can now run on their own virtual machines”. Worktrees do torów, które uruchamiasz sam.
PipelineAutomations uruchamiają agentów w chmurze według harmonogramu albo na zdarzenia (GitHub, Slack, Linear, webhooki i inne), więc każdy etap może reagować na pull request albo etykietę z poprzedniego etapu.
Best-of-NTen sam prompt na kilku Cloud Agents, każdy z innego punktu startu, oceniony promptem sędziego z tej strony; skryptuje to Cursor SDK.
Autor i recenzentBugbot recenzuje pull requesty jako osobny agent.

Wyzwalacze i API: agenci w chmurze i automatyzacje.

Uruchom planistę, wykonawców i sędziego w Claude Code

Dział zatytułowany „Uruchom planistę, wykonawców i sędziego w Claude Code”

Ten przykład łączy trzy role w fan-out jednostek implementacyjnych. Zacommituj pliki, żeby cały zespół miał tych samych wykonawców i sędziego.

  1. Zaplanuj i zatwierdź. Uruchom prompt planisty z tej strony. Czytaj plan.json, nie kod: żadna ścieżka w dwóch jednostkach, polecenie akceptacyjne dla każdej. Najpierw scal szeregowo kroki bazowe.

  2. Odgałęziaj wykonawców od swojej pracy, nie od main. Subagent z isolation: worktree odgałęzia się od domyślnej gałęzi i nie zobaczyłby kroków bazowych. Dodaj to do .claude/settings.json:

    .claude/settings.json
    {
    "worktree": {
    "baseRef": "head"
    }
    }
  3. Zdefiniuj wykonawcę. Jedna jednostka na wywołanie, własne worktree i polecenie akceptacyjne jako warunek zatrzymania:

    .claude/agents/unit-implementer.md
    ---
    name: unit-implementer
    description: Implements exactly one unit from plan.json in an isolated worktree. Use for each parallel unit after the foundation has landed.
    tools: Read, Grep, Glob, Edit, Write, Bash
    isolation: worktree
    ---
    You implement one unit from plan.json. The unit id is in your task.
    Edit only files matching that unit's owned_paths. Never edit files under tests/ that existed before you started.
    When done, run the unit's acceptance commands and commit.
    Report: unit id, branch name, files changed, each acceptance command with its exit code.
    If an acceptance command fails after three attempts, stop and report the failure instead of widening your scope.
  4. Zdefiniuj sędziego. Bez Edit i Write, więc nie może sam sprawić, że jego werdykt stanie się prawdą:

    .claude/agents/unit-judge.md
    ---
    name: unit-judge
    description: Verifies one finished unit against plan.json. Use after a unit-implementer reports done.
    tools: Read, Grep, Glob, Bash
    ---
    You verify one unit branch. You never edit files.
    1. Run git diff --name-only against the base and fail the unit if any path is outside its owned_paths.
    2. Fail the unit if any pre-existing test file changed.
    3. Run the unit's acceptance commands yourself and record exit codes.
    4. Only then read the diff for correctness issues the tests cannot catch.
    Output: PASS or FAIL, then each check with its evidence (command, exit code, file:line).
  5. Fan-out. Poproś Claude: „Start one unit-implementer per unit in plan.json whose depends_on is satisfied, then run unit-judge on each finished branch.” Postęp śledź w /tasks.

  6. Fan-in. Scalaj przechodzące gałęzie w kolejności zależności, uruchom raz polecenia integration i otwórz pull request. CI powtarza bramki; scalenie zatwierdza programista, który uruchomił przebieg.

Żeby orkiestracja była powtarzalna, zapisz ją jako dynamiczny workflow. Poniższy best-of-three uruchamia trzy propozycje tylko do odczytu z różnych punktów startu, potem sędziego, który testuje każdą w jednorazowym worktree.

.claude/workflows/best-of-three-fix.js
export const meta = {
name: 'best-of-three-fix',
description: 'Three independent fix proposals for one bug, judged against its reproduction test',
}
const proposal = {
type: 'object',
required: ['root_cause', 'diff', 'evidence'],
properties: {
root_cause: { type: 'string' },
diff: { type: 'string' },
evidence: { type: 'string' },
},
}
phase('Propose')
const angles = [
'start from the failing test and trace inward',
'start from the recent commits that touched this module',
'start from the data flow at the API boundary',
]
const candidates = await pipeline(angles, (angle) =>
agent(
`Bug: ${args.bug}. Reproduction: ${args.repro}. Investigate; ${angle}. ` +
'Do not edit files. Return the root cause, a unified diff that fixes it, and command output that supports it.',
{ label: angle, schema: proposal },
),
)
phase('Judge')
return await agent(
'You are the judge; do not edit the main checkout. For each candidate below, create a throwaway worktree, ' +
`apply its diff, run ${args.repro} and the module's test suite, record exit codes, then remove the worktree. ` +
'Disqualify any candidate that fails or changes a test file. Pick the smallest passing root-cause fix, or none.\n' +
JSON.stringify(candidates.filter(Boolean)),
)

Uruchom go promptem w rodzaju Run /best-of-three-fix with bug "proration is off by one day at month end" and repro "npx vitest run tests/billing/proration.test.ts". Kandydaci nie niosą nazw agentów, więc sędzia porównuje ich w ciemno. Kolejność wyznacza tablica angles; żeby ją przetasować, przekaż ziarno albo permutację przez args (skrypty workflow nie mogą wywołać Math.random()).

Wbudowane mechanizmy wystarczą przy jednym dostawcy. Orkiestrator dodaj dla mieszanej floty, interfejsu nadzoru albo przekazania pracy między narzędziami.

NarzędzieRealizowany wzorzecInstalacjaGwiazdki GitHub (26.09.2026)
oh-my-claudecodeZespoły fan-out w Claude Code (/team 3:executor "fix all TypeScript errors"); omc team uruchamia wykonawców Claude, Codex albo Gemini w tmux/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode, potem /plugin install oh-my-claudecode39 357
Plugin Codex dla Claude Code (OpenAI)Autor i recenzent u różnych dostawców: /codex:review, /codex:adversarial-review/plugin marketplace add openai/codex-plugin-cc, potem /plugin install codex@openai-codex33 594
Gas TownPlanista i wykonawcy: instancja Claude Code w roli „Mayor” koordynuje agentów wykonawców przez rejestr Beadsbrew install gastown (macOS)18 195
Claude SquadFan-out pod twoim nadzorem: jedna sesja tmux i jedno worktree na agenta, z widokiem diffubrew install claude-squad8533
CLI Agent Orchestrator (AWS Labs)Przekazanie od nadzorcy do wykonawców przez tmux, z małym interfejsem webowymuv tool install git+https://github.com/awslabs/cli-agent-orchestrator.git@main --upgrade1350

Pełny katalog: uruchamianie wielu agentów naraz i przegląd narzędzi agentowych.

Jak zweryfikować wynik orkiestracji bez czytania każdego diffu?

Dział zatytułowany „Jak zweryfikować wynik orkiestracji bez czytania każdego diffu?”

Zbuduj łańcuch z bramek, które działają bez ciebie, tak by każdy etap produkował dowody:

  1. Bramka toru. Polecenia akceptacyjne jednostki przechodzą na jej gałęzi, a sprawdzenie ścieżek dowodzi, że nie wyszła poza swój tor. Zwykły skrypt sprawdza ścieżki bez modelu, a potem uruchamia polecenie akceptacyjne:

    scripts/lane-gate.sh
    #!/usr/bin/env bash
    # Usage: scripts/lane-gate.sh BASE_BRANCH 'src/notifications/|src/api/preferences/' npx vitest run tests/notifications
    set -euo pipefail
    outside=$(git diff --name-only "$1"...HEAD | grep -Ev "^($2)" || true)
    if [ -n "$outside" ]; then
    echo "Lane violation, files outside the lane:"; echo "$outside"; exit 1
    fi
    "${@:3}" # the unit's acceptance command
  2. Sędzia. Osobny agent tylko do odczytu ponownie uruchamia rozstrzygające sprawdzenia; każda linia werdyktu niesie polecenie i kod wyjścia.

  3. Bramka integracyjna. Po fan-in pełny zestaw testów, sprawdzenie typów i lint uruchamiają się raz na połączonej gałęzi i wyłapują interakcje, których żaden tor nie widział.

  4. CI. Pull request przechodzi te same bramki na czystej maszynie. APPROVE od agenta nigdy go nie zastępuje.

  5. Akceptacja człowieka. Programista, który uruchomił przebieg, zatwierdza plan przed fan-outem i scalenie po CI. Tech lead jest właścicielem .claude/agents/, .claude/workflows/ i ról [agents] w Codex przez CODEOWNERS: zmiana sędziego zmienia znaczenie słowa „zweryfikowane”.

Dołącz plan, werdykty i wyniki CI do pull requesta jako pakiet dowodów. Jak powstrzymać wykonawców przed osłabianiem testów, które ich oceniają, opisuje strona o ochronie wyroczni.

Koszt rośnie z liczbą agentów, a nie z rozmiarem wyniku. Inżynier z DoltHub napisał, że godzina pracy z Gas Town „cost me about $100 in Claude tokens. That’s about 10X the cost of a normal Claude Code session per unit time” (Tim Sehn, blog DoltHub, 15.01.2026; jeden użytkownik i jedna konfiguracja, nie benchmark). Dokumentacja workflow Anthropic mówi, że pojedynczy przebieg workflow „can use meaningfully more tokens than working through the same task in conversation”.

Ograniczenia w każdym narzędziu:

KontrolaClaude Code 2.1.283Codex 0.157.1
WspółbieżnośćDomyślnie 20 działających subagentów na sesję (CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS); domyślnie 16 równoległych agentów workflow (CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS, od 1 do 256)[agents] max_threads
Rozmiar jednego przebiegu1000 agentów na przebieg workflow; ostrzeżenie Large workflow powyżej 25 agentów albo prognozowanych 1,5 mln tokenów; workflowSizeGuideline (/config) ustala docelowy rozmiar — domyślnie medium (mniej niż 10 agentów), small w planie Pro--attempts w codex cloud exec przyjmuje wartości od 1 do 4
Wydatkiclaude -p --max-budget-usd dla przebiegów headless[goals] max_goal_token_budget; tokeny zagnieżdżonych subagentów się do niego wliczają
Model dla rolimodel i effort w pliku każdego subagentadefault_subagent_reasoning_effort, default_subagent_model

Cursor rozlicza agentów w chmurze według cennika API wybranego modelu (sprawdzone 28.08.2026); każdy przebieg uruchomiony skryptem przez @cursor/sdk anuluj po czasie (sterowanie agentami z kodu).

Każdą rolę zaczynaj na domyślnym modelu narzędzia, dostrajaj effort, zanim zmienisz model, i przenoś na tańszy model tylko mechanicznych wykonawców, gdy zaakceptowana praca nie spada (przegląd modeli). Zacznij od jednego katalogu i mierz koszt na zaakceptowaną zmianę.

Konflikty w plikach barrel, rejestracji tras albo wspólnych typach oznaczają, że planista przypisał wspólny plik do dwóch jednostek. Przenieś go do kroku bazowego, scal i zrób rebase pozostałych torów; powtórce zapobiega bramka toru.

Wykonawcy implementują od nowa kod, który już jest na twojej gałęzi

Dział zatytułowany „Wykonawcy implementują od nowa kod, który już jest na twojej gałęzi”

Wykonawca Claude Code z isolation: worktree odgałęził się od domyślnej gałęzi, bo worktree.baseRef ma domyślnie wartość "fresh". Ustaw "baseRef": "head" albo sam utwórz worktree z właściwej gałęzi.

Kandydaci przechodzą przez sędziego, a potem oblewają CI: sędzia czyta zamiast uruchamiać sprawdzenia, dzieli kontekst z autorem albo może edytować. Odbierz sędziemu Edit i Write, wymagaj polecenia i kodu wyjścia w każdej linii werdyktu i porównaj pięć ostatnich werdyktów z CI; jeśli się nie zgadzają, błąd tkwi w prompcie sędziego.

Wykonawców zatrzymano albo trafili na nienaprawialny błąd API (lub na limit zużycia w przebiegu claude -p albo w tle), a fan-in pominął ich puste wyniki (takie wywołanie agent() w workflow Claude Code zwraca null). Wymagaj listy „niezakończone” i uruchamiaj ponownie tylko te elementy.

Przebieg stoi albo autor i recenzent nie mogą się zbiec

Dział zatytułowany „Przebieg stoi albo autor i recenzent nie mogą się zbiec”

Wykonawca w tle czekający na niezatwierdzone narzędzie stoi godzinami: zezwól z góry na polecenia testów, lintu i odczytu, a destrukcyjne zostaw zabronione. Para autor–recenzent w piątej rundzie potrzebuje reguły zatrzymania: dwie rundy poprawek, potem człowiek.

Zobacz też harnessy wieloagentowe i porównanie agentów w tle i w chmurze.