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.

Pracovník je požádán o předávku dřív, než se zaplní kontextové okno, provider modem zapnutým politikou

Pracovník je požádán o předávku dřív, než se zaplní kontextové okno, provider modem zapnutým politikou

majordomus://adr/adr-0123navrženo sessionhandoverprovider

odkazuje na

  • put_in_force share/mods/claude-code/majordomus-handover/hooks/register.ts (soubor)
  • put_in_force adr-0015
  • put_in_force adr-0052
  • put_in_force docs/claims/session-lifecycle.md (dokument)
  • put_in_force lib/capture.sh (implementace)
  • put_in_force test/cases/1016_the_worker_is_asked_before_compaction.sh (test)

odkazuje na něj

123. Pracovník je požádán o předávku dřív, než se naplní kontextové okno, modem poskytovatele, který politika zapíná

Kontext

Životní cyklus relace zaznamenává, co se compactionem chystá zahodit. PreCompact odvozuje checkpoint a SessionEnd odvozuje záznam pokračování. Oba jsou odvozené a důvod je uveden tam, kde se zapisují: worker se v tu chvíli na nic neptá a ani by nemohl odpovědět. Provider spouští PreCompact, když je okno už plné, a zapisovací tah, který předávka potřebuje (čtení gitu, spuštění check, složení tří sekcí), se už nevejde.

Záznam, od kterého další worker pokračuje, se tedy skládá ze záznamu úlohy, záznamu a gitu. Nenese to, co věděl jen worker: jakou hypotézu testoval, jaký příkaz se chystal spustit, co znamenalo poslední selhání. To je část, kterou compaction ztrácí.

Workera lze požádat dřív, dokud je ještě místo. Nic v životním cyklu to požádání provést nemůže. Žádná událost poskytovatele se nespustí, když se okno plní. Zaplnění se měří uvnitř konverzace při každé odpovědi a vidí ho jen kód, který tam běží. Claude Code toto měření zpřístupňuje modu (session.measure) a dovoluje modu zařadit prompt do fronty ($.prompt.submit). Mod si sám načítá ze složky uvnitř repozitáře (.claude/skills/<name>). Shim odpovídá na událost, a tohle událost není, takže požadavek nemůže být shimem.

Rozhodnutí

capture install zapíše mod poskytovatele vedle shimů. Mod je share/mods/claude-code/majordomus-handover, nainstalovaný do .claude/skills/majordomus-handover. Řídí se tabulkou v lib/capture.sh (MJ_CAPTURE_MODS), jeden řádek na mod: poskytovatel, název, složka a klíč politiky.

Hranice epizody zůstává tam, kam ji dalo ADR 0015, v hookách poskytovatele. Mod nic neotevírá ani nezavírá a nenahrazuje žádný odvozený záznam.

Mod dělá jednu věc. V repozitáři, o kterém vidí, že je pod dohledem (.ai/manifest.yaml v kořeni relace), požádá workera o majordomus handover, jakmile okno překročí hranici. Hranicí je pevná rezerva před koncem okna nebo jeho podíl, podle toho, co nastane dřív, protože zápisový tah stojí pevnou částku, ne podíl. Obě jsou konstanty modu (HEADROOM_TOKENS a MAX_FILL v jeho modulu hooks) a tento záznam neuvádí ani jednu hodnotu. Žádost pojmenuje tři povinné sekce, říká, aby se nejdřív přečetl živý stav, a říká, aby se poté zastavilo. Ptá se jednou za okno. Znovu se aktivuje, když zaplnění klesne pod polovinu hranice, po kompakci nebo po /clear. Neptá se vůbec, pokud worker v tom okně předávku už napsal. Prompt se zařadí do fronty a spustí vlastní tah, jakmile je relace nečinná. Tah, který před tím narazí na kompakci, je případ, který už pokrývá PreCompact, takže mod nepřidává vlastní záložní řešení.

Nainstalovaná složka se řídí pravidly vlastnictví shimů. Její hooks modul nese značku Written by majordomus capture install. Složka bez značky je něčí vlastní a nechává se, jak je. Ta se značkou se přepíše, když se kopie distribuce liší, takže upgrade opraví příkaz, který ho nainstaloval. Provider ukládá deklarace typů vedle modu, který načetl (.claude-plugin/types/). Nesrovnávají se a nesledují. Test distribuce (hooks/register.test.ts, spouštěný claude plugin test) se neinstaluje.

session.handover_on_fill je přepínač, deklarovaný ve schématu politiky, kostře a seznamu povolených, a zapíná ho jen true. Mod zapisuje do vlastního stromu .claude/ adoptujícího a chybějící klíč není souhlas s tím. Takto F15 četla klíče, které commitují a pushují. Kostra deklaruje true, takže repozitář, který spouští init, se přihlásí vědomě. Starší politika bez klíče nedostane nic, stejně jako ta, kterou nelze přečíst. capture install konverguje k přepínači v obou směrech: cokoli kromě true odstraní složku, kterou nástroj zapsal, a ponechá tu, kterou nezapsal. Mod, který politika vypnula a který poskytovatel stále načítá, by byla deklarace, kterou nic nevynucuje.

Důsledky

  • Worker Claude Code v řízeném repozitáři je požádán o vlastní popis živého stavu, dokud ho ještě může podat. Odvozené záznamy při compaction a na konci zůstávají, jak byly. Mod přidává záznam a žádný nenahrazuje.
  • Požadavek stojí jeden tah. Zvolenou mírou byl jeden handover na okno, ne jeden na překročení prahu v rámci okna.
  • API modů je jeho dodavatelem označeno jako early access a může se mezi releasy měnit. Vlastní test distribuce běží proti enginu (claude plugin test) a případ 1016 dokazuje polovinu, kterou repozitář vlastní: zapsáno, idempotentní, opraveno, přepnuto a nikdy nevzato jeho vlastníkovi. Žádný případ nespouští mod uvnitř živé relace poskytovatele. Načtení bylo jednou ověřeno ručně, headless během, který zalogoval hooks module majordomus-handover@skills-dir loaded … events: session.measure,tool.call.
  • capture status zatím nehlásí stav modu. Aspekty promptů a relací mají po pěti stavech. Aspekt modu by byl třetí a nechává se, dokud mu druhý mod nebo druhý poskytovatel nedá tvar.

Zamítnuté alternativy

  • Hook na PreCompact, který se ptá workeru. Spustí se příliš pozdě, než aby se vešel do tahu, a proto se odvozuje hned na začátku.
  • Mod odvozuje předávku sám při session.compact. To duplikuje checkpoint PreCompact, který životní cyklus už zapisuje, pod druhým vlastníkem.
  • Samotný podíl okna. Podíl ponechává místo úměrné oknu, a zapisující tah potřebuje stejné místo v jakémkoli okně.
  • Instalace na úrovni uživatele pod ~/.claude jako forma produktu. Mod se podmiňuje .ai/manifest.yaml, takže by jinde mlčel. Ale politika žádného repozitáře by ho nedeklarovala, capture install by se na něm nemohl sjednotit a stroj jednoho člověka není adoptující. Taková kopie je osobní a pravidla značek ji nechávají být. Načítá se také vedle kopie repozitáře, takže se dotazují dvakrát.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0123-the-worker-is-asked-for-a-handover-before-the-window-fills.md
identity
adr-0123
dostupné také jako
Zdroj MCP majordomus://adr/adr-0123 · majordomus entity show adr/adr-0123 · GET /api/v1/entity?uri=majordomus://adr/adr-0123
v Cockpitu
/cockpit/objects/adr/adr-0123

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.