Avviare server e worker
Avvia il server API e i processi worker su un Runtime durevole, e parla con il server dalla CLI.
Prerequisiti
- una cartella
config/con un flow validato, i suoi agenti e i suoi modelli. Vedi Il tuo primo flow. - un plugin store e un plugin broker installati per il backend che scegli, per esempio
afe-postgreseafe-redis.
Passi
-
Nomina uno store e un broker in un manifest
Runtime(vedi In produzione).Un
Runtimerende durevoli ticket e checkpoint. Con un broker permette anche a più processi di dividersi il lavoro. Senza unRuntime, il motore tiene ticket e checkpoint in memoria e li perde quando il processo finisce. Il server non parte senza unRuntimeche nomina uno store e un broker. -
Esporta il token dell'API, poi avvia il server e i worker.
Il server non parte senza
AFE_API_TOKEN. Ascolta su127.0.0.1a meno che tu non passi--host.afe serveè solo API: accetta una richiesta, la valida, registra il ticket e mette in coda il job. Non esegue mai un nodo. I processiafe workereseguono i job in coda.export AFE_API_TOKEN=$(openssl rand -hex 32)afe serve -c config/ # ascolta su 127.0.0.1:8765afe worker -c config/ # in un altro terminale: esegue i ticket in codaafe worker -c config/ --concurrency 4 # fino a quattro ticket insieme -
Avvia diversi worker sullo stesso store e broker.
Il lock di un ticket è tenuto dal worker che lo esegue. Due worker non eseguono mai lo stesso ticket insieme. Un job consegnato due volte non apre due volte il ticket, e non ripete mai una chiamata al modello già pagata. Un
resumeè legato alla richiesta a cui risponde, quindi un resume duplicato non applica mai una risposta obsoleta a una pausa successiva.afe serve -c ./config # l'API, un processoafe worker -c ./config # esegue i ticket in coda, uno alla voltaafe worker -c ./config -concurrency 4 # fino a quattro ticket insiemeafe workers # i worker vivi e le metriche della coda -
Aggiungi un listener operativo con
--ops-port Nsuafe serveoafe worker.Serve
/livez,/readyze/metrics, su127.0.0.1a meno che--ops-hostnon dica altro. Senza--ops-portnon ascolta nient'altro (vedi In produzione). -
Servi la web UI con
afe serve --ui, sullo stesso host e sulla stessa porta dell'API.Senza di essa rispondono solo l'API, gli endpoint di autenticazione e
/rpc(vedi Web UI).
Comandi
Gli altri comandi parlano con il server. --url vale di default ws://127.0.0.1:8765/rpc:
| Comando | Cosa fa |
|---|---|
afe validate -c DIR | Controlla tutti i manifest e stampa tutti i problemi (lavora sui file, senza server). |
afe run FLOW -i INPUT.yaml [--revision ID] | Avvia un ticket e lo segue finché finisce o aspetta una persona. |
afe rerun TICKET | Avvia un nuovo ticket con flow, input, progetto e revisione di uno esistente, e lo segue. |
afe resume TICKET [AZIONE] [--comment …] | Risponde a un ticket in attesa (o lo fa ripartire) e lo segue. |
afe inspect TICKET | Stato, revisione, consumi, la domanda in attesa, gli artefatti. |
afe tickets [--state STATO] | Elenca i ticket, con i primi 12 caratteri della loro revisione. |
afe workers | I worker vivi e le metriche della coda. |
afe cancel TICKET | Annulla un ticket. I suoi artefatti restano. |
Quando un flow lavora su un progetto (requiresWorkspace diverso da none), afe run accetta
--project NOME. Il progetto deve esistere e combaciare con il tipo di workspace del flow.
afe inspect lo stampa.
Codici di uscita: 0 quando il ticket è finito, 2 quando aspetta una persona, 1 negli altri
casi. Senza un terminale afe run non chiede nulla. Esce con 2 e stampa il comando afe resume
da usare.
Note
afe worker --dryfa girare ogni agente sull'harness dry, che riempie ogni artefatto partendo dal suo Schema, a costo zero.- La sessione del browser per la web UI vive in un cookie
HttpOnly:POST /auth/logincon{"token": "…"}la imposta. Il token è confrontato a tempo costante.POST /auth/logoutla cancella.GET /auth/sessionrisponde{"expires_at": …}oppure401.--session-hoursdecide quanto dura una sessione, 8 ore di default.- Il WebSocket
/rpcaccetta anche quel cookie, ma solo se l'Origindella richiesta è quello del server. La CLI continua a usare il token Bearer, mai il cookie.
afe workersi ferma in modo pulito suSIGINToSIGTERM. Smette di prendere nuovi job, aspetta quelli che sta eseguendo, rilascia i suoi lock ed esce.
Risoluzione dei problemi
Sintomo: afe serve termina con "set AFE_API_TOKEN: the server does not start without a
token".
Causa: il token non è stato esportato in questa shell prima di avviare afe serve.
Rimedio: esporta di nuovo AFE_API_TOKEN, poi avvia afe serve.
Sintomo: afe run non finisce mai, oppure afe workers non mostra nessun worker vivo.
Causa: nessun processo afe worker gira contro lo stesso store e broker.
Rimedio: avvia almeno un afe worker -c config/ in un altro terminale.
Sintomo: due processi afe worker provano a eseguire lo stesso ticket.
Causa: contro un Runtime condiviso non può succedere. Segnala che i worker puntano a store
diversi, per esempio uno ancora su un Runtime in memoria.
Rimedio: controlla che entrambi i worker carichino la stessa cartella config/ e lo stesso DSN
dello store.