Ghid operator pentru Dynamic Workflow
Ce face
dynamic-workflow orchestrează muncă mare, ramificată, ca un workflow „plan-in-code”: planul, bucla și rezultatele intermediare stau într-un script sau în fișiere de rulare, nu în contextul conversației. Contextul primește doar concluzia finală verificată. Nu îngropi sesiunea sub sute de fragmente de output. Civilizat, în felul în care o autopsie bine indexată e civilizată.
Are două straturi, care nu sunt interschimbabile:
Layer A: execute_code pentru fan-out deterministic — listare fișiere, fetch, parsare, regex, comenzi shell, generare manifest.
Layer B: delegate_task batch pentru fan-out cu judecată LLM — clasificare, review, audit, refutare, sinteză per chunk.
Regula practică: faci întâi partea deterministică în Layer A, apoi trimiți la Layer B doar ce cere judecată de model.
Când îmi folosește
Folosește-l când taskul e prea mare pentru o singură fereastră de context și poate fi spart clar în unități independente: per fișier, endpoint, sursă sau record.
Exemple potrivite:
- sweep de bug-uri sau securitate pe un codebase mare
- migrare în multe fișiere
- research pe surse multiple, cu verificare încrucișată
- audit cu încercări independente și refutatori
- orice muncă mare unde strategia de split e suficient de clară ca să fie scriptată
Nu-l folosi pentru taskuri mici, sub aproximativ 10 unități. Nu-l folosi pentru muncă serială strânsă, unde unitatea B depinde de outputul unității A. Acolo fan-out-ul nu accelerează nimic; doar produce confuzie paralelizată.
Cum îl invoc / declanșez
Ceri explicit un workflow mare/fan-out și numești unitatea de împărțire: fișiere, endpointuri, surse sau recorduri.
Formulări bune:
„Rulează un dynamic workflow pentru auditul acestor endpointuri.”
„Fă o migrare codebase-wide, cu manifest, chunks și verificare.”
„Folosește adversarial convergence: încercări independente, apoi refutatori; păstrează doar claimurile care supraviețuiesc.”
Pentru workflow foreground, totul trebuie să se termine în același turn. delegate_task este turn-scoped: dacă sesiunea este oprită sau întreruptă, copiii în zbor pot fi pierduți. Nu promite workflow-uri de zile întregi doar dintr-un batch de delegate_task.
Pentru workflow-uri durabile, cere explicit o variantă persistentă: kanban swarm dacă este disponibil și configurat, un job programat, sau un proces background gestionat cu notificare la final. Dacă runtime-ul nu are aceste componente configurate, operatorul trebuie anunțat înainte. Nimic nu se inventează. Trist, dar igienic.
Exemplu practic
Vrei audit de securitate pe o zonă mare.
-
Layer A rulează un pre-pass deterministic: găsește fișierele relevante, extrage candidații și scrie un manifest într-un director temporar unic per rulare. Manifestul are o unitate pe linie.
-
Parentul împarte manifestul în chunkuri rezonabile: aproximativ 8-12 editări mecanice per copil, 2000-3000 linii de citit sau 50-70KB de corpus. Se verifică unitatea cea mai mare, nu media. Media minte frumos.
-
Layer B pornește un
delegate_task(tasks=[...]), cu un task per chunk. Fiecare copil scrie output structurat în fișiere delimitate, nu însummary. -
Parentul citește fișierele rezultate, verifică numărul și prospețimea lor, apoi sintetizează răspunsul final.
Pentru calitate mare, folosești adversarial convergence: 2-4 copii emit claimuri atomice, apoi alți copii încearcă să le rupă. Un claim ajunge la operator doar dacă a trecut prin refutare și nu există contra-dovadă validă.
Output / unde aterizează
Outputul final aterizează în conversație ca răspuns verificat și compact.
Rezultatele intermediare trebuie scrise în fișiere într-un director unic per rulare, ca să nu fie amestecate cu outputuri vechi. Manifestul trebuie să fie delimitat pe linii, câte o unitate pe linie. Rezultatele copiilor trebuie să fie tot delimitate simplu, de preferat CSV/TSV sau linii clare, nu JSON supracomplicat.
Nu ascunde conținut critic în summary. Sub load, summary se poate trunchia. Dacă un copil pare blocat, verifică întâi dacă a scris deja fișierul de output înainte să relansezi munca.
Limite / gotchas
execute_code nu poate apela delegate_task. Dacă încerci să imporți delegate_task într-un script Layer A, eșuează.
delegate_task nu este workflow background durabil. Pentru ore/zile sau resume după întrerupere, folosește o soluție persistentă configurată.
delegation.max_concurrent_children limitează concurența, nu totalul. Nu arunca sute de copii într-un singur val.
Costul crește liniar cu copiii LLM. Rulează întâi pe un slice mic, dovedește rețeta cap-coadă, raportează costul, apoi extinzi doar cu acord.
Claimurile pentru refutare trebuie să fie atomice și falsificabile. „Auth-ul are probleme” e ceață. „Endpointul X nu verifică rolul înainte de acțiunea Y” poate fi verificat. Ceața nu supraviețuiește într-un workflow bun.