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.

All guides

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.

  1. 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.

  2. 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.

  3. Layer B pornește un delegate_task(tasks=[...]), cu un task per chunk. Fiecare copil scrie output structurat în fișiere delimitate, nu în summary.

  4. 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.