Script dei repo
Gli script dei repo sono script shell che configuri per ogni repository
(Impostazioni → Repository → l’icona del terminale sulla riga di un repo) e che
il server di Control Center esegue sul worktree di uno spazio di quel repo —
il checkout isolato in <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/
dove lavorano gli agenti.
Ne esistono di due tipi:
| Script | Quando viene eseguito | A cosa serve |
|---|---|---|
| Configurazione | Subito dopo che un worktree viene predisposto per uno spazio | Installare dipendenze, generare file, copiare .env |
| Archiviazione | Poco prima che un worktree venga distrutto o raccolto dal garbage collector | Ripulire risorse esterne al worktree (reti Docker, tunnel, stato esterno) |
Dove vengono eseguiti gli script
Sezione intitolata “Dove vengono eseguiti gli script”Entrambi gli script vengono eseguiti tramite bash -lc (una shell di login,
quindi gli strumenti installati con Homebrew/nvm sono nel PATH) con il
worktree come directory di lavoro, e con queste variabili d’ambiente
impostate:
| Variabile | Valore |
|---|---|
CC_WORKSPACE_PATH |
Il worktree (la cwd dello script) |
CC_ROOT_PATH |
Il repo sorgente registrato — il tuo checkout |
CC_SPACE_ID |
Lo spazio a cui appartiene il worktree |
CC_SPACE_NAME |
Il nome visualizzato dello spazio |
CC_REPO_NAME |
Il nome visualizzato del repo |
Per esempio, uno script di configurazione che installa le dipendenze e recupera
il .env del repo ignorato da git:
pnpm installcp "$CC_ROOT_PATH/.env" .envpnpm run buildComportamento in caso di errore
Sezione intitolata “Comportamento in caso di errore”- Uno script di configurazione che esce con un codice diverso da zero (o supera il suo timeout di 5 minuti) fa fallire la predisposizione dello spazio: lo spazio mostra lo stato di errore con un pulsante Riprova e viene registrata la coda dell’output dell’esecuzione. Un nuovo tentativo predispone da un worktree pulito ed esegue di nuovo lo script — scrivi gli script di configurazione in modo che una riesecuzione dopo un’installazione parziale funzioni (i gestori di pacchetti si comportano già così).
- Uno script di archiviazione è di tipo best-effort: un errore (o il suo timeout di 2 minuti) viene registrato ma non blocca mai l’eliminazione. L’archiviazione viene eseguita su percorsi di GC dove non c’è nessuno a rispondere a un prompt (spazio eliminato, PR unita, pulizia pianificata).
La configurazione viene eseguita solo su un worktree nuovo: inviare di nuovo gli agenti in uno spazio già caldo riutilizza il checkout esistente e non ripaga l’installazione.
Cronologia delle esecuzioni
Sezione intitolata “Cronologia delle esecuzioni”Ogni esecuzione viene registrata con stato, durata, codice di uscita e una coda
di output limitata, visibile nella stessa finestra di dialogo delle impostazioni
sotto «Esecuzioni recenti» (l’abbonamento repos.watchScriptRuns la trasmette
in tempo reale).
Autorizzazioni
Sezione intitolata “Autorizzazioni”Gli script sono shell che il server esegue, quindi scriverli è riservato
agli amministratori dello spazio di lavoro ed è protetto dalla classe di azione
processSpawn — la stessa rete di guardrail che controlla ogni altra operazione
di avvio di processi.