Multi-Mind Debate System v3.5
Système de débat multi-agents avec 6 IA pour valider PRD et reviewer le code avec des perspectives diverses et des échanges itératifs.
Activation
- [ ] Mode identifié :
prdoureview - [ ] Fichier cible localisé
- [ ] Agents disponibles détectés (minimum 3)
- [ ] Knowledge base chargée
Rôle & Principes
Rôle : Orchestrer un débat structuré entre 6 agents IA avec des perspectives différentes pour valider des décisions critiques (PRD, architecture, code).
Principes :
- Diversité : Chaque agent a une personnalité et une spécialité distinctes
- Confrontation : Les agents débattent réellement avec des ping-pong argumentés
- Rigueur : 5 rounds structurés pour une analyse complète
- Convergence : Synthèse vers un consensus actionnable
- Transparence : Toutes les critiques, échanges et divergences sont documentées
Règles STRICTES :
- ⛔ Ne JAMAIS sauter un round
- ⛔ Ne JAMAIS ignorer une critique majeure
- ⛔ Ne JAMAIS forcer un consensus artificiel
- ⛔ Ne JAMAIS interrompre le débat (mode continu)
- ⛔ Ne JAMAIS contourner un agent si sa clé API est configurée (même si erreur temporaire, retry 2x)
- ⛔ Ne JAMAIS utiliser un modèle différent de celui spécifié dans les connecteurs
- ⛔ Ne JAMAIS terminer sans avoir écrit le rapport Markdown complet
- ✅ OBLIGATOIRE : Sauvegarder le rapport dans
docs/debates/YYYY-MM-DD-topic.md - ✅ Documenter les divergences irrésolues
- ✅ Pondérer les avis selon la spécialité
- ✅ Minimum 3 agents pour un débat valide
- ✅ Claude est un débatteur comme les autres (pas un modérateur)
- ✅ Si erreur API → retry 2x avant de marquer l'agent comme indisponible
Les 6 Agents
| Agent | Provider | Rôle | Connecteur | Coût | |-------|----------|------|------------|------| | 🏛️ Claude | Anthropic | Architecte Prudent | Orchestrateur natif | Inclus | | 🤖 GPT | OpenAI | Perfectionniste | Codex CLI | 💳 Payant | | 💎 Gemini | Google | Innovateur UX | Gemini CLI | 💳 Payant | | 🐉 DeepSeek | DeepSeek | Provocateur | API REST | 🆓 Gratuit | | 🔮 GLM | Zhipu AI | Craftsman Frontend | API REST | 🆓 Gratuit | | 🌙 Kimi | Moonshot | Product Thinker | OpenRouter | 🆓 Gratuit |
Process
0. Chargement des API Keys
Avant de détecter les agents, charger les clés depuis .env.local si le fichier existe :
# Charger .env.local s'il existe (à la racine du projet)
if [ -f ".env.local" ]; then
export $(grep -v '^#' .env.local | xargs)
echo "✅ API keys chargées depuis .env.local"
elif [ -f "$HOME/.env.local" ]; then
export $(grep -v '^#' $HOME/.env.local | xargs)
echo "✅ API keys chargées depuis ~/.env.local"
fi
1. Détection des agents
# Vérifier les agents disponibles
detect_agents() {
agents=("Claude") # Toujours disponible
# CLIs (payants)
which codex >/dev/null 2>&1 && agents+=("GPT")
which gemini >/dev/null 2>&1 && agents+=("Gemini")
# API Keys (gratuits) - depuis .env.local ou environnement
[ -n "$GLM_API_KEY" ] && agents+=("GLM")
# OpenRouter donne accès à DeepSeek ET Kimi
[ -n "$OPENROUTER_API_KEY" ] && agents+=("DeepSeek" "Kimi")
echo "${agents[@]}"
}
Validation : Si moins de 3 agents disponibles → afficher instructions d'installation et s'arrêter.
Si 3+ agents disponibles : Afficher la table des agents et lancer le débat automatiquement.
Mode d'exécution : CONTINU (5 rounds automatiques)
Le débat s'exécute en continu du Round 1 au Round 5 sans validation intermédiaire. L'utilisateur voit un progress indicator en temps réel :
🧠 Multi-Mind Debate en cours...
├─ Round 1: CRITIQUE
│ ├─ 🏛️ Claude ✅
│ ├─ 🤖 GPT ✅
│ ├─ 💎 Gemini ✅
│ ├─ 🐉 DeepSeek ✅
│ ├─ 🔮 GLM ✅
│ └─ 🌙 Kimi ✅
├─ Round 2: FRICTIONS ✅
│ └─ 3 frictions identifiées
├─ Round 3: DÉBAT CIBLÉ ⏳
│ ├─ Friction #1: Tour 2/3 ⏳
│ │ ├─ Camp A (🏛️🤖🔮): "SQL pour intégrité..."
│ │ └─ Camp B (💎🐉🌙): "NoSQL pour flexibilité..."
│ ├─ Friction #2: En attente...
│ └─ Friction #3: En attente...
├─ Round 4: CONVERGENCE ...
└─ Round 5: CONSENSUS ...
Le rapport final complet est généré dans docs/debates/ et affiché à la fin.
ROUND 1 : CRITIQUE
Chaque agent analyse le document indépendamment avec des réponses détaillées et argumentées.
Pour chaque agent disponible :
- Envoyer le document avec le system prompt de l'agent
- Demander une critique approfondie et argumentée :
- Points forts (3 max) avec justification détaillée
- Points faibles (5 max) avec explication du problème et impact
- Risques identifiés avec scénarios concrets
- Score /10 avec justification du score
Instructions pour les agents (à inclure dans le prompt) :
"Fournir une analyse DÉTAILLÉE et ARGUMENTÉE. Pour chaque point, expliquer le POURQUOI avec des exemples concrets. Éviter les réponses synthétiques ou bullet points sans explication. Minimum 2-3 phrases par point."
Output attendu par agent :
### 🏛️ Claude - Architecte Prudent
**Score : 7/10**
> Justification : [Explication détaillée du score en 2-3 phrases, ce qui manque pour avoir plus, ce qui est bien fait]
#### ✅ Points forts
**1. [Titre du point fort]**
[Explication détaillée de pourquoi c'est un point fort, avec exemples concrets du document. Minimum 2-3 phrases argumentées.]
**2. [Titre du point fort]**
[Explication détaillée...]
**3. [Titre du point fort]**
[Explication détaillée...]
#### ⚠️ Points faibles
**1. [Titre du point faible]** - Sévérité: [Critique/Majeure/Mineure]
[Explication détaillée du problème : qu'est-ce qui ne va pas, pourquoi c'est problématique, quel impact potentiel. Proposer une piste d'amélioration. Minimum 3-4 phrases.]
**2. [Titre du point faible]** - Sévérité: [Critique/Majeure/Mineure]
[Explication détaillée...]
#### 🚨 Risques
**[Risque 1]** - Probabilité: [Haute/Moyenne/Basse]
[Scénario concret : dans quelles circonstances ce risque se matérialise, quelles conséquences, comment le mitiger. Minimum 2-3 phrases.]
**[Risque 2]** - Probabilité: [Haute/Moyenne/Basse]
[Scénario concret...]
→ Continuer automatiquement vers Round 2
ROUND 2 : IDENTIFICATION DES FRICTIONS
Analyser les critiques du Round 1 pour extraire les points de désaccord majeurs.
Process :
- Comparer les critiques de tous les agents
- Identifier 2-3 frictions majeures (points où les agents divergent)
- Former les "camps" pour chaque friction
Output attendu :
## 🔥 Frictions identifiées
### Friction #1 : [Sujet du désaccord]
**Question** : [Question centrale du débat]
| Camp A | Camp B |
|--------|--------|
| 🏛️ Claude, 🤖 GPT, 🔮 GLM | 💎 Gemini, 🐉 DeepSeek, 🌙 Kimi |
| Position : [Résumé position A] | Position : [Résumé position B] |
### Friction #2 : [Sujet du désaccord]
**Question** : [Question centrale du débat]
| Camp A | Camp B |
|--------|--------|
| [Agents] | [Agents] |
| Position : [Résumé] | Position : [Résumé] |
### Friction #3 : [Sujet du désaccord]
...
→ Continuer automatiquement vers Round 3
ROUND 3 : DÉBAT CIBLÉ (Itératif)
Pour chaque friction identifiée, organiser un débat avec plusieurs tours d'échange.
Règles du débat :
- Maximum 3 tours par friction
- Chaque camp argumente puis répond aux arguments de l'autre
- Claude participe comme débatteur dans son camp (pas comme modérateur)
- Arrêt anticipé si consensus atteint
Structure par friction :
Friction #1 : [Sujet]
│
├─ Tour 1
│ ├─ Camp A argumente : [Arguments initiaux]
│ └─ Camp B argumente : [Arguments initiaux]
│
├─ Tour 2
│ ├─ Camp A répond à B : [Contre-arguments]
│ └─ Camp B répond à A : [Contre-arguments]
│
└─ Tour 3 (si pas de résolution)
├─ Camp A : [Arguments finaux / concession]
└─ Camp B : [Arguments finaux / concession]
└─ Statut : [RÉSOLU vers X / DIVERGENCE MAINTENUE]
Output attendu par friction :
### 🔥 Friction #1 : [Sujet]
#### Tour 1 - Arguments initiaux
**Camp A (🏛️🤖🔮)** :
> [Arguments détaillés du Camp A]
**Camp B (💎🐉🌙)** :
> [Arguments détaillés du Camp B]
---
#### Tour 2 - Réponses croisées
**Camp A répond à Camp B** :
> [Contre-arguments A → B]
**Camp B répond à Camp A** :
> [Contre-arguments B → A]
---
#### Tour 3 - Position finale
**Camp A** :
> [Position finale, éventuelles concessions]
**Camp B** :
> [Position finale, éventuelles concessions]
---
#### 📊 Résultat
- **Statut** : [✅ RÉSOLU / ⚖️ DIVERGENCE]
- **Si résolu** : [Consensus atteint sur X]
- **Si divergence** : [Positions maintenues, à trancher par l'utilisateur]
→ Continuer automatiquement vers Round 4
ROUND 4 : CONVERGENCE
Après les débats, chaque agent donne son TOP 3 des points prioritaires.
Pour chaque agent :
- Demander les 3 points les plus importants à traiter
- Tenir compte des résultats du Round 3 (débats)
- Pondérer selon la spécialité de l'agent
Pondération par spécialité :
| Agent | PRD | Code Review | |-------|-----|-------------| | Claude | 1.5x (architecture) | 1.5x (sécurité) | | GPT | 1.2x (specs) | 1.5x (qualité) | | Gemini | 1.5x (UX) | 1.2x (innovation) | | DeepSeek | 1.0x | 1.2x (edge cases) | | GLM | 1.3x (frontend) | 1.3x (frontend) | | Kimi | 1.5x (product) | 1.0x |
Output attendu :
## 📊 Convergence
### TOP 3 par agent
| Agent | #1 | #2 | #3 |
|-------|-----|-----|-----|
| 🏛️ Claude | [Point] | [Point] | [Point] |
| 🤖 GPT | [Point] | [Point] | [Point] |
| 💎 Gemini | [Point] | [Point] | [Point] |
| 🐉 DeepSeek | [Point] | [Point] | [Point] |
| 🔮 GLM | [Point] | [Point] | [Point] |
| 🌙 Kimi | [Point] | [Point] | [Point] |
### Classement pondéré global
| Rang | Point | Score pondéré | Agents |
|------|-------|---------------|--------|
| 1 | [Point] | 4.5 | 🏛️💎🌙 |
| 2 | [Point] | 3.8 | 🤖🐉 |
| 3 | [Point] | 3.2 | 🏛️🤖🔮 |
| 4 | [Point] | 2.9 | 💎🐉🌙 |
| 5 | [Point] | 2.5 | 🔮🌙 |
→ Continuer automatiquement vers Round 5
ROUND 5 : CONSENSUS
Claude synthétise l'ensemble du débat (en tant que rapporteur, après avoir été débatteur).
Synthèse :
- Points de consensus (unanimité ou majorité)
- Résultats des débats (Round 3)
- Divergences irrésolues (documenter les deux positions)
- Actions prioritaires (TOP 5 actionnable)
- Recommandation finale
Output final :
## 🧠 Synthèse Multi-Mind
### ✅ Consensus (X points)
Points sur lesquels tous les agents s'accordent :
1. [Point de consensus 1]
2. [Point de consensus 2]
3. [Point de consensus 3]
### 🔥 Résultats des débats
| Friction | Statut | Conclusion |
|----------|--------|------------|
| #1 : [Sujet] | ✅ Résolu | [Consensus atteint sur X] |
| #2 : [Sujet] | ⚖️ Divergence | [Voir détails ci-dessous] |
| #3 : [Sujet] | ✅ Résolu | [Consensus atteint sur Y] |
### ⚖️ Divergences irrésolues (Y points)
| Point | Position A | Position B | Recommandation |
|-------|------------|------------|----------------|
| [Point] | 🏛️🤖 : [Argument] | 💎🐉 : [Argument] | [Ma recommandation] |
### 📋 Actions Prioritaires
1. [ ] **P0** : [Action critique]
2. [ ] **P1** : [Action importante]
3. [ ] **P1** : [Action importante]
4. [ ] **P2** : [Action souhaitable]
5. [ ] **P2** : [Action souhaitable]
### 💬 Recommandation finale
[Recommandation finale de Claude basée sur le débat complet - 3 à 5 phrases]
Output Template
Terminal (live)
╔═══════════════════════════════════════════════════════════════╗
║ 🧠 MULTI-MIND DEBATE ║
║ Mode: [prd|review] | File: [filename] ║
╠═══════════════════════════════════════════════════════════════╣
║ Agents: [N]/6 ║
║ 🏛️ Claude ✅ 🤖 GPT [✅|❌] 💎 Gemini [✅|❌] ║
║ 🐉 DeepSeek [✅|❌] 🔮 GLM [✅|❌] 🌙 Kimi [✅|❌] ║
╠═══════════════════════════════════════════════════════════════╣
║ Round 1: CRITIQUE [⏳|✅] ║
║ Round 2: FRICTIONS [⏳|✅] ║
║ Round 3: DÉBAT CIBLÉ [⏳|✅] ← 3 frictions, 9 tours ║
║ Round 4: CONVERGENCE [⏳|✅] ║
║ Round 5: CONSENSUS [⏳|✅] ║
╠═══════════════════════════════════════════════════════════════╣
║ Duration: [X]m [Y]s ║
╚═══════════════════════════════════════════════════════════════╝
Rapport final (terminal)
╔═══════════════════════════════════════════════════════════════╗
║ 🧠 MULTI-MIND DEBATE COMPLETE ║
║ Agents: [N]/6 | Duration: [X]m [Y]s ║
╠═══════════════════════════════════════════════════════════════╣
║ ✅ CONSENSUS ([N] points) ║
║ 🔥 FRICTIONS ([N] débattues, [M] résolues) ║
║ ⚖️ DIVERGENCES ([N] points) ║
║ 📋 ACTIONS ([N] items) ║
╠═══════════════════════════════════════════════════════════════╣
║ 📄 Rapport: docs/debates/[YYYY-MM-DD]-[topic].md ║
╚═══════════════════════════════════════════════════════════════╝
Rapport Markdown complet (⚠️ OBLIGATOIRE)
CETTE ÉTAPE EST OBLIGATOIRE : À la fin du Round 5, tu DOIS créer le fichier
docs/debates/YYYY-MM-DD-topic.mdavec le rapport complet. Ne JAMAIS terminer sans avoir écrit ce fichier. Le débat n'est PAS terminé tant que le fichier n'est pas créé.
Procédure :
- Créer le dossier
docs/debates/s'il n'existe pas - Écrire le fichier avec le template ci-dessous
- Confirmer la création dans le terminal
Sauvegarder dans docs/debates/YYYY-MM-DD-topic.md :
# Multi-Mind Debate Report
## Métadonnées
- **Date** : [YYYY-MM-DD HH:MM]
- **Mode** : [prd|review]
- **Fichier** : [path/to/file]
- **Agents** : [N]/6
- **Durée** : [X]m [Y]s
- **Frictions** : [N] identifiées, [M] résolues
## Résumé exécutif
[3-5 phrases résumant le débat et ses conclusions]
---
## Round 1 : Critiques individuelles
[Critiques complètes de chaque agent]
---
## Round 2 : Frictions identifiées
[Liste des frictions avec les camps formés]
---
## Round 3 : Débats ciblés
### Friction #1 : [Sujet]
[Tous les tours d'échange détaillés]
### Friction #2 : [Sujet]
[Tous les tours d'échange détaillés]
### Friction #3 : [Sujet]
[Tous les tours d'échange détaillés]
---
## Round 4 : Convergence
[TOP 3 de chaque agent + classement pondéré]
---
## Round 5 : Synthèse finale
[Consensus, résultats débats, divergences, actions]
Règles d'appel API (⚠️ STRICTES)
Utilisation des modèles
OBLIGATOIRE : Utiliser EXACTEMENT les modèles spécifiés ci-dessous. Ne JAMAIS substituer par un autre modèle.
| Agent | Modèle EXACT | Aucune substitution | |-------|--------------|---------------------| | Claude | claude-opus-4.5 | ⛔ Pas de sonnet/haiku | | GPT | gpt-5.2-codex | ⛔ Pas de gpt-4/gpt-4o | | Gemini | gemini-3 | ⛔ Pas de gemini-1.5/2.0 | | DeepSeek | deepseek/deepseek-v3.2 | ⛔ Pas de deepseek-chat | | GLM | glm-4.7 | ⛔ Pas de glm-4-flash | | Kimi | moonshotai/kimi-k2.5 | ⛔ Pas de moonshot-v1 |
Gestion des erreurs API
Pour chaque appel API :
1. Essai initial
2. Si erreur (timeout, quota, 429, 5xx) → attendre 3s → retry #1
3. Si encore erreur → attendre 5s → retry #2
4. Si encore erreur → marquer agent comme ❌ indisponible (pas de substitution!)
Erreurs à NE PAS interpréter comme "quota épuisé" :
- Erreur réseau temporaire → retry
- Timeout → retry
- 429 (rate limit) → retry avec backoff
- 5xx (erreur serveur) → retry
Seules ces erreurs marquent l'agent comme indisponible :
- 401 (clé invalide)
- 403 (accès refusé)
- 3 échecs consécutifs après retries
Anti-substitution (⛔ CRITIQUE)
INTERDIT : Ne JAMAIS chercher des "modèles alternatifs" ou "modèles gratuits" sur OpenRouter ou ailleurs. Si un modèle échoue après retries → marquer l'agent indisponible, point final.
Comportements INTERDITS :
- ⛔
curl openrouter.ai/api/v1/modelspour chercher des alternatives - ⛔ Remplacer
kimi-k2.5parmoonlightou autre - ⛔ Remplacer
deepseek-v3.2pardeepseek-chat - ⛔ Utiliser des modèles
:freeà la place des modèles spécifiés - ⛔ "Improviser" avec d'autres modèles
Compatibilité macOS
macOS n'a pas la commande timeout. Utiliser ces alternatives :
# Option 1: Installer gtimeout via Homebrew
brew install coreutils
gtimeout 60 curl ...
# Option 2: Utiliser la fonction Bash native (préféré)
run_with_timeout() {
local timeout=$1
shift
"$@" &
local pid=$!
( sleep "$timeout"; kill -9 $pid 2>/dev/null ) &
local killer=$!
wait $pid 2>/dev/null
local result=$?
kill $killer 2>/dev/null
wait $killer 2>/dev/null
return $result
}
# Usage
run_with_timeout 60 curl -X POST ...
Échappement JSON sécurisé
Pour éviter les problèmes de quotes, toujours utiliser des fichiers temporaires :
# ✅ CORRECT - Utiliser un fichier JSON
cat > /tmp/payload.json << 'EOFPAYLOAD'
{
"model": "deepseek/deepseek-v3.2",
"messages": [{"role": "user", "content": "..."}]
}
EOFPAYLOAD
curl -X POST "https://openrouter.ai/api/v1/chat/completions" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/payload.json
# ⛔ INCORRECT - Interpolation de variables dans le JSON inline
curl -d '{"messages": [{"content": "$PROMPT"}]}' # ERREUR!
Connecteurs par Agent
Claude (natif)
Utilise le contexte courant de Claude Code (claude-opus-4.5).
GPT via Codex CLI
codex exec -m gpt-5.2-codex -o /tmp/gpt-response.txt "[system prompt + document]"
Gemini via Gemini CLI
gemini --model gemini-3 --prompt "[system prompt + document]"
DeepSeek via OpenRouter
curl -X POST "https://openrouter.ai/api/v1/chat/completions" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek/deepseek-v3.2", "messages": [...]}'
# DeepSeek V3.2 via OpenRouter (évite les quotas API directe)
GLM via Z.AI API
curl -X POST "https://api.z.ai/api/coding/paas/v4/chat/completions" \
-H "Authorization: Bearer $GLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "glm-4.7", "messages": [...]}'
# GLM-4.7 via Z.AI (endpoint coding/paas)
Kimi via OpenRouter
curl -X POST "https://openrouter.ai/api/v1/chat/completions" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "moonshotai/kimi-k2.5", "messages": [...]}'
# Kimi K2.5 via OpenRouter
Instructions d'installation des agents
Si moins de 3 agents disponibles, afficher :
## ⚠️ Agents insuffisants
Multi-Mind nécessite minimum 3 agents. Actuellement : [N] agent(s).
### Option 1 : Fichier .env.local (recommandé)
Copier le template et ajouter tes clés :
```bash
cp .env.example .env.local
# Éditer .env.local avec tes clés API
Contenu de .env.local :
GLM_API_KEY=ta-clé-glm
OPENROUTER_API_KEY=sk-or-v1-ta-clé-openrouter
Note : DeepSeek et Kimi utilisent OpenRouter (une seule clé pour les deux).
Option 2 : Variables d'environnement
Ajouter dans ~/.zshrc ou ~/.bashrc :
export GLM_API_KEY="..."
export OPENROUTER_API_KEY="sk-or-..."
Puis : source ~/.zshrc
Où obtenir les clés (gratuit)
| Agent | URL | |-------|-----| | GLM (Z.AI) | https://docs.z.ai/ | | OpenRouter (DeepSeek + Kimi) | https://openrouter.ai/keys |
Agents payants (optionnel)
GPT via Codex CLI
npm install -g @openai/codex
codex auth
Gemini CLI
npm install -g gemini-cli
gemini auth
---
## Output Validation
### Checklist
| Critère | Status |
|---------|--------|
| Minimum 3 agents actifs | ✅/❌ |
| 5 rounds complétés | ✅/❌ |
| Toutes critiques documentées | ✅/❌ |
| Frictions identifiées | ✅/❌ |
| Débats itératifs exécutés | ✅/❌ |
| Consensus identifié | ✅/❌ |
| Divergences documentées | ✅/❌ |
| Actions prioritaires listées | ✅/❌ |
| Rapport Markdown généré | ✅/❌ |
**Score minimum : 8/9**
---
## Auto-Chain
Après le débat Multi-Mind :
```markdown
## 🔗 Prochaine étape
✅ Multi-Mind Debate terminé.
### Si mode PRD :
→ 🏗️ **Lancer `/architect` ?** (architecture technique)
### Si mode Review :
→ 📝 **Appliquer les corrections ?** (code-implementer)
---
**[Y] Oui, continuer** | **[N] Non, je choisis** | **[P] Pause**
Transitions
- Depuis
/pm-prd: "Valider le PRD avec Multi-Mind ?" - Depuis
/code-reviewer: "Review multi-perspectives ?" - Vers
/architect: "Passer à l'architecture ?" - Vers
/code-implementer: "Appliquer les corrections ?"
微信扫一扫