Mode deckbuilding

Mode deckbuilding

Dernière mise à jour : 2026-05-10

Depuis 2026-04-24 (Axe 2 Phase 1), un 4e intent 'deckbuilding' s'ajoute à 'rules' | 'synergy' | 'meta'. Il déclenche un pipeline dédié pour produire des decklists structurées exécutables (60 cartes MTG, 40+12+3 Riftbound, 60+sideboard FAB) là où le RAG classique produisait de la prose d'analyse.

Flux (src/services/rag/deckbuilding/)

1. Classification (classify.ts)

Haiku retourne 'deckbuilding' quand la question exige une liste exhaustive avec un nombre de cartes précis ("decklist complète", "40 + 12 runes", "avec sideboard").

À distinguer de synergy qui reste une discussion d'archétype en prose.

Ordre de priorité : deckbuilding > meta > synergy > rules.

2. Dispatch (answer.ts)

Early-return vers askDeckbuilding() juste après résolution de l'intent. Le retrieval standard est jeté, askDeckbuilding relance son propre retrieval avec intent='synergy' forcé.

3. Spec Haiku (deckbuilding/spec.ts)

Un appel Haiku produit un DeckSpec (Zod) structuré :

Fallback defaults par jeu si Haiku renvoie un JSON invalide :

4. Anchor cards

Les fresh + sticky mentions (@-cartes de l'Axe 1) deviennent obligatoires dans la decklist. Le prompt Opus a une règle stricte « tu DOIS inclure ces cartes ». Log warning serveur si une anchor est absente de la réponse finale.

5. Retrieval synergy

retrieveChunks() est appelé avec intent='synergy' → déclenche l'expansion mécanique (retrieve/synergy-expansion.ts). retrieveChunks accepte 'deckbuilding' mais le mappe vers 'synergy' en interne (fallback safe).

6. Prompt Opus spécialisé (prompt-deckbuilding.ts)

DECKBUILDING_SYSTEM_PROMPT impose :

7. userPrompt assemblage

Ordre des blocs :

  1. SPEC DU DECK (JSON Haiku)
  2. CARTES OBLIGATOIRES (ANCHORS) (anchors fresh + sticky)
  3. CARTES CITÉES PAR LE JOUEUR (ce tour) (full)
  4. CARTES ÉVOQUÉES DANS LA CONVERSATION (sticky abrégées)
  5. DECKLISTS DE TOURNOI (mainboard + sideboard complets, jusqu'à 5)
  6. POOL DE CARTES ÉLIGIBLES (organisé par rôle, cap 30 par rôle)
  7. CARTES CANDIDATES (chunks [CARD] + [META], pas [BASE]/[EXT])

8. Génération Opus

promptStream(DECKBUILDING_SYSTEM_PROMPT, userPrompt, 'opus') streamé. Post-processing : autoWrapCardMentions + buildWrapAliases + enrichissement extraCards.

9. Pool exhaustif + decklists d'inspiration (Phase 2, 2026-04-24)

10. Validation structurelle + retry auto (Phase 3, 2026-04-24)

11. Frontend

Aucun changement. Le rendu markdown gère titres + listes + Nx [[card:X]] (texte standard). CardZoomModal fonctionne automatiquement.

Hors scope Phases 1/2/3

Helpers exportés

autoWrapCardMentions, buildWrapAliases, renderFullCard, renderShortCard sont exportés depuis answer.ts pour réutilisation par deckbuilding/ask.ts.


Revision #1
Created 2026-05-10 15:20:14 UTC by thymon
Updated 2026-05-10 15:20:14 UTC by thymon