Gloop Documentazione
EN IT

Agenti e workspace

Più agenti nella stessa cartella

Il radar che evita che due agenti si pestino i piedi sullo stesso file, avvisa quando un comando riscrive il lavoro di un altro e quando una firma cambiata rompe il codice di chi la usa, anche in un altro branch.

Più agenti nella stessa cartella lavorano più in fretta, ma possono pestarsi i piedi. Il radar di Gloop se ne accorge prima che succeda, o subito dopo. Se vuoi evitarlo del tutto, dai a ogni agente un branch suo: vedi Branch, worktree e prova in parallelo.

Due agenti sullo stesso file

Un agente tiene un file dalla sua prima modifica fino alla fine del suo turno. Se intanto un altro agente vuole toccarlo:

  • se vuole solo leggerlo, aspetta in silenzio che il primo finisca il turno, così legge il file intero e aggiornato;
  • se vuole modificarlo, Gloop ti chiede chi va prima (anche con una notifica). Chi aspetta, quando tocca a lui, riceve le modifiche dell'altro e rifà la sua sopra, invece di cancellarle.

Nella mappa del Controllo un'attesa è una linea a puntini da chi aspetta a chi tiene il file, e sulla card di chi aspetta c'è "aspetta invoice.ts".

Un comando che riscrive un file

Un comando in shell (un formattatore, uno script) può cambiare decine di file in un colpo, anche quelli che un altro agente sta modificando. Gloop fotografa la cartella prima e dopo ogni comando di un agente: se il comando ha riscritto un file che un altro tiene, sopra il terminale di quest'ultimo compare l'avviso, con il comando, chi l'ha lanciato e quali file.

  • Avvisa l'agente gli dice di rileggere i file prima della prossima modifica (in coda se lavora);
  • Vedi le modifiche apre le Modifiche;
  • Ignora chiude l'avviso.

È un avviso dopo il fatto, mai un blocco.

Un comando ha riscritto il file che questo agente stava modificando: Avvisa l'agente, Vedi le modifiche, Ignora.
Un comando ha riscritto il file che questo agente stava modificando: Avvisa l'agente, Vedi le modifiche, Ignora.

Il radar dei contratti

A volte due agenti non toccano lo stesso file, ma uno cambia qualcosa da cui dipende il lavoro dell'altro: una funzione che ora vuole un argomento in più, un metodo rinominato, una colonna tolta dal database, un file di dati dei test. Il codice dell'altro si romperà, ma nessuno se ne accorge finché non gira.

Il radar dei contratti se ne accorge: dopo ogni modifica guarda se è cambiata una firma che altri file possono usare, e cerca chi la usa come prima.

  • Nella stessa cartella guarda i file su cui gli altri agenti stanno lavorando. L'avviso compare sopra il terminale dell'agente toccato: la firma prima e dopo e dove la usa. Avvisa gli manda tutto questo come messaggio, Ignora lo chiude.
  • In un altro worktree (un altro branch dello stesso repository) guarda tutto il suo branch, anche il lavoro non ancora committato. L'avviso dice che si rompe all'unione, con tre scelte: Prendi il cambio (l'agente porta nel suo branch il lavoro dell'altro e si adegua), Ordine di unione (Gloop si ricorda quale branch va unito prima e lo ricorda nelle Modifiche del secondo), Ignora.
Un contratto è cambiato: Split IVA ha cambiato la firma di vat(), e Revisione la usa in un test.
Un contratto è cambiato: Split IVA ha cambiato la firma di vat(), e Revisione la usa in un test.

Gli avvisi compaiono anche nel Controllo: sulla mappa una linea arancio a puntini da chi è toccato a chi ha cambiato ("usa vat(), cambiata da Split IVA"), a tratti lunghi quando la rottura è all'unione; le card degli avvisi stanno in alto a destra. Un avviso nuovo arriva anche come notifica di sistema, se Gloop non è davanti.

La mappa del Controllo con un contratto rotto fra due worktree: la linea «all'unione» e la card con le tre scelte.
La mappa del Controllo con un contratto rotto fra due worktree: la linea «all'unione» e la card con le tre scelte.

Cosa conta come contratto

Per non avvisarti a vuoto, il radar è prudente:

  • conta solo quello che altri file possono vedere (esportato, pubblico);
  • una firma cambia davvero solo se cambia quanti argomenti accetta, o se il nome sparisce o cambia. Un tipo cambiato da solo non conta: lo dice meglio il compilatore;
  • chi la usa conta solo se la chiama in un modo che non va più bene con la firma nuova;
  • i nomi troppo comuni (render, create…) non si seguono.

Linguaggi letti: TypeScript e JavaScript, C#, Python, Go, SQL (tabelle e colonne tolte o rinominate, anche nelle migrazioni) e i file di dati dei test.

Quando un agente fa un commit (o uno script sposta il branch), il radar ricontrolla i cambi delle ultime 24 ore: chi nel frattempo si è adeguato perde l'avviso.