Salta ai contenuti

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)

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:

Finestra del terminale
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • 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.

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).

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.