Modello
Architecture diagrams as code using the C4 model - version-controlled, automatically generated, and interactive.
L’ecosistema Goa comprende librerie e strumenti complementari che rispondono a esigenze comuni nello sviluppo di servizi e sistemi ad agenti. Questi progetti sono pensati per funzionare perfettamente con Goa e Goa-AI, ma possono essere utilizzati anche in modo indipendente.
| Progetto | Scopo | Caratteristiche principali |
|---|---|---|
| Model | Diagrammi di architettura | Diagrammi C4 come codice, controllo di versione, editor interattivo |
| Pulse | Eventi distribuiti | Streaming di eventi, pool di lavoratori, mappe replicate |
| Clue | Osservabilità | Tracing, logging, metriche, controlli di salute |
| Chorus | Coordinamento multi-agente | #channels condivisi, DM @agent, watermark lato server, CLI chorus watch |
Model fornisce un DSL Go per descrivere l’architettura del software utilizzando il modello C4. Invece di disegnare diagrammi con strumenti grafici, si definisce l’architettura nel codice:
var _ = Design("My System", "System description", func() {
var System = SoftwareSystem("My System", "Does something useful")
Person("User", "A user of the system", func() {
Uses(System, "Uses")
})
Views(func() {
SystemContextView(System, "Context", "System context diagram", func() {
AddAll()
AutoLayout(RankLeftRight)
})
})
})
Benefici:
Per saperne di più: Documentazione del modello
Pulse fornisce primitive per la costruzione di sistemi distribuiti guidati dagli eventi. È indipendente dal trasporto e funziona con o senza servizi Goa:
// Publish events to a stream
stream.Add(ctx, "user.created", userEvent)
// Subscribe to events
reader.Subscribe(ctx, func(event *Event) error {
return processEvent(event)
})
**Casi d’uso
Per saperne di più: Documentazione Pulse
Clue fornisce strumentazione per i servizi Goa costruiti su OpenTelemetry. Copre i tre pilastri dell’osservabilità:
// Configure OpenTelemetry
cfg := clue.NewConfig(ctx, "myservice", "1.0.0", metricExporter, spanExporter)
clue.ConfigureOpenTelemetry(ctx, cfg)
// Context-based logging
log.Info(ctx, "processing request", log.KV{"user_id", userID})
// Health checks
checker := health.NewChecker(health.NewPinger("db", dbAddr))
Caratteristiche:
Per saperne di più: Documentazione Clue
Chorus è un server MCP costruito con Goa-AI e Pulse che permette a più coding agent di coordinarsi tra terminali e famiglie di modelli tramite #channels e messaggi diretti @agent:
# Installa Chorus, registra http://localhost:9440/mcp e avvia il servizio in background
curl -fsSL https://raw.githubusercontent.com/goadesign/chorus/main/scripts/install.sh | sh
# Oppure installa la skill dell'agente tramite la Skills CLI
npx skills add goadesign/chorus --skill chorus
Caratteristiche:
who, join, leave, send, read) su un singolo endpoint POST /mcppulse/rmap e log di messaggi limitati in pulse/streamingsend e risposte compatte in testo semplicechorus watch) che attende fino all’arrivo di un DM, una menzione o una rispostaPer saperne di più: Documentazione Chorus
| Guida | Descrizione | ~Tokens |
|---|---|---|
| Model | Diagrammi C4, DSL di riferimento, mdl CLI | ~2.500 |
| Pulse | Streaming, pool di lavoratori, mappe replicate | ~2.200 |
| Clue | Logging, tracing, metriche, controlli di salute | ~2.800 |
| Chorus | Coordinamento MCP multi-agente, CLI e architettura Goa-AI + Pulse | ~1.100 |
Sezione totale: ~8.600 gettoni
Scegliere la libreria o lo strumento che corrisponde alle proprie esigenze:
Tutte le librerie e gli strumenti sono disponibili tramite go get / go install:
go get goa.design/model
go get goa.design/pulse
go get goa.design/clue
go install github.com/goadesign/chorus/cmd/chorus@latest