skillopt-sleep

Par microsoft · skillopt

À utiliser lorsque l'utilisateur souhaite que Codex s'améliore à partir de ses usages passés, demande un cycle nocturne/hors-ligne de type « sleep » ou « dream », veut que Codex passe en revue des sessions précédentes, apprenne ses préférences, consolide sa mémoire/ses compétences, exécute dry-run/run/adopt/status pour SkillOpt-Sleep, ou planifie une auto-optimisation hors-ligne. Pilote le moteur skillopt_sleep : collecte des sessions passées -> extraction des tâches récurrentes -> rejeu hors-ligne -> consolidation de la mémoire et des compétences validées derrière une gate de contrôle.

npx skills add https://github.com/microsoft/skillopt --skill skillopt-sleep

SkillOpt-Sleep : auto-évolution hors ligne pour un agent Codex local

SkillOpt-Sleep donne à l'agent Codex de l'utilisateur un cycle de sommeil. Pendant que l'utilisateur est hors ligne ou sur demande, il examine les sessions locales passées, réexécute les tâches récurrentes avec le budget de l'utilisateur, et consolide ce qu'il apprend dans la mémoire et les compétences. Il ne garde que les modifications qui passent une barrière de validation réservée, et les fichiers en direct changent uniquement après que l'utilisateur ait explicitement adopté une proposition par étapes. Il n'y a pas d'entraînement de poids de modèle.

Quand l'utiliser

Déclencher quand l'utilisateur veut l'une des actions suivantes :

  • Codex apprendre des sessions passées ou s'améliorer au fur et à mesure de son utilisation;
  • une exécution de sommeil/rêve/auto-amélioration hors ligne programmée ou sur demande;
  • examiner les sessions passées et distiller les tâches récurrentes;
  • consolider les retours dans la mémoire ou les compétences gérées;
  • exécuter status, harvest, dry-run, run, ou adopt pour SkillOpt-Sleep.

Le cycle

  1. Harvest - lire les transcriptions locales de sessions selon la configuration du moteur et les normaliser en synthèses de session.
  2. Mine - transformer les synthèses en TaskRecords récurrents avec résultats et références vérifiables si possible.
  3. Replay - réexécuter les tâches extraites hors ligne avec la compétence et la mémoire actuelles.
  4. Consolidate - réfléchir aux échecs et proposer des éditions limitées.
  5. Gate - accepter les éditions uniquement quand le score de validation réservé s'améliore.
  6. Stage - écrire la proposition sous <project>/.skillopt-sleep/staging/<date>/; aucun fichier en direct ne change.
  7. Adopt - uniquement après approbation explicite de l'utilisateur, copier les fichiers par étapes sur les fichiers en direct avec sauvegardes.

Comment le piloter

Invoquer le runner fourni via shell (Codex exec a accès au shell). Le runner trouve automatiquement le moteur et Python >= 3.10.

# pointer vers le repo s'il n'est pas auto-détecté depuis CWD :
export SKILLOPT_SLEEP_REPO=/path/to/SkillOpt-Sleep
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" status --project "$(pwd)"
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" harvest --project "$(pwd)"
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" dry-run --project "$(pwd)" --backend mock
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" run --project "$(pwd)" --backend codex
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" run --project "$(pwd)" --source codex  # harvest from Codex Desktop
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" adopt --project "$(pwd)"

Les actions sont status, harvest, dry-run, run, adopt, schedule, et unschedule.

  • Le backend par défaut est mock, qui est déterministe et ne dépense aucun budget API.
  • --backend codex utilise le budget Codex de l'utilisateur pour une véritable amélioration.
  • --source codex lit les sessions archivées de Codex Desktop depuis ~/.codex/archived_sessions; utiliser --codex-home /path/to/.codex si l'archive se trouve ailleurs.
  • Garder dry-run --backend mock comme premier test de fumée sauf si l'utilisateur a explicitement demandé une exécution d'optimisation réelle.

Programmation

bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
bash "$SKILLOPT_SLEEP_REPO/plugins/run-sleep.sh" unschedule --project "$(pwd)"

Installe une entrée cron nocturne. unschedule --all supprime chaque entrée gérée.

Tous les backends

  • --backend mock — déterministe, aucune dépense API (défaut)
  • --backend claude — utilise le CLI Claude
  • --backend codex — utilise le CLI Codex
  • --backend copilot — utilise le CLI GitHub Copilot

Drapeaux supplémentaires

Drapeau Description
--auto-adopt Adopter automatiquement si la barrière passe (défaut : étapes uniquement)
--edit-budget N Max éditions limitées par nuit (défaut : 4)
--lookback-hours N Fenêtre de moisson en heures (défaut : 72)
--json Sortie JSON lisible par machine

Clés de configuration (~/.skillopt-sleep/config.json)

  • preferences — règles libres pour l'optimiseur
  • gate_modeon (validation-gated, défaut) ou off (greedy)
  • gate_metrichard | soft | mixed (défaut)
  • dream_rollouts — >1 pour réflexion contrastive multi-rollout
  • recall_k — >0 rappelle des tâches similaires passées de l'archive

Consolidation de la mémoire

Le cycle de sommeil consolide à la fois la mémoire (AGENTS.md / CLAUDE.md) et les compétences (SKILL.md) par défaut. Chacune est indépendamment basculable via les clés de configuration evolve_memory / evolve_skill. Les deux sont bridées par le même score de validation réservé.

Étapes

  1. Exécuter l'action demandée; capturer stdout.
  2. Pour dry-run et run, rapporter la baseline de validation tenue -> score candidat, action de barrière, nombre de tâches, nombre de sessions, et éditions proposées exactes.
  3. Si un répertoire de staging est imprimé, lire report.md avant de résumer.
  4. run ne stage qu'une proposition; aucun fichier en direct ne change jusqu'à adopt.
  5. Offrir l'adoption uniquement après que l'utilisateur a examiné la proposition par étapes.
  6. Ne jamais éditer manuellement AGENTS.md, la mémoire ou les compétences de l'utilisateur comme substitut à adopt; l'adoption est la limite de sécurité et écrit les sauvegardes d'abord.

Règles strictes

  • Harvest est en lecture seule. Ne pas éditer les sessions archivées ou les transcriptions brutes.
  • Garder les secrets bruts, les identifiants, les données privées de l'utilisateur, et les contenus de transcription non assainis hors des messages, journaux, artefacts générés, et commits.
  • Montrer la preuve de validation avant de recommander l'adoption.
  • Traiter les éditions générées comme des propositions, non comme source de vérité.
  • Ne pas s'appuyer sur les invites personnalisées dépréciées ou les commandes slash /sleep pour cette intégration Codex. Cette compétence est le point d'entrée.

Valider

python -m skillopt_sleep dry-run --project "$(pwd)" --backend mock --json
python -m skillopt_sleep.experiments.run_gbrain --backend codex \
  --seeds brief-writer --data-root /path/to/gbrain-evals/eval/data/skillopt-v1 \
  --nights 2 --limit-replay 3 --limit-holdout 3

Une compétence insuffisante passe de 0.00 à 1.00 sur un ensemble réservé; les éditions de l'optimiseur sont bridées sur la performance réelle des tâches.

Skills similaires