AI

Chat del repository

Alcune domande si fanno più in fretta di quanto si cerchi la risposta. Dove avviene davvero il refresh del token? Che cosa ha cambiato questo commit, in una frase? Perché esiste questo file? La chat del repository risponde sul repository aperto e mostra le righe su cui si è basata.

Condivide la colonna destra con Dettagli: le schede in alto passano dall’una all’altra, così il grafo non perde la sua selezione.

La chat del repository con contesto fissato

Che cosa legge

Ogni risposta nasce in due passaggi. Il primo sceglie un piccolo insieme di percorsi e ricerche letterali dall’elenco dei file tracciati del repository. Il secondo risponde usando solo gli estratti riportati, e può citare soltanto quelli: un file o una riga inventati sono un errore di validazione, non una risposta plausibile.

Una seconda occhiata. La prima passata deve indovinare quali file contano solo dal nome, ed è esattamente l'ipotesi che sbaglia su «da dove viene chiamato». Perciò una risposta può richiedere invece di indovinare: può indicare altri percorsi, altre ricerche letterali o hash di commit dalla cronologia recente, e la domanda viene ripetuta con ciò che emerge. Succede al massimo due volte — ogni giro è un'altra chiamata al modello che aspetti — e all'ultima deve rispondere con quello che ha. Non ne vedi nulla, se non un'attesa un po' più lunga e una risposta migliore.

Incluso Escluso
File tracciati, come sono nella copia di lavoro File non tracciati
Diff in stage e non, dei file tracciati Tutto ciò che una regola di ignore intercetta, anche se tracciato
Branch, avanti/indietro e l’elenco dei percorsi modificati File che sembrano segreti, binari, percorsi generati

Leggere la copia di lavoro permette di parlare di modifiche non committate. Significa anche che quelle modifiche lasciano la macchina: le riceve il provider configurato in Funzioni IA.

Una sfumatura: con le proposte di azioni attivate, i nomi dei file non tracciati vengono inclusi nello stato del repository — «metti in stage il file nuovo» ne ha bisogno — ma il loro contenuto continua a non essere mai letto.

Fissare il contesto

Il modello decide cosa leggere. Fissare serve a scavalcarlo: ciò che è fissato viene letto per primo e prende la fetta maggiore del budget di contesto.

Quattro modi, tutti verso la stessa fila di chip sopra il campo di testo:

Fai così Ottieni
Clicca un chip suggerito Il file aperto nel visualizzatore, o il commit selezionato nel grafo
Trascina una riga dalla scheda File Quel file
Trascina una riga dal grafo dei commit Quel commit — messaggio e diff a blocchi
+ → Scegli un file…, o trascina dal Finder/Esplora file Qualsiasi file su disco, anche fuori dal repository

I chip restano fissati per le domande successive; la × ne toglie uno, e cancellare la conversazione li toglie tutti. Il limite è otto.

Un commit fissato porta il suo messaggio e fino a dodici blocchi di diff. I blocchi su percorsi esclusi vengono tolti da quel diff, non l’intero commit.

Impostazioni

Impostazioni → IA → Chat del repository:

Impostazione Effetto
Fai domande sul repository Disattivata toglie la scheda, il pulsante e il bersaglio della scorciatoia. Il resto dell’IA continua
Modello della chat Un modello solo per la chat. Vuoto significa quello del profilo: chiedere costa meno che revisionare, spesso basta uno più piccolo
Solo contenuti committati Risponde dall’ultimo commit invece che dal working tree: le modifiche non committate non lasciano mai la macchina
Proponi azioni su file e Git in chat Disattivata riporta la chat alla sola lettura: niente schede di azioni, niente menu di approvazione
Modalità file di sola lettura Attivata blocca creazione, modifica, sostituzione ed eliminazione dei file, ma mantiene disponibili le azioni Git. È attiva per impostazione predefinita
Come vengono eseguite le azioni proposte La modalità di approvazione — vedi Modalità di approvazione. Le azioni distruttive chiedono comunque conferma
Consenti alla chat di proporre azioni remote Disattivo per impostazione predefinita. Attivo aggiunge fetch, pull, push, apertura di una pull request e invio di uno stack

Con l’IA spenta del tutto la chat sparisce con lei: nessun pannello che offre risposte che nessuno può dare.

Il modello della chat si cambia anche dall’intestazione del pannello, accanto al nome del provider: è la stessa impostazione, senza aprire le Impostazioni.

Il pulsante a bacchetta accanto al titolo del pannello apre la procedura guidata di configurazione IA — un percorso guidato che genera i file di configurazione dell'assistente (istruzioni, agenti, hook) per questo repository. Vedi Funzioni IA.

Impostazioni della chat del repository

Lavorare con i messaggi

I messaggi sono testo normale. Seleziona una parte qualsiasi e copiala, oppure fai clic destro su una bolla: Copia prende la selezione, Copia messaggio l'intero messaggio — una risposta viene copiata come sorgente Markdown — e, se il clic è caduto su un link, Copia link ne prende l'indirizzo.

I link si aprono nel browser predefinito, mai dentro Gitcito — sia i link Markdown nelle risposte sia gli indirizzi https:// nei tuoi messaggi.

Quando un messaggio menziona un'immagine — un percorso del repository come docs/logo.png, o un URL che termina con un'estensione immagine — passare il cursore sulla menzione mostra una piccola anteprima. I percorsi del repository vengono letti dal tuo albero di lavoro; una menzione che non corrisponde a un'immagine leggibile semplicemente non mostra nulla.

Anteprima dell'immagine al passaggio del cursore

Eseguire azioni dalla chat

Chiedi una modifica invece di un fatto — metti in stage i file markdown, committa questo come fix, aggiungi l'output di build alla lista degli ignore — e la risposta arriva con una scheda di azioni. Una conversazione vuota offre alcune richieste di esempio come chip sotto l'introduzione; cliccarne una riempie il campo di testo, così puoi modificarla prima dell'invio. La scheda elenca i passi concreti che l'assistente vuole compiere, una riga per azione, con i pulsanti Esegui e Ignora. Nulla di ciò che c'è nella scheda è già accaduto; il modello può solo proporre, e ogni proposta viene verificata contro la copia di lavoro prima ancora che tu la veda — un'azione che nomina un file inesistente viene rifiutata, non mostrata.

Chat vuota con richieste di esempio

Azioni proposte in chat

La chat del repository può proporre modifiche esatte, creazione o sostituzione di interi file e la loro eliminazione, poi azioni Git: pattern di ignore, stage, unstage, commit, stash, scarto, branch, cambio di branch, tag e — poiché le vengono mostrati l'elenco dei branch e i commit recenti — merge, rebase, revert e cherry-pick. Gitcito calcola in locale il diff espandibile. I file esistenti devono provenire dalle prove lette; destinazioni non sicure, segrete, ignorate, generate, binarie, obsolete, troppo grandi o raggiunte via symlink vengono rifiutate. Reset, riscrittura della cronologia, eliminazione di branch e ogni operazione forzata restano solo nella loro interfaccia dedicata.

Un merge o un rebase può fermarsi su un conflitto. In tal caso l'esecuzione si arresta lì, la scheda segna quella riga come fallita e mantiene il conteggio di quanto è già stato eseguito, e il banner dei conflitti prende il posto esattamente come per la stessa operazione avviata dalla barra.

L'intero gruppo viene ricontrollato prima della prima scrittura e ripristinato se un passaggio fallisce. Prima di un commit, Gitcito verifica che ci siano modifiche in stage. La scheda indica ogni azione completata, fallita o saltata e conserva i risultati parziali. Poi una chiamata separata, senza azioni, riepiloga il risultato effettivo.

Può anche scrivere .gitcito.json. Alla chat viene data la forma del file di configurazione del repository, così aggiungi i link ai ticket per JIRA-1234 o proteggi i branch di release diventa un'azione su file scritta contro lo schema reale, non chiavi plausibili che il loader rifiuterebbe. Richiede le azioni sui file abilitate — lo stesso interruttore della modalità di sola lettura dei file.

Le righe che meritano un'immagine ce l'hanno. Una riga di riepilogo basta per «metti in stage due file» e non basta affatto per «apri quattro pull request su uno stack»: le righe che descrivono una forma la disegnano — il branch che un push pubblica e di quanto è avanti, i due riferimenti di un merge o di un rebase, i commit che un revert o un cherry-pick ripeterebbe con il loro oggetto, la pull request come sarà, e uno stack come una scala con la base di ogni livello e cosa vi farebbe l'invio: aprire, ripuntare o lasciare com'è.

Azioni che escono dalla macchina

Recuperare, aggiornare, pubblicare, aprire una pull request e inviare uno stack sono disattivi per impostazione predefinita, dietro Consenti alla chat di proporre azioni remote. Pubblicare il lavoro merita una scelta esplicita, e con l'impostazione disattiva al modello non viene nemmeno detto che quelle azioni esistono: non può proporne una e vedersela rifiutare, il difetto che insegna alle persone ad attivare opzioni senza leggerle.

Con l'impostazione attiva:

Azione Fa
Recupera / Aggiorna Lo stesso fetch e pull della barra; la modalità di pull (merge, solo fast-forward, rebase) fa parte della proposta
Pubblica Pubblica un branch su un remoto. Mai con force: un push forzato non esiste nel vocabolario di una proposta, quindi non può essere proposto
Apri PR Apre una pull request, bozza o no, verso l'origin del repository. La scheda ne conserva il link
Invia stack L'invio completo dello stack di PR: pubblicare ogni livello, aprire o ripuntare una pull request per livello, scrivere la sezione di navigazione, registrare lo stack GitHub

Un piano della chat che pubblica e apre una pull request

Un push proposto supera prima gli stessi controlli del push della barra: la conferma per i branch protetti, l'avviso sulla pubblicazione di file che sembrano credenziali e la checklist pre-push del repository. Sono finestre di dialogo, quindi si rispondono prima che il piano parta, non dall'interno.

Annullare un piano

Un piano si approva in blocco, quindi si annulla in blocco. Prima della prima azione capace di cambiare qualcosa, Gitcito registra dov'era il branch e scatta uno snapshot dell'albero di lavoro; la scheda conclusa offre allora Annulla il piano. Riporta il branch a quel commit e ripristina l'albero, buttando via ciò che il piano ha prodotto: perciò chiede conferma e nomina il commit di ritorno. Le pull request aperte restano aperte — un remoto non è qualcosa che uno snapshot locale possa ritirare.

Modalità di approvazione

Il menu con lo scudo sotto il campo di testo (anche in Impostazioni → IA → Chat del repository) decide come viene eseguita una scheda:

Modalità Esegue
Chiedi sempre Nulla finché non premi Esegui sulla scheda
Esegui in automatico le azioni sicure Le proposte fatte solo di operazioni reversibili — stage, unstage, ignore, branch, tag — partono all'arrivo; il resto aspetta il pulsante
Esegui in automatico tutte le azioni Ogni proposta parte all'arrivo, tranne quelle distruttive

Una proposta che scarterebbe modifiche non committate chiede sempre prima, in ogni modalità, e la conferma nomina i file che andrebbero persi. La scheda riporta che cosa è successo davvero — quante azioni sono state eseguite, o l'errore che le ha fermate — e l'assistente conosce l'esito, così una domanda successiva sa se il suo piano è stato eseguito o ignorato.

Correggere gli errori con l'assistente

Quando un'operazione git fallisce e la chat IA è disponibile, la notifica di errore guadagna un pulsante a scintilla: apre la chat con il fallimento incollato nel campo di testo, così «perché è fallita e che cosa faccio» è un solo clic. La bozza è modificabile — nulla viene inviato finché non premi Invia.

Che cosa rifiuta

  • I file che sembrano segreti non vengono mai letti, fissati o no: il chip torna come saltato, con il motivo. Fissare non aggira il mascheramento dei segreti.
  • I binari e i file oltre 512 KB presi da fuori del repository vengono saltati allo stesso modo. Dentro valgono le regole consuete.
  • Non scrive mai da sola. Il modello non ha strumenti, solo testo: una modifica arriva come scheda di proposta, viene eseguita solo secondo le tue regole di approvazione, e un passo distruttivo chiede sempre conferma. Con Proponi azioni git in chat disattivata, non propone nemmeno.
  • Le conversazioni vivono solo in memoria. Ogni repository tiene il suo filo; chiudendo Gitcito si perdono.

Come aprirla

Tasti Effetto
Il pulsante a fumetto nella barra strumenti Mostra o nasconde la scheda Chat
⌘⌥B / Ctrl+Alt+B Mostra o nasconde tutto il pannello destro
Invio Invia il messaggio
Maiusc+Invio Inserisce una nuova riga

Tastiera e scorciatoie ha il resto, incluso come riassegnare gli interruttori dei pannelli.

Vedi anche: Funzioni IA · Sicurezza e segreti · Wiki del repository

Migliora questa traduzione su GitHub