Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Orchestrátor je provider jen na úrovni bootstrapu a jeho worktrees jsou dočasné checkouty

Orchestrátor je provider jen na úrovni bootstrapu a jeho worktrees jsou dočasné checkouty

majordomus://adr/adr-0024přijato architekturaproviderworktree

odkazuje na

Nic. Tento objekt nedeklaruje žádný odkaz.

odkazuje na něj

24. Orchestrátor je providerem jen na úrovni bootstrapu a jeho worktrees jsou odkládací checkouty

Kontext

Tabulka poskytovatelů ví o nástroji, který v tomto repozitáři funguje, tři věci: bootstrap soubor, který čte, klientskou konfiguraci, jež pro něj startuje sdílený server MCP, a hooky, jimiž předává Majordomovi prompt dřív, než ho model uvidí (ADR 0009), a označuje, kde začíná a končí jeho vlastní epizoda (ADR 0015). Claude Code má všechny tři; Codex a Gemini první dvě; agents a generic mají bootstrap a nic jiného. Každý dosavadní poskytovatel byl agent: jeden proces, jedna konverzace, jeden povrch hooků.

bb (getbb.app, MIT, github.com/get-bb/bb) je první kandidát jiného tvaru. Je to orchestrátor: server nad SQLite, hostitelský daemon a UI, které spouští jiné agenty jako procesy — Claude Code přes @anthropic-ai/claude-agent-sdk s settingSources: ["user", "project", "local"], Codex přes svůj app server, Cursor, OpenCode, Grok a Hermes přes ACP — a provozuje jich několik najednou nad jedním repozitářem. Jeho vlastní vrstva je tenká: <workspace>/.bb/AGENTS.md připojené k instrukcím každého vlákna bez ohledu na poskytovatele (AGENTS.md v kořeni repozitáře se výslovně nečte), .bb/skills/, skripty pro zřízení a zrušení worktree a pluginy v TypeScriptu, jejichž povrch pro agenta je contributeInstructions a configure, oba synchronní, oba bez textu promptu, žádný neumí spustit příkaz. Události vlákna existují jen za HTTP a WebSocket API serveru.

Dvě fakta byla zjištěna dřív, než byl tento záznam napsán, protože rozhodnutí na nich stojí a ani jedno nešlo vyčíst ze stránky:

  • Hooky souborového systému orchestrátor přežijí. Dokumentace Agent SDK uvádí, že hooky v .claude/settings.json „run automatically in the SDK with no extra configuration“, když settingSources zahrnuje project, což bb nastavuje. Zachycení promptů a hranice epizod pro Claude Code pod bb jsou proto tytéž shimy spouštěné týmiž událostmi jako pod CLI. Průvodce MCP v SDK říká totéž o .mcp.json: „picked up when the project setting source is enabled“, takže konfigurace klienta sdíleného serveru dosáhne vlákna Claude Code i pod bb, s jedním rozdílem, který stojí za znalost — server načtený ze souboru nastavení dostane před prvním tahem dvě sekundy, takže bin/majordomus-mcp sestavující spustitelný soubor na studeném checkoutu ukazuje pending při init a připojí se až poté.
  • Topologie worktree odmítá checkouty orchestrátoru. bb umisťuje spravovaný worktree do ~/.bb/plugins/environment-git-worktree/host-data/worktrees/<thread-id>/<repo> na novou větev. Worktree tam vytvořený 2026-09-09 byl hlášen jako misplaced s worktree.path_mismatch a pre-commit stráž odmítla commit s nápravou majordomus worktree migrate — nápravou, která by přesunula checkout zpod běžícího vlákna bb. Dočasné kořeny, které topologie již toleruje, tedy dočasný adresář a .claude/worktrees/, jsou seznam zkompilovaný do ephemeral_root_of v apps/majordomus-cli/src/worktree/service.rs, ne data, která deklaruje poskytovatel.

Otázkou není, zda lze bb podporovat. Je to, kterou ze tří úrovní orchestrátor zaujímá a kdo deklaruje cesty, které vytváří.

Rozhodnutí

Orchestrátor je poskytovatel jen na úrovni bootstrapu. Dostane řádek v tabulce poskytovatelů s projekcí bootstrapu a bez konfigurace klienta a bez hooků — tvar, který už mají codex a gemini — a projekce je jedna řádka, která ukazuje na .ai/README.md, vykreslená stejným rendererem jako každý jiný bootstrap (tvrzení provider-projections-one-renderer). Pro bb je tou projekcí <workspace>/.bb/AGENTS.md. Není to kopie AGENTS.md: bb ji připojuje za instrukce každého pluginu a agent, kterého spustí, načte nad ní svůj nativní bootstrap, takže druhé vyslovení jakéhokoli pravidla by byla duplikace, kterou vrstva zakazuje.

Zachycení promptů a hranice epizody zůstávají u agenta, kterého orchestrátor spouští. Jsou to hooky agenta, spouštějí se pod orchestrátorem přesně tak, jako pod vlastním CLI agenta, a Majordomus zaznamenává providera, který je spustil. Pro samotný orchestrátor se nezapisuje žádný řádek adaptéru, protože nemá událost, která by příkazu předala prompt před modelem, a adaptér, který by dotazoval svůj server, by byl jiný mechanismus pod stejným jménem (argument ADR 0009, beze změny).

Odkládací kořeny, které poskytovatel vytváří, jsou data, která poskytovatel deklaruje vedle svého bootstrapu, a topologie čte tuto deklaraci místo zkompilovaného seznamu. Checkout pod deklarovaným odkládacím kořenem je odkládací checkout relace se standardním postavením, jaké mu už dává ADR 0021: hlásí se, nikdy se nemigruje bez vyzvání, nástroj jej nikdy neuklízí a ochrana odmítne commit z něj s nápravou pokračovat v kanonickém worktree, ne přesunout checkout. Dva dnes zkompilované kořeny se stávají prvními dvěma deklaracemi; plugins/environment-git-worktree/host-data/worktrees od bb pod jeho datovým adresářem je třetí.

Zamítnuté alternativy

Plný adaptér nad API orchestrátoru. bb vystavuje každou událost vlákna přes HTTP a WebSocket, takže by se proces mohl přihlásit a zapisovat záznamy promptů a epizod pro každého agenta, kterého bb spouští, včetně ACP. Zamítnuto: je to démon samotného Majordomu, který se dotazuje serveru, zatímco každý jiný záchyt je shim, který poskytovatel sám vyvolá v okamžiku události. Záznamy by vznikaly druhým mechanismem s druhým způsobem selhání a agenti ACP, které by pokryl, nemají vlastní povrch hooků, ke kterému by se mohli vrátit, takže pokrytí by bylo skutečné a záruka ne.

Migrace worktree orchestrátoru do kontejneru. Topologie má migraci s kontrolou otisku; worktree bb by šly přesunout do <repo>-wt/<branch> tak, jak bylo 2026-09-07 přesunuto 32 sourozeneckých. Zamítnuto: bb ty cesty vlastní, eviduje je podle id vlákna ve své databázi a odstraňuje je, když je vlákno archivováno. Přesunutý checkout je takový, který bb už nenajde, a odstraněný takový, který by topologie hlásila jako zastaralý. ADR 0021 už tuto hranici pro .claude/worktrees/ vytyčuje.

Odmítnout spravovaná worktree pro tento repozitář. bb může spustit vlákno ve vlastním checkoutu projektu. Zamítnuto jako jediná odpověď: je to použitelná volba operátora a bootstrap to může říci, ale pravidlo, že výchozí režim nástroje zde nefunguje, je pravidlo, které poruší další, kdo nástroj nainstaluje. Topologie musí odpovídat správně pro cestu, kterou bb skutečně používá.

Přidat kořen bb do zkompilovaného seznamu. Jedno další is_inside v ephemeral_root_of. Zamítnuto: poslední pevně zapsaný seznam v objevování skryl devět objektů z dvaceti dvou a doktrína je od té doby běhová data nad zkompilovanými znalostmi. Každý orchestrátor by jinak byl změnou kódu v modulu, který s ním nemá nic společného.

Důsledky

  • Tabulka poskytovatelů získá řádek bb s bootstrapem .bb/AGENTS.md, konfigurací klienta -, hooky -; share/providers/bb.tmpl vykreslí jednořádkový odkaz; kontrola projekce bootstrapu ho pokrývá stejně jako AGENTS.md a CLAUDE.md.
  • Deklarace poskytovatele získá pole pro scratch kořeny, s dvěma stávajícími kořeny přesunutými do dat pod poskytovatele, kteří je vytvářejí (claude-code pro .claude/worktrees, dočasný adresář jako vlastní nástroje) a kořenem bb deklarovaným relativně k jeho datovému adresáři, jehož výchozí hodnota je ~/.bb a přepis BB_DATA_DIR. ephemeral_root_of čte deklarace; jeho testy se přesouvají s ním.
  • Náprava ochrany pro odkládací checkout už jmenuje majordomus worktree create; pro bb platí beze změny. Mění se to, že vlákno bb, které commituje ze svého worktree, je odmítnuto s touto nápravou, místo aby mu bylo řečeno migrovat. Vlákno bb, které musí commitovat, pracuje v projektovém checkoutu a .bb/AGENTS.md to říká v jednom řádku odkazem na pravidlo.
  • Zachycení promptů a hranice epizody se zaznamenávají proti claude-code, když Claude Code běží pod bb, ne proti bb. Čtenář archivu vidí agenta, ne orchestrátor, což je pravda o tom, kdo prompt viděl. Agenti, které bb provozuje přes ACP, zůstávají nezachyceni a capture status o nich říká unsupported jako dnes.
  • Obě ověření byla provedena. Worktree vytvořený na cestě bb je hlášen jako ephemeral, „vytvořeno bb“, a kontrola odmítne commit z něj s nápravou pokračovat v kanonickém worktree. A 2026-09-09 byl bb spuštěn headless z odkládacího datového adresáře nad klonem této větve a v checkoutu projektu bylo spuštěno jedno vlákno Claude Code s jednoslovným promptem: prompt byl zachycen jako provider: claude-code, event: UserPromptSubmit, s id relace poskytovatele bb, větví a head; epizodu otevřel shim SessionStart před promptem; bin/majordomus-mcp byl spuštěn z .mcp.json a začal sestavovat spustitelný soubor; a bb thread stop uzavřel epizodu s výsledkem interrupted, což je pravda o agentovi zastaveném zvenčí. Samotná archivace vlákna nezavřela nic: proces agenta přežije vlákno, dokud ho bb nezastaví nebo neuvolní, takže operátor, který archivuje a odejde, nechá až do té doby otevřenou epizodu.
  • Nic z toho není specifické pro bb. Další orchestrátor je řádek, šablona a deklarovaný kořen.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0024-an-orchestrator-is-a-provider-only-at-the-bootstrap-level-an.md
identity
adr-0024
dostupné také jako
Zdroj MCP majordomus://adr/adr-0024 · majordomus entity show adr/adr-0024 · GET /api/v1/entity?uri=majordomus://adr/adr-0024
v Cockpitu
/cockpit/objects/adr/adr-0024

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

Prohledává názvy a popisy všech stránek, které tento web publikuje.