Github
Leggi i file del repo, esegui commit, apri pull request
Una volta connesso GitHub, tAI può clonare nel proprio sandbox un repository di cui sei proprietario o collaboratore, modificarne i file, eseguirne il commit su un branch di lavoro e aprire una pull request. Le modifiche non vengono mai committate direttamente sul branch predefinito -- passano sempre prima attraverso un branch di lavoro separato.
Esempi di prompt
Strumenti
| Strumento | Cosa fa |
|---|---|
| github_read_file | Recupera un file direttamente da GitHub se non è già presente nel clone del sandbox. |
| github_commit_files | Esegue il commit dello stato attuale del clone del repo nel sandbox su un branch di lavoro. |
| github_create_pull_request | Apre una pull request dal branch di lavoro al branch predefinito. |
| github_list_issues | Elenca gli issue aperti nel repository attivo. |
| github_create_issue | Crea un nuovo issue nel repository attivo. |
| github_comment_on_issue | Pubblica un commento su un issue o una pull request esistente. |
| github_list_pull_requests | Elenca le pull request aperte nel repository attivo. |
| github_search_code | Cerca codice nell'intero repository su GitHub. |
| github_list_commits | Elenca i commit recenti sul branch attivo. |
| github_upload_file | Carica un singolo file dal sandbox direttamente sul branch attivo. |
Approfondimento
GitHub è il connettore pensato per modificare davvero il codice, non solo per parlarne -- trovare dove qualcosa è implementato, modificarlo e portare il risultato davanti a un collega sotto forma di una vera pull request, tutto senza uscire dalla conversazione.
Si collega da Settings -> Connectors come ogni altro connettore, tramite la schermata di autorizzazione OAuth nativa di GitHub, dove scegli per conto di quale account o organizzazione tAI è autorizzato ad agire e approvi i permessi specifici che sta richiedendo. tAI non vede né memorizza mai la tua password GitHub.
Una volta connesso, lavorare con un repository inizia con tAI che lo clona in un sandbox isolato -- una copia di lavoro che esiste solo per quella sessione, separata dalla tua macchina locale e da GitHub stesso, dove tAI può leggere e modificare i file liberamente senza che nessuna di quelle modifiche sia ancora visibile altrove.
Dieci strumenti operano su quel sandbox -- che coprono il commit dei file e l'apertura di una pull request, la lettura di un file direttamente da GitHub, l'elenco/creazione di issue e i commenti su di essi, l'elenco delle pull request e dei commit recenti, la ricerca del codice nell'intero repository (non solo quello clonato), e il caricamento di un singolo file direttamente sul branch.
github_read_file recupera un file direttamente da GitHub per tutto ciò che si trova al di fuori di quanto già clonato -- un file in un repository diverso, per esempio, o uno intenzionalmente escluso dal sandbox. Il più delle volte, una volta clonato un repo, tAI si limita a leggere i file dal sandbox nello stesso modo in cui leggerebbe qualsiasi altro file.
github_commit_files prende lo stato attuale del clone nel sandbox -- ogni modifica effettuata finora durante la conversazione -- e ne esegue il commit su un branch di lavoro. È questo il passaggio che trasforma 'ho modificato un file' in 'esiste un commit reale', ed è quello da cui dipende ogni pull request.
Quel branch di lavoro non è il branch predefinito del repository, e non esiste, tramite questo connettore, alcun modo per eseguire il commit direttamente su di esso. La prima volta che github_commit_files viene eseguito per un dato repo in una sessione, crea automaticamente un nuovo branch di lavoro; ogni commit successivo finisce su quello stesso branch fino all'apertura di una pull request.
github_create_pull_request prende quel branch di lavoro e apre da esso una pull request verso il branch predefinito -- la stessa azione che compiresti manualmente nella pagina delle PR di GitHub, semplicemente avviata dalla conversazione. Richiede almeno un commit precedente; non c'è nulla contro cui aprire una pull request finché github_commit_files non ha effettivamente messo qualcosa sul branch.
Una richiesta realistica concatena tutto questo: 'trova dove avviene la verifica della firma del webhook in acme/payments-service e aggiungi il logging quando fallisce' fa sì che tAI cloni il repo, individui il file pertinente, lo modifichi per aggiungere il logging, esegua il commit di quella modifica con github_commit_files e, se richiesto, apra la pull request con github_create_pull_request.
È anche normale suddividere il tutto in due passaggi: chiedere prima a tAI di apportare ed eseguire il commit della modifica, rivedere ciò che ha effettivamente fatto, e solo dopo chiedergli di aprire la pull request -- nulla obbliga il passaggio della PR ad avvenire automaticamente solo perché esiste un commit.
Individuare il codice è di solito il primo vero passaggio di qualsiasi richiesta, e avviene tramite la normale lettura e ricerca all'interno del clone nel sandbox, non tramite uno strumento dedicato di 'ricerca codice' -- tAI esamina la struttura e i file del repository nello stesso modo in cui lo farebbe uno sviluppatore che apre il progetto per la prima volta.
tAI decide quali di questi strumenti usare, e quando, in base a ciò che chiedi effettivamente -- una domanda come 'cosa fa questa funzione' su un repo già clonato non necessita affatto di github_commit_files, perché non viene modificato nulla.
La proprietà di sicurezza che vale la pena capire chiaramente: non esiste alcuno strumento, né alcuna formulazione di una richiesta, che porti una modifica direttamente sul branch predefinito. Ogni singola modifica passa attraverso un branch di lavoro e, se vuoi che venga unita, attraverso una pull request che un essere umano -- tu, o chiunque la revisioni su GitHub -- approva ed esegue il merge manualmente.
Questo significa anche che tAI non può eseguire da solo il merge di una pull request. Aprirla è il limite massimo a cui arriva il connettore; il merge avviene su GitHub, seguendo lo stesso processo di revisione a cui sarebbe sottoposta qualsiasi altra pull request sul repository.
Collegare GitHub è un'azione a livello di account in tAI, esattamente come per gli altri connettori -- una volta collegato da Settings, è disponibile in qualsiasi conversazione successiva senza bisogno di riconnetterlo, per qualsiasi repository a cui l'account connesso abbia accesso.
Quali repository tAI possa effettivamente raggiungere dipende interamente dai permessi nativi di GitHub per l'account connesso -- può agire sui repository di cui sei proprietario o collaboratore, rispettando i controlli di accesso già esistenti su GitHub. Non ottiene accesso a nulla che l'account connesso stesso non possa vedere.
La disconnessione è disponibile dalla scheda Connectors. Interrompe l'accesso futuro; eventuali branch o pull request già creati restano esattamente dove sono su GitHub, perché a quel punto sono normali oggetti di GitHub, non qualcosa legato alla connessione attiva.
Combinare GitHub con Linear in un'unica richiesta è uno schema comune: 'apri il bug dell'esportazione CSV su Linear, correggilo in acme/exports e collega la pull request' fa sì che tAI legga l'issue su Linear per il contesto, apporti la correzione, ne esegua il commit, apra la pull request e faccia riferimento all'issue -- collegando i due sistemi tra loro senza che tu debba fare copia-incolla.
Ciò che questo connettore esplicitamente non fa: non può eliminare repository o branch, non può eseguire force-push, non può modificare le impostazioni del repository o i collaboratori, e non può eseguire il merge delle pull request. Il suo accesso in scrittura è limitato a eseguire il commit di file su un branch di lavoro e ad aprire da esso una pull request.
Non è necessaria alcuna configurazione separata oltre alla schermata OAuth di GitHub al momento della connessione -- nessun personal access token da generare e incollare a mano, nessun webhook da configurare, nulla da fare lato GitHub oltre ad approvare una volta la richiesta di autorizzazione.
I dettagli completi su cosa tAI fa e non fa con l'accesso ai repository sono disponibili nell'informativa sulla privacy di GitHub collegata in fondo a questa pagina, accanto allo stesso pannello Settings -> Connectors usato per collegarlo o scollegarlo.
