Limiti e protezioni dell'esecuzione dell'agente
Gli agenti possono eseguire azioni nei repository, ma queste azioni vengono eseguite entro i limiti e le protezioni della piattaforma. In GitHub, Copilot agente cloud funziona in un ambiente basato su GitHub Actions, crea modifiche in un ramo e prepara tali modifiche per la revisione.
Non finalizza le modifiche in modo autonomo. Sei tu a decidere se tali modifiche devono diventare una pull request.
In questa unità si apprenderà quanto segue:
- Quali limiti vengono inseriti nelle azioni dell'agente
- Come le restrizioni di branch e repository proteggono le codebase
- Impatto dei controlli del flusso di lavoro e dell'ambiente sulle modifiche guidate dall'agente
- Come la revisione umana rimane parte del processo
Limiti di repository e ramo
L'agente cloud Copilot ha accesso solo al repository in cui sta lavorando. Non può accedere ad altri repository.
Le modifiche vengono apportate in un ramo separato, non direttamente nel ramo predefinito, ad esempio main. In questo modo tutte le modifiche vengono isolate prima della revisione.
Controllo richieste pull
Quando l'agente cloud di Copilot termina il proprio lavoro, prepara le modifiche per la revisione, ma non crea o unisce automaticamente una pull request.
Decidi se:
- Crea una richiesta pull
- Esaminare le modifiche generate
- Richiedere aggiornamenti o eliminare il lavoro
Questo mantiene la decisione finale nel controllo umano.
I controlli del flusso di lavoro
Il lavoro dell'agente viene eseguito all'interno di flussi di lavoro basati su GitHub Actions.
Le impostazioni del repository e dell'organizzazione possono controllare:
- Quali flussi di lavoro sono consentiti
- Quali azioni possono essere eseguite
- Quali operazioni può eseguire GITHUB_TOKEN
Questi controlli limitano ciò che l'agente può eseguire tramite flussi di lavoro.
Misure di salvaguardia e schemi di resilienza per l'esecuzione.
Oltre ai limiti a livello di piattaforma, i flussi di lavoro basati su agenti devono includere misure di sicurezza per gestire gli errori, prevenire errori ripetuti e garantire la responsabilità.
Gestione degli errori
I flussi di lavoro devono gestire in modo esplicito gli errori durante l'esecuzione dell'agente.
Le attività necessarie a questo scopo includono quanto segue:
- Fallimento rapido quando un passaggio incontra errori
- Registrazione di messaggi di errore significativi
- Prevenzione di modifiche parziali o incoerenti
Esempio:
```
- run: |
npx @github/copilot-cli -p "Run task"
continue-on-error: false
```
Ciò garantisce che gli errori interrompano l'esecuzione anziché continuare senza avviso.
Tentativi
I tentativi consentono di gestire gli errori temporanei, ad esempio problemi di rete o errori temporanei.
È possibile implementare nuovi tentativi attraverso:
- Riesecuzione dei passaggi non riusciti
- Uso della logica di ripetizione dei tentativi negli script
- Strutturare gli workflow per consentire la ri-esecuzione in sicurezza
Modello di esempio:
```
- name: Run agent task with retry
run: |
for i in 1 2 3;
do npx @github/copilot-cli -p "Run task" && break
sleep 5
done
```
In questo modo il flusso di lavoro può eseguire il ripristino da problemi temporanei senza intervento manuale.
Rollback
Se un agente produce modifiche non corrette o non sicure, i meccanismi di rollback assicurano che tali modifiche non influiscano sulla codebase principale.
Il rollback è supportato in modo naturale tramite:
- Isolamento basato su ramo
- Revisione della richiesta pull prima dell'unione
Le strategie di rollback aggiuntive includono:
- Chiusura o eliminazione della richiesta pull
- Annullamento dei commit se le modifiche vengono unite
Percorsi di escalation
Quando un agente non riesce a completare un'attività o incontra incertezza, l'escalation garantisce l'intervento di una persona umana.
Questa operazione può essere implementata da:
- Revisione obbligatoria delle pull request
- Assegnazione automatica dei revisori
- Uso dei passaggi del flusso di lavoro per inviare notifiche ai gestori
L'escalation garantisce che le decisioni critiche vengano sempre gestite da esseri umani.
Tracciabilità e responsabilità
Tutte le azioni dell'agente devono essere tracciabili e controllabili.
GitHub fornisce le informazioni seguenti:
- Log del flusso di lavoro
- Cronologia dei commit
- Discussioni sulle richieste pull
Per migliorare la tracciabilità:
- Usare messaggi di commit non crittografati
- Mantenere l'ambito delle modifiche a un ramo
- Esaminare tutte le azioni tramite pull request
In questo modo ogni azione dell'agente può essere controllata, compresa e attribuita.
Queste misure di sicurezza, di cui abbiamo discusso, garantiscono che l'esecuzione dell'agente sia:
- Resiliente: può gestire gli errori e i tentativi di ripetizione
- Controllato: impedisce modifiche non sicure
- Controllabile: tutte le azioni sono visibili e tracciabili
- Intervento umano: l'escalation garantisce controllo
Protezione dell'ambiente
Quando le modifiche generate dall'agente vengono utilizzate nelle distribuzioni, gli ambienti offrono misure di sicurezza aggiuntive.
Gli ambienti possono:
- Richiedi approvazioni prima che i processi continuino
- Limitare l'accesso ai segreti
- Controllare le destinazioni di distribuzione
In questo modo si garantisce che le operazioni sensibili non vengano eseguite automaticamente.
Visibilità della sessione
L'esecuzione dell'agente è visibile mentre è in corso.
È possibile:
- Monitorare lo stato di avanzamento tramite i log
- Esaminare le azioni dell'agente
- Fornire richieste di completamento per regolare il comportamento
Questa visibilità consente di mantenere il controllo durante tutto il processo.
Trigger behavior and workflow limits (Comportamento trigger e limiti del flusso di lavoro)
I flussi di lavoro attivati tramite il GITHUB_TOKEN hanno restrizioni.
La maggior parte delle azioni eseguite con questo token non attiva esecuzioni aggiuntive del flusso di lavoro, che consente di evitare cicli imprevisti o esecuzioni ripetute.
Altri metodi di autenticazione, come i token dell'app GitHub o i token di accesso personale, possono attivare esecuzioni aggiuntive del flusso di lavoro in base alla configurazione. Sebbene ciò consenta modelli di automazione più flessibili, richiede anche un'attenta progettazione per evitare esecuzioni ricorsive o cicli di automazione imprevisti.
Abilitazione sicura delle azioni dell'agente
Gli agenti possono eseguire azioni come:
- Creazione di rami
- Aggiornamento del codice
- Preparazione delle modifiche per la revisione
- Attivazione di flussi di lavoro tramite eventi del repository
Queste azioni vengono controllate tramite:
- Isolamento basato su ramo
- Convalida del flusso di lavoro
- Revisione della richiesta pull
- Autorizzazioni del flusso di lavoro
Combinando questi controlli, è possibile abilitare le azioni dell'agente senza consentire l'accesso illimitato al repository o all'ambiente di esecuzione.
Punto chiave
L'esecuzione dell'agente in GitHub viene controllata tramite ambito del repository, isolamento del ramo, autorizzazioni del flusso di lavoro, protezioni dell'ambiente e punti decisionali umani. Gli agenti preparano le modifiche, ma rimangono responsabili della revisione e del loro finalizzazione.