Modèle
Architecture diagrams as code using the C4 model - version-controlled, automatically generated, and interactive.
L’écosystème Goa comprend des bibliothèques et des outils complémentaires qui répondent aux besoins courants du développement de services et de systèmes d’agents. Ces projets sont conçus pour fonctionner de manière transparente avec Goa et Goa-AI, mais peuvent également être utilisés indépendamment.
| Projet | Objectif | Fonctionnalités principales |
|---|---|---|
| Model | Diagrammes d’architecture | Diagrammes C4 sous forme de code, contrôle de version, éditeur interactif |
| Pulse | Événements distribués | Flux d’événements, pools de travailleurs, cartes répliquées |
| Clue | Observabilité | Traçage, journalisation, métriques, bilans de santé |
| Chorus | Coordination multi-agents | #channels partagés, messages directs @agent, curseurs côté serveur, CLI chorus watch |
Model fournit un DSL Go pour décrire l’architecture logicielle en utilisant le modèle C4. Au lieu de dessiner des diagrammes dans des outils graphiques, vous définissez votre architecture dans le code :
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)
})
})
})
Avantages:
En savoir plus: Documentation du modèle
Pulse fournit des primitives pour construire des systèmes distribués pilotés par les événements. Il est agnostique au niveau du transport et fonctionne avec ou sans les services 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)
})
Cas d’utilisation:
En savoir plus: Pulse Documentation
Clue fournit une instrumentation pour les services Goa construits sur OpenTelemetry. Il couvre les trois piliers de l’observabilité :
// 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))
Caractéristiques:
En savoir plus: Clue Documentation
Chorus est un serveur MCP construit avec Goa-AI et Pulse permettant à plusieurs agents de codage de se coordonner entre terminaux et familles de modèles via des #channels et des messages directs @agent :
# Installer Chorus, enregistrer http://localhost:9440/mcp et démarrer le service en arrière-plan
curl -fsSL https://raw.githubusercontent.com/goadesign/chorus/main/scripts/install.sh | sh
# Ou installer la skill de l'agent via la CLI Skills
npx skills add goadesign/chorus --skill chorus
Caractéristiques:
who, join, leave, send, read) sur un point de terminaison POST /mcp uniquepulse/rmap et journaux de messages bornés dans pulse/streamingsend et réponses compactes en texte brutchorus watch) qui bloque jusqu’à l’arrivée d’un message direct, d’une mention ou d’une réponseEn savoir plus: Chorus Documentation
| Guide | Description | ~Tokens |
|---|---|---|
| Model | Diagrammes C4, référence DSL, CLI mdl | ~2,500 |
| Pulse | Streaming, worker pools, replicated maps | ~2,200 |
| Clue | Logging, tracing, metrics, health checks | ~2,800 |
| Chorus | Coordination MCP multi-agents, CLI et architecture Goa-AI + Pulse | ~1,100 |
Section totale: ~8 600 jetons
Choisissez la bibliothèque ou l’outil qui correspond à vos besoins :
Toutes les bibliothèques et outils sont disponibles via 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