Salta ai contenuti

Chatta con un agente

Questa guida mostra come lavorare con un agente in uno spazio.

  1. Vai su Spazi nella barra laterale
  2. Fai clic sul pulsante + accanto al titolo Spazi
  3. Digita un nome — è obbligatorio. Un nome vuoto viene rifiutato; la finestra di dialogo resta aperta
  4. Facoltativamente, aggiungi agenti dallo spazio di lavoro
  5. Se lo spazio di lavoro ha almeno un repo, compare un selettore di repo. Parte con tutti i repo selezionati; restringilo (anche deselezionando un singolo repo) ai repo per cui questo spazio deve creare i worktree
  6. Conferma

Control Center apre lo spazio e avvia in background la creazione di un worktree copy-on-write per ogni repo selezionato.

Digita il messaggio nel composer e premi Invio. L’agente viene inviato e inizia a trasmettere la sua risposta in streaming.

Se lo spazio è ancora in fase di preparazione, il messaggio viene messo in attesa anziché perso: il composer lo trattiene e lo invia automaticamente quando i worktree sono pronti.

Mentre l’agente lavora, vedi il suo turno arrivare in streaming: segmenti di ragionamento, chiamate di strumenti (letture e scritture di file, comandi di shell) e testo della risposta, tutto dentro un unico messaggio di turno dell’agente.

Mentre un agente lavora, un semplice testo conversazionale non accoda un nuovo turno. Diventa una scheda di guida in coda nella striscia sopra il composer e viene iniettato nell’esecuzione in corso al confine del turno successivo. Non c’è alcun avviso a comparsa: la scheda stessa è il riscontro.

Tre cose cambiano questo comportamento:

  • Un messaggio che contiene una @menzione viene sempre inviato come messaggio, mai come guida
  • Un messaggio che inizia con un comando slash viene sempre gestito come quel comando
  • Un messaggio con un allegato viene sempre inviato come messaggio: la coda di guida accetta solo testo
  • Se ogni esecuzione in corso è già terminata, il testo passa oltre e viene inviato come messaggio normale

Quando un agente incontra un’azione sottoposta al gate dei suoi guardrail — un comando distruttivo, uno strumento privilegiato — il server blocca l’esecuzione e pubblica una richiesta di approvazione a ogni client connesso. Se hai quella conversazione aperta, la richiesta compare nella chat, sopra il composer, come la stessa scheda a opzioni numerate usata per ask_user (nega, approva e, facoltativamente, approva per otto ore). Non si può saltare: un agente bloccato è in attesa di una decisione.

Se ti trovi altrove nell’app, un pannello sempre in primo piano nella shell elenca comunque ciò che è in attesa, così puoi sbloccare l’agente senza andare a cercare lo spazio. Il pannello nasconde una richiesta nel momento in cui la conversazione di quello spazio è sullo schermo, così non rispondi mai due volte allo stesso prompt.

Non c’è alcun timeout: un agente bloccato attende finché qualcuno decide. La stessa richiesta compare anche nella striscia delle attenzioni della posta in arrivo e sul client del telefono.

Un agente che ha bisogno di una preferenza, di un requisito mancante o di un vero bivio deve chiamare ask_user. Scrivere la domanda come messaggio di chat termina il turno e devi sollecitare di nuovo. Lo strumento mostra una scheda numerata nella conversazione — opzioni, testo libero facoltativo o entrambi — e l’esecuzione attende la tua risposta.

Tocca una singola opzione per inviarla (il numero finale diventa una freccia al passaggio del mouse). Le risposte a selezione multipla e quelle digitate usano Continua (⌘↵ / Ctrl↵). Salta dice all’agente di scegliere un valore predefinito ragionevole e di non chiedere più.

È un meccanismo separato dalla scheda di approvazione qui sopra: un’approvazione è «posso farlo?», una domanda è «quale di questi intendevi?». La possibilità di chiedere è disponibile sull’harness integrato in ogni modalità, comprese quelle di sola lettura (non muta nulla), e di proposito non è avvolta in un prompt di approvazione — una finestra davanti a un’altra finestra fallirebbe chiusa quando non è collegato alcun approvatore. Un’esecuzione senza una conversazione in cui mostrarlo semplicemente non riceve lo strumento.

Mentre ci sono esecuzioni in corso, il pulsante di invio del composer diventa il pulsante Ferma agente. Svuota il composer e premilo: ferma ogni agente in esecuzione in quella conversazione.

Non esiste un controllo di arresto nell’intestazione dello spazio né una scorciatoia da tastiera per farlo. Per fermare una sola esecuzione quando ce ne sono diverse in corso, apri la scheda delle attività di quell’esecuzione: la sua intestazione ha pausa/riprendi e arresto limitati all’esecuzione (l’arresto chiede conferma). Osservabilità → Dal vivo elenca ogni agente in esecuzione nello spazio di lavoro con lo stesso controllo.

Un’esecuzione fermata viene contrassegnata come arrestata. Invia un nuovo messaggio per inviare di nuovo.

Digita / nel composer per vedere l’elenco dei comandi. Quelli che cambiano il comportamento della conversazione:

Comando Che cosa fa
/plan Porta lo spazio in modalità piano. Un /plan da solo si limita ad attivare la modalità; /plan <request> la attiva e invia il resto come tuo messaggio
/goal <text> Registra l’obiettivo di lavoro della conversazione
/loop <text> Itera su un’attività finché non è completa
/compact Ripiega la cronologia più vecchia in un riepilogo ancorato e prosegue sul contesto compattato
/todo … Visualizza e modifica l’elenco delle cose da fare persistente di questa conversazione

Le skill compaiono nello stesso elenco sotto il proprio namespace skill:, quindi non entrano mai in collisione con i comandi qui sopra — una skill chiamata plan o compact resta raggiungibile:

Comando Che cosa esegue
/skill:<name> Una skill installata nello spazio di lavoro o collegata all’agente
/skill:<repo>:<name> Una skill fornita da uno dei repo di cui è stato fatto il checkout in questo spazio

Le skill dei repo sono contrassegnate con il repo da cui provengono, perché il solo nome non dice quali convenzioni di quale servizio codifichi e due repo possono fornire ciascuno una testing. Non devi digitare il prefisso per trovarne una: digitando il semplice nome della skill si trovano anche le voci con namespace.

Un agente porta sempre e solo le skill del repo in cui sta lavorando — vedi Skill con ambito di repository. Il composer non è limitato in quel modo: puoi invocare la skill di qualsiasi repo nominandola.

/compact e /todo vengono intercettati dal client e non vengono mai memorizzati come messaggi — una riga /compact nella trascrizione sposterebbe indietro di un turno il taglio della compattazione successiva. /plan cambia la modalità memorizzata dello spazio anziché viaggiare come testo. Quindi nessuno dei tre è «un messaggio che invii all’agente»; non aspettarti di vederli nella cronologia.

Prima di una modifica complessa, porta lo spazio in modalità piano con /plan, il menu a discesa della modalità sulla barra degli strumenti del composer, oppure Shift+Tab. L’agente conduce poi la ricerca in sola lettura e consegna un piano tipizzato che approvi prima che inizi qualsiasi lavoro. Vedi Usa la modalità piano.

Non serve uno spazio per ogni agente. In qualsiasi spazio:

@alice can you look at the failing tests in src/auth_test.dart?

L’agente menzionato viene aggiunto allo spazio e inviato con il contesto di quello spazio. Vedi Menziona gli agenti con @ per come vengono associati i nomi.