Salta ai contenuti

Menziona gli agenti con @

Questa guida mostra come @-menzionare agenti e colleghi in uno spazio.

Digita @ nel composer e scegli un agente dal completamento automatico, oppure digita il nome da solo:

@alice fix the login bug

L’agente menzionato viene aggiunto allo spazio come partecipante se non lo è già e inviato con il contesto e la modalità dello spazio. I partecipanti non menzionati vedono il messaggio ma non vengono inviati.

Se invii un messaggio senza alcuna menzione di agente, Control Center sceglie da sé chi deve rispondere: l’agente che ha parlato per ultimo nella conversazione, altrimenti il proprietario della conversazione quando ne ha uno, altrimenti il primo agente di primo livello tra i partecipanti dello spazio. In uno spazio con un solo agente è sempre l’unico agente.

Un token di menzione viene associato senza distinguere maiuscole e minuscole, per nome esatto o prefisso. Quindi @arch raggiunge un agente chiamato architect e @Alice raggiunge alice.

Due conseguenze da tenere presenti quando pianifichi:

  • Un token breve non è un errore. Se due agenti condividono un prefisso, vince il primo che viene trovato e quale sia dipende dall’ordinamento, non da una regola di spareggio. Usa il nome completo ogni volta che i nomi si sovrappongono.
  • Di un token fanno parte solo lettere, cifre e underscore. Il parser individua @(\w+), quindi @code-reviewer viene letto come il token code e @my agent come my. Un agente il cui nome contiene un trattino, un punto o uno spazio non può essere menzionato in modo affidabile, nemmeno tramite il completamento automatico, che inserisce il nome come testo normale. Assegna agli agenti nomi di una sola parola, o con gli underscore.

Le menzioni vengono rimosse dal testo prima che raggiunga l’agente. Un messaggio che è solo menzioni (@alice) quindi non invia nulla: dagli qualcosa da fare.

@alice refactor the auth module. @bob write tests for it.

Entrambi gli agenti vengono inviati in parallelo nella stessa conversazione ed entrambi ricevono il messaggio completo.

Condividono anche i worktree di quello spazio. I worktree dei repo vengono creati per spazio, non per agente; ogni agente riceve la propria directory di lavoro overlay per il suo AGENTS.md, le sue skill e la sua configurazione, con i repo condivisi collegati in lettura-scrittura. Quindi due agenti menzionati insieme possono vedere le modifiche l’uno dell’altro, e andare in collisione.

Qualsiasi @token che non corrisponde a un agente viene provato sui membri umani dello spazio di lavoro, tramite handle, con la stessa regola di nome esatto o prefisso senza distinzione tra maiuscole e minuscole.

Una menzione di una persona risolta non invia nulla. Viaggia sui metadati del messaggio solo perché il router delle notifiche possa avvisare quella persona.

I nomi degli agenti vengono sempre provati per primi e un token rivendicato da un agente non viene mai proposto all’elenco dei membri: un singolo @word può risolversi solo in un unico soggetto.

Un agente inviato riceve nel suo prompt un blocco «Summons» che indica chi lo ha convocato ed elenca i partecipanti dello spazio — gli altri agenti (contrassegnati come di primo livello o subordinati) e i membri umani — così sa a chi può passare il lavoro. Il blocco gli dice anche che menzionare un altro agente nella sua risposta risveglia quell’agente e che menzionare se stesso viene ignorato.

Un agente può passare il lavoro nella propria risposta. Quando un turno termina in modo pulito, le menzioni nel suo testo vengono risolte e quegli agenti vengono aggiunti allo spazio e inviati nella stessa conversazione, con il turno che li menziona come prompt. Un turno che ha avuto esito negativo o è stato interrotto non risveglia nessuno: si è fermato a metà ragionamento.

Le regole sono deliberatamente più rigorose di quelle del composer, perché nessuno sta guardando per correggere un’ipotesi sbagliata:

  • Solo nomi esatti. Nessuna corrispondenza per prefisso. @arch raggiunge architect quando lo digita una persona; da un agente non raggiunge nessuno. Anche un nome che corrisponde a due agenti non raggiunge nessuno.
  • Il codice non è prosa. Le menzioni dentro blocchi recintati o tra `backtick` vengono ignorate, quindi citare un’annotazione @Override o un pip install foo@1.2 è sicuro. Un blocco recintato non terminato azzera tutto ciò che segue.
  • Una @ attaccata al token precedente non è una menzione — sam@host.com, pkg/@scope e node@20 non si risolvono in nessuno.
  • I trattini vengono mantenuti, quindi @code-reviewer si risolve in se stesso anziché nel token code.
  • Al massimo tre agenti per turno. Un agente che elenca sei colleghi in un riepilogo li sta elencando, non li sta convocando.

Una catena di risvegli è limitata allo stesso modo della delega: profondità 3, e un agente già presente nella catena non può essere risvegliato di nuovo da essa (niente A → B → A). Anche una coppia ordinata è soggetta a un limite di frequenza tra le catene. Un risveglio rifiutato pubblica un messaggio di sistema nella conversazione che indica quale menzione non è stata recapitata e perché; un nome non risolto no, perché altrimenti ogni @ in una frase finirebbe per raccontarsi da sé.

Per un passaggio di lavoro che non deve dipendere dalla prosa — una richiesta/risposta, o il raggiungimento di un agente fuori dallo spazio — usa invece gli strumenti send_to_agent, ask_agent e delegate_task.