Base di cunniscenza Codice
U travagliu in un repository git
Pro pò travaglià in una di i vostri ripustori cum'è un agentu di prugrammazione — legge i vostri file reali, è scrive sopra, cambiendoli.
Questa pagina hè tradutta in macchina per comodità. L'uriginale in inglese hè a versione chì si applica.
Connessione di un ripositoriu
?git, o u Git una chipa in a barra di strumentazione, cunnetta un fornitore:
GitHub, GitLab, o Gitea/Forgejo — chì cuncoveria Codeberg è e istanze ospitate da sò. Ci
pietra un token d'accessu personale limitatu, un repusitorio è una rama. Un repusitorio chì
si annuncià nantu à Nostr pò esse incollatu cum'è u so indirizzu invece.
Ù ù avete necessariamente à scrive u nome di u repusitorio. Incollate u tòken è sceglite Lisata ciò chì stu token pò raggiungri: Nymbot chiede à a forgia ciò chì u tòken pò vede è mostra a risposta cum'è una lista chì vulgi verificà. A verificazione cunnetta ogni unu cù u so ramu di difettu guajà, è i mette tutti in sta chat. Qualcosaamente cunnettu hè mostra cum'è tale invece di esse offertu una seconda volta. Quellu dumanda ghjè da u vostru dispozitivu diritta à a forgia — micca trà u travagliatore Nymbot — cusì u tòken ùn viaghja in ningun locu induve ùn hè micca à ghjà andatu. Una forgia ospitata da sò u so serviziu chì rifiuta e richieste cross-origin ùn pò micca esse listata; scrive u ripositoriu à manu è tuttu u restu funziona in u modu accussì medesimu.
Una volta cunnessu, a pruvità mostra u nome di u ricuperatore, è i messaggi mandati cù un
Modellu pru sceltu in u cuntestu di quellu ripositoriu.
?git disconnect u rimuove. Scollegà in a lista di i repository
scorda u token ma mantiene u repository นั้น, marcatu cum'è senza token, per pudè aghjunghje
un novu dopu.
Repositòriu annunciati nantu à Nostr
Alcuni ripositorii si annunceanu nantu à Nostr invece chì solu nantu à una forge, utilizandu NIP-34 — u protocolu dietri ngit è gitworkshop. L'annunciu hè un eventu Nostr chì porta u nome di u prugettu, i so mantenitori, i relay chì raccolghje i so patch è i so prublemi, è i URL da i quali pò esse clonatu. Un segundu eventu dice induve ogni ramu punta attualmente.
Incolla un naddr o u nostr:// indirizzate in u modu di u repusitòriu è
premete ChercateluNymbot legge l'annunciu fora da i relay è chjarnisce u formulariu: l'ospite git da u quale hè clunatu, u repozitòriu lì, è a rama chì u prugettu stessu dice chì hè attuale. Ci si deve ancu aghjunghje un token per quell'ospite, perchè Nostr porta l'annunciu è u servitore git porta u codici.
Cun chì vo dì chì a rùla hè simplice induve hè clunatu. Un repustoriu chì a so URL di clunatura hè nant'à
GitHub, GitLab, Gitea o Forgejo — inclusu u self-hosted — hè unu chì Nymbot pò legge.
Unu clunatu solu via git:// u ssh ù hà nis API HTTP per lä di li file, è
Nymbot u dice invece di fà una cunnessione à mità. Quand u host hè ospitatu da sò propiu, u furnituri hè un
iputazzu trà u so nome, è pudete corregge u prima di salvà.
Un repoziuitoru aghghjatu in stu modu hè marcata cù un emblema ngit in a lista, è e risposte chjamate per u nome chì dichjara invece chì per u so caminu nantu à u specchiu.
Cosa pò fà
Un messaghju in u cuntestu di u repo s'esecuzione hè cum'è un picculu agent invece di una sola cumpletazione. U mudellu pò listà i direttori, leia i fili è cercà in l'arvulu, dopu risponde usendu ciò chì hà effettivamente trovatu — cusì chì "perchè u loop di riprova si arrende prima" hè rispostu da u vostru codici, micca da una guess chì pare simile à u vostru.
El vede a a ramo chì avete cunnettatu, à u so capu attuale.
Cun u serviziu funziona activatu per a chat, ellu pò ancu annamandà di ghjiri un cumandu contru u vostru codici, cum'è i testi, nantu à un serviziu Nymbot. Ogni esecuzione aspetta chì vostru permette u prassi.
Attivazione di a scrittura
?git writes on aghjunge a capacità di commit di file, crià branche è apre pull
o merge requests. Disattivu per difetto, è vale a pena di lascià disattivu finchè ùn vulitis chì ùn site.
Cum i scritti sò in avanti, dumandate una cambiamenti è riceveti una ramu è una dumanda di pull per rivede invece di una patch incollatta in chat: ogni tarefa travaglia su un ramu di u so propiu. Niente hè spintu à u vostru ramu per difettu sì ù ùn disattivate micca quella, quellu hè u ramu chì avete cunnettatu, è avete dumandatu per ellu.
I editi di una esecuzione venenu cum'è un commit per ripustoriu, à a fine di l'esecuzione o quandu u mudellu decide chì un pezzu di travagliu hè finitu. S'ellu preferite vede i primi, attivà Chiedite prima di impegnà per quellu repozitoriu. U run dopu hà ritiratu i so cambiamenti, u rispottu i mostra cum'è un diff, è Applicà cumette i mentre Scartà li buttate via. Applicà ùn costa nente.
Una rampa per ogni tarefa
Cun Ogne travagli riceve a so ramu propria am, chì hè per ogni repozitoriu
eccettu s'ellu si spegne, un travagliu chì scrive commit in una rami di u so propiu, chjamatu
nymbot/ è un ID curtu. Nymbot u crea da a testa di a ramu di travagliu
quandu a task fa u so primu commit, dunque una task chì hà solu lettura ùn crea micca ramu.
U ramu di travagliu in se ùn hè micca toccatu, hè per u quale diverse task ponu scrive in u stessu
rimpositoriu à u stessu tempu invece di aspettà u so turnu.
Quandu u travagliu hè finitu, ch'è fà Nymbot Quandu hè finitu dice. Aperisce una pull richiesta è u par di default; Offri una fusione lascia un buttone di Merge nantu à a risposta; Lasciate a ramo non fà nantu di più. U per default hè ammistu in Settings, sottu à Quandu a ramu di un travagliu hè finitu, è ogni ripustori pò sceglie diversamente in a so forma. S'a forgia ùn hà micca API per i pull request chì Nymbot pò usà, o si rifiuta una,
A risposta mostra a ramo cù Aprilà PR, Fusione è Elimina, è u pannellu di i Task u mette in lista cù u task. Mentre u task hè ancu in esecuzione, a so carta, u pannellu di i Task è a lista di ciò chì hè in esecuzione denunminanu a rama appena essa esiste, in ogni dispositivu cunnessu à u cuntu. Un task chì hè fermatu o chì fallisce à mità u restituisce a so rama, per u so possibule esse unificatu, eliminatu o pulitu cum'è ogni altru. Un merge hè un commit di merge trà u so pull request di a forge, fissatu à u commit chì Nymbot hà registratu, cusì i novi commit mandati lì trà u tempi ùn sò mai unificati senza esse visti. Niente ùn hè mai mandatu cù a forza. S'ellu a rama hè in cunflittu cù a rama di travagliu, a rispesta offre Aprite a PR per risolvè o Chiedi à Nymbot di aghjurnà a ramu, chì fusanu a ramu di travagliu in ela cù un commit di fusione invece di un rebase. GitHub è Gitea o Forgejo ponnu fà impru, GitLab ùn hà micca un API per isso, quindi lì u risolvete in a richiesta di fusione.
I cambiamenti à i file di CI è di workflow aspettanu ancu tiên rivista, esattamente cum'è u casu s'ellu ùn avessero micca una ramoia propria.
U vostru dispozitivu ricorda u nymbot/ branche chì questu contu hà fatta. U prossimu compitu
su quellu repository, o Pulizia di i rami di Nymbot in a lista di i repository,
elimina quelli i cui pull request hè fusamente o chjusu, o chì anu sette ghjorni di vechje cù
niente restatu da fusà. Una ramu hè eliminatu solu s'ellu termina ancu à u commit Nymbot
registratu, cusì chì si biriuna qualchìnu hà mandatu qualcosa di novu, è nessun altru ramu hè mai
toccatu. Ellu parte da u vostru dispruzu cù u token chì hà già mandatu; u server ùn conserva micca
alcun token per fàlu più tardi.
Disattiva l'opzione per fà u commit direttamente à a rama di travagliu. Una tascìa hà dumandà u ripositoriu per essa sola, è una seconda nantu à a stissa rama hà solu a legge finchè a prima ùn hà micca finitu. E vecche versioni di l'app funzionanu ancu accussì.
Annullà ciò chì l'esecuzione hà cambiatu
Una rispusta chì hà scrittu in u vostru ripositoriu dice ciò chì hà toccatu: u ripositoriu, u ramu, è ogni file. Annullate queste cambiamenti rimette i in situ — ognuna di quelle strade hè lettiva à u commit su cui a ramu si standeva prima di l'esecuzione è cumittata cum'è era. Un task è chì hà travagliatu su una ramiu à u so modu aghjattu a ramo di travagliu solu, dunque ùn ci hè nente da rimette: Elimina rimuove a so ramu invece.
Hè un revertu, micca una riscrittura. Nada ùn hè cancellatu è nisuna storia ùn hè riscritta: ciò chì Nymbot ha fattu resta in u log, hè semplicemente micca più u statu di a rama. Qualunque분에 hà pigliatu entre i dui mantiene un checkout chì funziona ancu.
Ùn costa micca nente. Annullà ùn toca micca un mudellu, dunque ùn spende micca crediti — u token d'accessu viaggia cù quella richiesta cum'è bè hè cù ogni altra, è nente di u checkpoint hè salvatu in nighellu parte eccettu in u vostru propiu dispisitivu.
Una ramiu o una dumanda di tiraghjettà chì u run hà apertu hè listata è lasciata induve hè. Chjude a dumanda di tiraghjettà di qualchissunu in u so nomu ùn hè micca un annullamentu, è eliminà un ramiu chì altre persone puderanu avè chjamatu micca tale ancu — fate u da voi stessu s'ellu vulite chì sianu eliminati.
Quanto costa una task di repo
Una tascina di repo usa fin à sex chjamate di mudellu per messaghju — vede, leggi, ricerca, risponde — ognuna fatturata à u prezzu di u mudellu fissatu Prezzu pru. Sò solu e chiamate effettivamente usate chì sò fatturate, dunque una quistione risposta da un file costa circa quantu costa una rispesta ordinaria.
L'app capillu u tutale è u numeru di chiamate dopu ogni tarefa di u repo.
Quandu una tâche manca di spessore
Una task di un repository hè un loop, micca una risposta singola: u mudellu lista una directory, legge un file, cercà in l'arvulu, legge un altru, è solu dopu scrive. Quel loop hà un permettimentu — un numeru di chjamate di u mudellu chì a risposta riserva i crediti per — perchè un agentu senza limiti hè una fattura senza limiti.
Quandu una tascua spende u so allottamentu cù u travagliu ancu da fà, Nymbot si ferma, vi dà ciò chì hà, è u dice. Niente altru ù hè fatturatu.
Pudete ancu ferma continuà. Impostate un budjet di continuazione in Settings è Nymbot accatta un altru allowance da u stessu saldu quandu una task finisce, ricuminciendu esattamente induve si hè fermatu invece di ritraduci a repository da u principiu. Andate un passu à vota, ogni passu dicendu u so prezzu, è si ferma appena u budjet hè spesi, a task hè finita, o se pressate Stop. Scelghje “finchè u mè saldu ùn finisce micca” hè ancu un tettu — hè u vostru saldu invece di un numeru chì avete digitatu.
U per default hè di fermà è di dìvi. Micca nente continua, è micca nenti si spende oltre a risposta chì avete dumandata, à meno chì ùn avete micca settu un budget.
Normalement u vostru apparatu manda ogni parte, cù una task continua solu finché l'app è aperta. Cun l'attività in bacu activatu, u serviziu manda a prossima leg itself mentre l'app hè chjusa, in u stessu budjetu, al più 40 leg è 6 ore, è vi dice una volta chì a tasca hè finita. Per fà cusà, ellu mantiene u token di u repository sigillatu cù una chìave chì solu ellu detiene mentri a tasca hè in funzionamentu, è u elimina quandu a tasca finisce è sempre in u scopu di 6 ore. Una tasca in bacu scrive in a so ramu cum'è qualsiasi altra tasca.
À propositu di quellu token
U token d'accessu hè conservatu nantu à i vostri dispositivi è si sincronizza trà elli in una configurazione criptata end-to-end, cusì u servitore tene solu una copia sigillata chì ùn pò micca legge. Ellu hè eliminatu da un effacement di u dispozitivu, viaghja versu u travagliatore Nymbot cù ogni richesta, è ùn hè mai conservatu in modu leggibile nantu à u servitore o pubblicatu in i relay. L'unica volta chì u servitore u tene hè sigillatu, mentra un esecuzione in bacu u chì avete attivatu funziona per un massimu di 6 ore. Limitatelu à u repository chì intendete utilizà, è revocatelu u vostru fornitore quandu avrite finitu.
Perchè si sincronizza, una chat chì usa u repository funziona nantu à ogni dispozitivu induve vi registrate senza avè à cunnettà di novu. Disconnettendu u repository nantu à un dispozitivu, u token hè eliminatu ancu darte u restu. U token ùn entra mai in un servitore funziunau contenitore di