Compétence d'auto-amélioration
Enregistrez les apprentissages et les erreurs dans des fichiers Markdown pour une amélioration continue. Les agents de codage peuvent ensuite les traiter en corrections, et les apprentissages importants sont promus dans la mémoire du projet.
Référence rapide
| Situation | Action |
|---|---|
| Une commande/opération échoue | Enregistrer dans .learnings/ERRORS.md |
| L'utilisateur vous corrige | Enregistrer dans .learnings/LEARNINGS.md avec la catégorie correction |
| L'utilisateur veut une fonctionnalité manquante | Enregistrer dans .learnings/FEATURE_REQUESTS.md |
| Une API/outil externe échoue | Enregistrer dans .learnings/ERRORS.md avec les détails d'intégration |
| Les connaissances étaient obsolètes | Enregistrer dans .learnings/LEARNINGS.md avec la catégorie knowledge_gap |
| Une meilleure approche a été trouvée | Enregistrer dans .learnings/LEARNINGS.md avec la catégorie best_practice |
| Similaire à une entrée existante | Lier avec **Voir aussi**, envisager d'augmenter la priorité |
| Apprentissage largement applicable | Promouvoir vers CLAUDE.md, AGENTS.md, et/ou .github/copilot-instructions.md |
| Améliorations de flux de travail | Promouvoir vers AGENTS.md (espace de travail OpenClaw) |
| Pièges d'outils | Promouvoir vers TOOLS.md (espace de travail OpenClaw) |
| Schémas comportementaux | Promouvoir vers SOUL.md (espace de travail OpenClaw) |
Configuration OpenClaw (Recommandée)
OpenClaw est la plateforme principale de cette compétence. Elle utilise l'injection de prompts basée sur l'espace de travail avec chargement automatique de la compétence.
Installation
Via ClawdHub (recommandé) :
clawdhub install self-improving-agent
Manuelle :
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent
Structure de l'espace de travail
OpenClaw injecte ces fichiers dans chaque session :
~/.openclaw/workspace/
├── AGENTS.md # Flux de travail multi-agents, modèles de délégation
├── SOUL.md # Directives comportementales, personnalité, principes
├── TOOLS.md # Capacités des outils, pièges d'intégration
├── MEMORY.md # Mémoire à long terme (session principale uniquement)
├── memory/ # Fichiers de mémoire quotidiens
│ └── YYYY-MM-DD.md
└── .learnings/ # Fichiers de journalisation de cette compétence
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
Créer les fichiers d'apprentissage
mkdir -p ~/.openclaw/workspace/.learnings
Créez ensuite les fichiers de journalisation (ou copiez depuis assets/) :
LEARNINGS.md— corrections, lacunes de connaissances, meilleures pratiquesERRORS.md— échecs de commandes, exceptionsFEATURE_REQUESTS.md— fonctionnalités demandées par l'utilisateur
Cibles de promotion
Lorsque les apprentissages s'avèrent largement applicables, promouvez-les vers les fichiers de l'espace de travail :
| Type d'apprentissage | Promouvoir vers | Exemple |
|---|---|---|
| Schémas comportementaux | SOUL.md | "Soyez concis, évitez les clauses de non-responsabilité" |
| Améliorations de flux de travail | AGENTS.md | "Lancer des sous-agents pour les longues tâches" |
| Pièges d'outils | TOOLS.md | "Git push nécessite une authentification configurée au préalable" |
Communication inter-sessions
OpenClaw fournit des outils pour partager les apprentissages entre sessions :
- sessions_list — Voir les sessions actives/récentes
- sessions_history — Lire la transcription d'une autre session
- sessions_send — Envoyer un apprentissage à une autre session
- sessions_spawn — Lancer un sous-agent pour un travail en arrière-plan
Facultatif : Activer le hook
Pour des rappels automatiques au début de session :
# Copier le hook dans le répertoire des hooks d'OpenClaw
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
# Activer le hook
openclaw hooks enable self-improvement
Voir references/openclaw-integration.md pour les détails complets.
Configuration générique (Autres agents)
Pour Claude Code, Codex, Copilot ou d'autres agents, créez .learnings/ dans votre projet :
mkdir -p .learnings
Copiez les modèles depuis assets/ ou créez des fichiers avec des en-têtes.
Format de journalisation
Entrée d'apprentissage
Ajoutez à .learnings/LEARNINGS.md :
## [LRN-YYYYMMDD-XXX] catégorie
**Enregistré** : horodatage ISO-8601
**Priorité** : faible | moyenne | élevée | critique
**Statut** : en_attente
**Domaine** : frontend | backend | infra | tests | docs | config
### Résumé
Description en une ligne de ce qui a été appris
### Détails
Contexte complet : ce qui s'est passé, ce qui n'allait pas, ce qui est correct
### Action suggérée
Correction ou amélioration spécifique à apporter
### Métadonnées
- Source : conversation | erreur | retour_utilisateur
- Fichiers associés : chemin/vers/fichier.ext
- Tags : tag1, tag2
- Voir aussi : LRN-20250110-001 (si lié à une entrée existante)
---
Entrée d'erreur
Ajoutez à .learnings/ERRORS.md :
## [ERR-YYYYMMDD-XXX] nom_compétence_ou_commande
**Enregistré** : horodatage ISO-8601
**Priorité** : élevée
**Statut** : en_attente
**Domaine** : frontend | backend | infra | tests | docs | config
### Résumé
Brève description de ce qui a échoué
### Erreur
Message d'erreur ou sortie réelle
### Contexte
- Commande/opération tentée
- Entrée ou paramètres utilisés
- Détails de l'environnement si pertinent
### Correctif suggéré
Si identifiable, ce qui pourrait résoudre le problème
### Métadonnées
- Reproductible : oui | non | inconnu
- Fichiers associés : chemin/vers/fichier.ext
- Voir aussi : ERR-20250110-001 (si récurrent)
---
Entrée de demande de fonctionnalité
Ajoutez à .learnings/FEATURE_REQUESTS.md :
## [FEAT-YYYYMMDD-XXX] nom_fonctionnalité
**Enregistré** : horodatage ISO-8601
**Priorité** : moyenne
**Statut** : en_attente
**Domaine** : frontend | backend | infra | tests | docs | config
### Fonctionnalité demandée
Ce que l'utilisateur voulait faire
### Contexte utilisateur
Pourquoi il en avait besoin, quel problème il résout
### Estimation de complexité
simple | moyen | complexe
### Implémentation suggérée
Comment cela pourrait être construit, ce que cela pourrait étendre
### Métadonnées
- Fréquence : première_fois | récurrent
- Fonctionnalités associées : nom_fonctionnalité_existante
---
Génération d'ID
Format : TYPE-YYYYMMDD-XXX
- TYPE :
LRN(apprentissage),ERR(erreur),FEAT(fonctionnalité) - YYYYMMDD : Date actuelle
- XXX : Numéro séquentiel ou 3 caractères aléatoires (par exemple,
001,A7B)
Exemples : LRN-20250115-001, ERR-20250115-A3F, FEAT-20250115-002
Résolution des entrées
Lorsqu'un problème est résolu, mettez à jour l'entrée :
- Changez
**Statut** : en_attente→**Statut** : résolu - Ajoutez un bloc de résolution après les Métadonnées :
### Résolution
- **Résolu** : 2025-01-16T09:00:00Z
- **Commit/PR** : abc123 ou #42
- **Notes** : Brève description de ce qui a été fait
Autres valeurs de statut :
en_cours- En cours de traitementnon_resolu- Décidé de ne pas traiter (ajoutez une raison dans les notes de Résolution)promu- Élevé vers CLAUDE.md, AGENTS.md ou .github/copilot-instructions.md
Promotion vers la mémoire du projet
Lorsqu'un apprentissage est largement applicable (pas une correction ponctuelle), promouvez-le vers la mémoire permanente du projet.
Quand promouvoir
- L'apprentissage s'applique à plusieurs fichiers/fonctionnalités
- Connaissance que tout contributeur (humain ou IA) devrait connaître
- Empêche les erreurs récurrentes
- Documente les conventions spécifiques au projet
Cibles de promotion
| Cible | Ce qui y appartient |
|---|---|
CLAUDE.md | Faits du projet, conventions, pièges pour toutes les interactions Claude |
AGENTS.md | Flux de travail spécifiques aux agents, modèles d'utilisation des outils, règles d'automatisation |
.github/copilot-instructions.md | Contexte et conventions du projet pour GitHub Copilot |
SOUL.md | Directives comportementales, style de communication, principes (espace de travail OpenClaw) |
TOOLS.md | Capacités des outils, modèles d'utilisation, pièges d'intégration (espace de travail OpenClaw) |
Comment promouvoir
- Distillez l'apprentissage en une règle ou un fait concis
- Ajoutez à la section appropriée du fichier cible (créez le fichier si nécessaire)
- Mettez à jour l'entrée originale :
- Changez
**Statut** : en_attente→**Statut** : promu - Ajoutez
**Promu vers** : CLAUDE.md,AGENTS.md, ou.github/copilot-instructions.md
- Changez
Exemples de promotion
Apprentissage (verbeux) :
Le projet utilise pnpm workspaces. Tentative de
npm installmais échec. Le fichier de verrouillage estpnpm-lock.yaml. Doit utiliserpnpm install.
Dans CLAUDE.md (concis) :
## Build & Dépendances
- Gestionnaire de paquets : pnpm (pas npm) - utilisez `pnpm install`
Apprentissage (verbeux) :
Lors de la modification des points de terminaison API, le client TypeScript doit être régénéré. Oublier cela provoque des incompatibilités de type à l'exécution.
Dans AGENTS.md (actionnable) :
## Après les modifications d'API
1. Régénérez le client : `pnpm run generate:api`
2. Vérifiez les erreurs de type : `pnpm tsc --noEmit`
Détection de schémas récurrents
Si vous journalisez quelque chose de similaire à une entrée existante :
- Recherchez d'abord :
grep -r "mot-clé" .learnings/ - Lieze les entrées : Ajoutez
**Voir aussi** : ERR-20250110-001dans les Métadonnées - Augmentez la priorité si le problème continue de se reproduire
- Envisagez un correctif systémique : Les problèmes récurrents indiquent souvent :
- Documentation manquante (→ promouvoir vers CLAUDE.md ou .github/copilot-instructions.md)
- Automatisation manquante (→ ajouter à AGENTS.md)
- Problème architectural (→ créer un ticket de dette technique)
Révision périodique
Révisez .learnings/ aux points d'arrêt naturels :
Quand réviser
- Avant de commencer une nouvelle tâche majeure
- Après avoir terminé une fonctionnalité
- Lorsque vous travaillez dans un domaine avec des apprentissages passés
- Hebdomadairement pendant le développement actif
Vérification rapide de l'état
# Compter les éléments en attente
grep -h "Statut\*\* : en_attente" .learnings/*.md | wc -l
# Lister les éléments en attente de haute priorité
grep -B5 "Priorité\*\* : élevée" .learnings/*.md | grep "^## \\["
# Trouver les apprentissages pour un domaine spécifique
grep -l "Domaine\*\* : backend" .learnings/*.md
Actions de révision
- Résoudre les éléments corrigés
- Promouvoir les apprentissages applicables
- Lier les entrées associées
- Escalader les problèmes récurrents
Déclencheurs de détection
Journalisez automatiquement lorsque vous remarquez :
Corrections (→ apprentissage avec catégorie correction) :
- "Non, ce n'est pas ça..."
- "En fait, ça devrait être..."
- "Vous vous trompez sur..."
- "C'est obsolète..."
Demandes de fonctionnalités (→ demande de fonctionnalité) :
- "Pouvez-vous aussi..."
- "J'aimerais pouvoir..."
- "Y a-t-il un moyen de..."
- "Pourquoi ne pouvez-vous pas..."
Lacunes de connaissances (→ apprentissage avec catégorie knowledge_gap) :
- L'utilisateur fournit des informations que vous ne connaissiez pas
- La documentation que vous avez consultée est obsolète
- Le comportement de l'API diffère de votre compréhension
Erreurs (→ entrée d'erreur) :
- La commande retourne un code de sortie non nul
- Exception ou trace de la pile
- Sortie ou comportement inattendu
- Délai d'attente ou échec de connexion
Directives de priorité
| Priorité | Quand l'utiliser |
|---|---|
critique | Bloque la fonctionnalité de base, risque de perte de données, problème de sécurité |
élevée | Impact significatif, affecte les flux de travail courants, problème récurrent |
moyenne | Impact modéré, solution de contournement existe |
faible | Gêne mineure, cas limite, agréable à avoir |
Balises de domaine
Utilisez pour filtrer les apprentissages par zone de codebase :
| Domaine | Périmètre |
|---|---|
frontend | Interface utilisateur, composants, code côté client |
backend | API, services, code côté serveur |
infra | CI/CD, déploiement, Docker, cloud |
tests | Fichiers de test, utilitaires de test, couverture |
docs | Documentation, commentaires, READMEs |
config | Fichiers de configuration, environnement, paramètres |
Meilleures pratiques
- Journalisez immédiatement - le contexte est plus frais juste après le problème
- Soyez spécifique - les futurs agents doivent comprendre rapidement
- Incluez les étapes de reproduction - surtout pour les erreurs
- Lieze les fichiers associés - facilite les corrections
- Suggérez des correctifs concrets - pas seulement "enquêter"
- Utilisez des catégories cohérentes - permet le filtrage
- Promouvez agressivement - en cas de doute, ajoutez à CLAUDE.md ou .github/copilot-instructions.md
- Révisez régulièrement - les apprentissages obsolètes perdent de leur valeur
Options Gitignore
Garder les apprentissages en local (par développeur) :
.learnings/
Traquer les apprentissages dans le dépôt (à l'échelle de l'équipe) : Ne pas ajouter à .gitignore - les apprentissages deviennent des connaissances partagées.
Hybride (traquer les modèles, ignorer les entrées) :
.learnings/*.md
!.learnings/.gitkeep
Intégration des hooks
Activez les rappels automatiques via des hooks d'agent. C'est optionnel - vous devez explicitement configurer les hooks.
Configuration rapide (Claude Code / Codex)
Créez .claude/settings.json dans votre projet :
{
"hooks": {
"UserPromptSubmit": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/activator.sh"
}]
}]
}
}
Cela injecte un rappel d'évaluation des apprentissages après chaque invite (surcharge d'environ 50 à 100 tokens).
Configuration complète (Avec détection d'erreur)
{
"hooks": {
"UserPromptSubmit": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/activator.sh"
}]
}],
"PostToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/error-detector.sh"
}]
}]
}
}
Scripts de hooks disponibles
| Script | Type de hook | Objectif |
|---|---|---|
scripts/activator.sh | UserPromptSubmit | Rappelle d'évaluer les apprentissages après les tâches |
scripts/error-detector.sh | PostToolUse (Bash) | Se déclenche en cas d'erreur de commande |
Voir references/hooks-setup.md pour la configuration détaillée et le dépannage.
Extraction automatique de compétence
Lorsqu'un apprentissage est suffisamment précieux pour devenir une compétence réutilisable, extrayez-le à l'aide de l'assistant fourni.
Critères d'extraction de compétence
Un apprentissage est éligible à l'extraction lorsque N'IMPORTE LEQUEL de ces critères s'applique :
| Critère | Description |
|---|---|
| Récurrent | A des liens Voir aussi vers 2 problèmes similaires ou plus |
| Vérifié | Le statut est résolu avec un correctif fonctionnel |
| Non évident | A nécessité un vrai débogage/enquête pour être découvert |
| Largement applicable | Non spécifique au projet ; utile dans plusieurs codebases |
| Signalé par l'utilisateur | L'utilisateur dit "enregistrer ceci comme une compétence" ou similaire |
Flux de travail d'extraction
- Identifiez le candidat : L'apprentissage répond aux critères d'extraction
- Exécutez l'assistant (ou créez manuellement) :
./skills/self-improvement/scripts/extract-skill.sh nom-compétence --dry-run ./skills/self-improvement/scripts/extract-skill.sh nom-compétence - Personnalisez SKILL.md : Remplissez le modèle avec le contenu de l'apprentissage
- Mettez à jour l'apprentissage : Définissez le statut sur
promu_vers_compétence, ajoutezChemin-Compétence - Vérifiez : Lisez la compétence dans une nouvelle session pour vous assurer qu'elle est autonome
Extraction manuelle
Si vous préférez l'extraction manuelle, suivez ces étapes :
- Créez un nouveau répertoire de compétence :
mkdir -p skills/nom-compétence - Créez
SKILL.mdavec le contenu distillé de l'apprentissage - Liez des scripts ou ressources supplémentaires si nécessaire
- Mettez à jour l'entrée d'apprentissage originale avec le statut et le chemin appropriés