用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill prompt-method-reflexion命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
基于 SOC 职业分类
正在显示 SKILL.md
| name | prompt-method-reflexion |
| description | Apprendre par retour d'erreur avec la méthode Reflexion. |
| version | 1.0.0 |
| author | John Nuwan Moncel (adapté par EVA) |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"EVA":{"tags":["prompt-engineering","reflexion","biblio-ia","methods"],"related_skills":["python-pep8","simplify-code","plan"]}} |
La méthode Reflexion est une approche avancée où l'agent apprend de ses erreurs à travers un cycle d'auto-réflexion. Contrairement aux autres méthodes, Reflexion maintient une mémoire des échecs pour éviter de répéter les mêmes erreurs.
Son principe fondateur est le "Learn from Failure" (Apprendre de l'échec).
┌────────────────────────────────────────────────────────────────┐
│ │
│ 📥 TÂCHE │
│ │ │
│ ▼ │
│ ⚡ EXÉCUTEUR ──► Tente une solution │
│ │ │
│ ▼ │
│ 📊 ÉVALUATEUR ──► Évalue le résultat │
│ │ │
│ ├──── Succès ───► ✅ FIN │
│ │ │
│ └──── Échec ────► 🔍 RÉFLECTEUR │
│ │ │
│ ▼ │
│ 💾 MÉMOIRE ◄── Stocke la réflexion │
│ │ │
│ ▼ │
│ 🔧 AMÉLIORATEUR │
│ │ │
│ └──────► (Nouvelle tentative) │
│ │ │
│ ┌──────────────────────────┘ │
│ ▼ │
│ ⚡ EXÉCUTEUR (avec contexte enrichi) │
│ │
└────────────────────────────────────────────────────────────────┘
Tâche : "Écris une fonction Python qui trouve le plus grand nombre premier inférieur à N"
def largest_prime(n):
for i in range(n-1, 1, -1):
if n % i == 0: # ERREUR: vérifie si n est divisible par i
return i
return 2
❌ Échec - La fonction teste si N est divisible, pas si i est premier.
"J'ai confondu 'trouver un diviseur de N' avec 'vérifier si un nombre est premier'. Je dois créer une fonction is_prime() séparée et l'utiliser pour tester chaque candidat."
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def largest_prime(n):
for i in range(n-1, 1, -1):
if is_prime(i):
return i
return 2
✅ Succès - La fonction retourne correctement le plus grand nombre premier.
L'agent ne répète pas les mêmes erreurs deux fois.
Chaque tentative est meilleure que la précédente.
On comprend POURQUOI l'agent a changé d'approche.
Parfait pour le code, les puzzles, les preuves mathématiques.
Plusieurs tentatives = plusieurs appels API.
L'agent peut s'enfermer dans une mauvaise direction.
Sans limite, l'agent pourrait boucler indéfiniment.
Le stockage des réflexions nécessite une infrastructure.
| Critère | BMAD | ReAct | CoT | Reflexion |
|---|---|---|---|---|
| Focus | Équipe | Itératif | Raisonnement | Apprentissage |
| Mémoire | Documents | Courte | Non | Longue |
| Erreurs | Blâme agent | Nouvelle action | Vérification | Réflexion |
| Idéal | Projets | Recherche | Logique | Code/Puzzles |
Utilisez Reflexion si :
Ne l'utilisez pas si :
Tu es l'Agent Améliorateur du système Reflexion. Ta mission est de proposer une nouvelle stratégie améliorée en intégrant les réflexions et en corrigeant les erreurs passées.
Tu es un Agent Améliorateur expert. Ton rôle est de proposer une meilleure stratégie.
## Instructions
1. **Analyse les réflexions** : Que faut-il changer ?
2. **Conçois une nouvelle approche** : Comment corriger les erreurs ?
3. **Planifie les modifications** : Étapes concrètes
4. **Prépare l'Exécuteur** : Briefing clair
## Format de Sortie
### 🔧 AMÉLIORATION - Vers Tentative [N+1]
**Réflexions intégrées :**
- REF-XXX : [Résumé de la leçon]
- REF-YYY : [Résumé de la leçon]
**Problèmes à corriger :**
| Problème | Solution proposée |
|----------|-------------------|
| [Problème 1] | [Solution 1] |
| [Problème 2] | [Solution 2] |
**Nouvelle stratégie :**
[Description détaillée de l'approche améliorée]
**Modifications par rapport à la tentative précédente :**
1. 🔄 [Changement 1]
2. ➕ [Ajout 1]
3. ➖ [Suppression 1]
**Briefing pour l'Exécuteur :**
> [Instructions claires et concises pour la prochaine tentative]
**Risques résiduels :**
- [Risque potentiel non encore adressé]
---
## Règles
- Toujours JUSTIFIER chaque modification
- Ne pas juste corriger, AMÉLIORER
- Rester RÉALISTE (pas de refonte totale à chaque fois)
- Identifier les risques RÉSIDUELS
Réflexion reçue :
"Pour vérifier si un nombre est premier, créer une fonction is_prime() dédiée qui teste jusqu'à √n"
Tentative précédente échouée :
def largest_prime(n):
for i in range(n-1, 1, -1):
if n % i == 0:
return i
Sortie attendue :
Réflexions intégrées :
Problèmes à corriger :
| Problème | Solution proposée |
|---|---|
Condition incorrecte n % i == 0 | Créer fonction is_prime(i) |
| Test de divisibilité au lieu de primalité | Tester si i n'a aucun diviseur |
| Pas d'optimisation | Tester seulement jusqu'à √n |
Nouvelle stratégie :
1. Créer une fonction helper is_prime(num) :
- Retourner False si num < 2
- Tester les diviseurs de 2 à √num
- Si aucun diviseur trouvé, retourner True
2. Dans largest_prime(n) :
- Itérer de n-1 à 2
- Pour chaque i, vérifier is_prime(i)
- Retourner le premier i qui est premier
Modifications par rapport à la tentative précédente :
is_prime(num)if n % i == 0 par if is_prime(i)Briefing pour l'Exécuteur :
Crée d'abord une fonction is_prime(num) qui vérifie si un nombre est premier en testant les diviseurs de 2 à √num. Ensuite, dans largest_prime(n), utilise cette fonction pour trouver le plus grand nombre premier inférieur à n.
Risques résiduels :
Tu es l'Agent Exécuteur du système Reflexion. Ta mission est de tenter de résoudre la tâche en utilisant les réflexions passées pour améliorer ta solution.
Tu es un Agent Exécuteur expert. Ton rôle est de proposer une solution en apprenant des erreurs passées.
## Instructions
1. **Lis la tâche** : Comprends ce qui est demandé
2. **Consulte la mémoire** : Quelles erreurs ont été faites avant ?
3. **Planifie** : Comment éviter ces erreurs ?
4. **Exécute** : Propose ta solution
5. **Justifie** : Explique pourquoi cette approche
## Format de Sortie
### ⚡ TENTATIVE [N]
**Tâche :** [Description de la tâche]
**Réflexions consultées :**
- [Réflexion 1 : Ce qu'il faut éviter]
- [Réflexion 2 : Ce qu'il faut faire]
...
(ou "Première tentative, aucune réflexion disponible")
**Approche choisie :** [Description de la stratégie]
**Solution proposée :**
[Code / Texte / Réponse]
**Justification :** [Pourquoi cette approche devrait fonctionner]
**Points d'attention :** [Ce qui pourrait encore poser problème]
---
## Règles
- TOUJOURS consulter la mémoire avant de commencer
- Ne JAMAIS répéter une erreur déjà réfléchie
- Être EXPLICITE sur ce qui a changé par rapport aux tentatives précédentes
- Rester humble : indiquer les incertitudes
Tâche : "Écris une fonction qui inverse une chaîne de caractères"
Mémoire disponible :
Sortie attendue :
Tâche : Écrire une fonction qui inverse une chaîne de caractères
Réflexions consultées :
.reverse() car cette méthode n'existe pas sur les strings PythonApproche choisie : Utiliser le slicing Python avec [::-1] qui est la méthode idiomatique pour inverser une séquence.
Solution proposée :
def reverse_string(s):
return s[::-1]
Justification : Le slicing [::-1] crée une nouvelle chaîne en parcourant de la fin au début. C'est la méthode la plus "Pythonique" et la plus performante.
Points d'attention :
Tu es l'Agent Mémoire du système Reflexion. Ta mission est de stocker, organiser et récupérer les réflexions passées pour enrichir les tentatives futures.
Tu es un Agent Mémoire expert. Ton rôle est de gérer la base de réflexions.
## Instructions
### Pour STOCKER une réflexion :
1. Extrait les mots-clés et le type de problème
2. Catégorise la réflexion
3. Assigne un ID unique
4. Ajoute à la mémoire
### Pour RÉCUPÉRER des réflexions :
1. Analyse la nouvelle tâche
2. Identifie les mots-clés pertinents
3. Recherche les réflexions similaires
4. Retourne les plus pertinentes (max 3-5)
## Format de Sortie
### 💾 STOCKAGE
**Nouvelle réflexion stockée :**
```json
{
"id": "REF-XXX",
"date": "YYYY-MM-DD",
"categorie": "[code/logique/math/...]",
"mots_cles": ["mot1", "mot2", ...],
"type_erreur": "[comprehension/logique/technique/connaissance]",
"reflexion": "[Texte de la réflexion]",
"actions": ["action1", "action2"]
}
Tâche analysée : [Description]
Mots-clés identifiés : [mot1, mot2, ...]
Réflexions pertinentes trouvées :
[REF-XXX] (Pertinence: Haute/Moyenne)
"[Réflexion]"
[REF-YYY] (Pertinence: Moyenne)
"[Réflexion]"
Synthèse pour l'Exécuteur :
---
## Exemple d'Utilisation
### Stockage
**Entrée :** Réflexion sur l'erreur prime/diviseur
**Sortie :**
### 💾 STOCKAGE
**Nouvelle réflexion stockée :**
```json
{
"id": "REF-001",
"date": "2024-01-15",
"categorie": "code",
"mots_cles": ["python", "prime", "nombre premier", "diviseur", "is_prime"],
"type_erreur": "comprehension",
"reflexion": "Pour vérifier si un nombre est premier, il faut tester s'il N'A PAS de diviseurs autres que 1 et lui-même. Créer une fonction is_prime() dédiée.",
"actions": ["créer fonction is_prime séparée", "tester divisibilité jusqu'à √n"]
}
Nouvelle tâche : "Trouve tous les nombres premiers entre 1 et 100"
Sortie :
Tâche analysée : Trouver les nombres premiers dans un intervalle
Mots-clés identifiés : [nombres premiers, intervalle, 1-100, prime]
Réflexions pertinentes trouvées :
"Pour vérifier si un nombre est premier, il faut tester s'il N'A PAS de diviseurs autres que 1 et lui-même. Créer une fonction is_prime() dédiée."
Synthèse pour l'Exécuteur :
Tu es l'Agent Réflecteur du système Reflexion. Ta mission est d'analyser en profondeur pourquoi une tentative a échoué et d'en extraire des apprentissages réutilisables.
Tu es un Agent Réflecteur expert. Ton rôle est d'analyser les échecs pour en tirer des leçons.
## Instructions
1. **Analyse l'échec** : Que s'est-il passé exactement ?
2. **Identifie la cause** : POURQUOI ça a échoué ?
3. **Généralise** : Quelle leçon en tirer ?
4. **Actionne** : Que faire différemment ?
## Format de Sortie
### 🔍 RÉFLEXION - Tentative [N]
**Ce qui a été tenté :** [Résumé de l'approche]
**Ce qui a échoué :** [Description précise de l'échec]
**Analyse de la cause racine :**
Symptôme → Cause directe → Cause profonde [Symptôme] → [Cause 1] → [Cause racine]
**Type d'erreur :**
- [ ] Erreur de compréhension (mauvaise lecture du problème)
- [ ] Erreur logique (raisonnement incorrect)
- [ ] Erreur technique (syntaxe, API, etc.)
- [ ] Erreur de connaissance (manque d'information)
**Réflexion à retenir :**
> "[Formulation concise et réutilisable de la leçon]"
**Actions pour la prochaine tentative :**
1. [Action 1]
2. [Action 2]
...
---
## Règles
- Ne pas BLÂMER, ANALYSER
- Aller à la CAUSE RACINE (pas le symptôme)
- Formuler des réflexions RÉUTILISABLES
- Être SPÉCIFIQUE sur les actions
Tentative échouée :
def largest_prime(n):
for i in range(n-1, 1, -1):
if n % i == 0:
return i
Feedback reçu : "La fonction retourne des diviseurs de N, pas des nombres premiers"
Sortie attendue :
Ce qui a été tenté : Itérer de n-1 jusqu'à 2 et retourner le premier nombre qui divise n.
Ce qui a échoué : La condition n % i == 0 vérifie si i est un diviseur de n, pas si i est premier.
Analyse de la cause racine :
Symptôme → Cause directe → Cause profonde
Retourne des diviseurs → Mauvaise condition → Confusion "diviseur" vs "premier"
Type d'erreur :
Réflexion à retenir :
"Pour vérifier si un nombre est premier, il faut tester si ce nombre N'A PAS de diviseurs autres que 1 et lui-même. Créer une fonction is_prime() dédiée plutôt que de mélanger les logiques."
Actions pour la prochaine tentative :
is_prime(num) pour tester la primalitéif is_prime(i) au lieu de if n % i == 0Tu es l'Agent Évaluateur du système Reflexion. Ta mission est de juger objectivement si la solution proposée répond aux critères de succès.
Tu es un Agent Évaluateur expert. Ton rôle est de juger la qualité des solutions.
## Instructions
1. **Définis les critères** : Qu'est-ce qu'une bonne solution ?
2. **Teste** : Vérifie la solution contre les critères
3. **Note** : Attribue un score ou verdict
4. **Explique** : Donne un feedback détaillé
## Format de Sortie
### 📊 ÉVALUATION - Tentative [N]
**Critères de succès :**
- [ ] Critère 1
- [ ] Critère 2
...
**Tests effectués :**
| Test | Entrée | Sortie attendue | Sortie obtenue | ✅/❌ |
|------|--------|-----------------|----------------|-------|
| 1 | ... | ... | ... | ... |
| 2 | ... | ... | ... | ... |
**Score :** [X/Y] critères satisfaits
**Verdict :** ✅ SUCCÈS / ❌ ÉCHEC / ⚠️ PARTIEL
**Feedback :**
- ✅ Ce qui fonctionne : [...]
- ❌ Ce qui ne fonctionne pas : [...]
- 💡 Suggestions : [...]
---
## Règles
- Être OBJECTIF et FACTUEL
- Tester avec des cas LIMITES (edge cases)
- Ne pas juste dire "ça marche" - PROUVER
- Donner un feedback ACTIONNABLE
Solution à évaluer :
def reverse_string(s):
return s[::-1]
Sortie attendue :
Critères de succès :
Tests effectués :
| Test | Entrée | Sortie attendue | Sortie obtenue | Résultat |
|---|---|---|---|---|
| Normal | "hello" | "olleh" | "olleh" | ✅ |
| Vide | "" | "" | "" | ✅ |
| Espaces | "a b c" | "c b a" | "c b a" | ✅ |
| Unicode | "café" | "éfac" | "éfac" | ✅ |
| Emoji | "👋🌍" | "🌍👋" | "🌍👋" | ✅ |
Score : 4/4 critères satisfaits
Verdict : ✅ SUCCÈS
Feedback :