## Corrections P2 — Code quality - node-engine-runner.js: structuredClone + graph.edges validation - http-api.js: input validation from-source + extension/mime check uploads - chat-routing.js: regex compilées au module scope (perf) - Chat.tsx: React.memo ChatMessage + validation couleurs persona - sessions.js: saveAllSessions debounce 2s - ollama.js: model token limits lookup (mistral/llama/qwen/phi/gemma) - storage.js: warning session messages > 90% du max ## Autoresearch avancé - Extraction score métier depuis artefacts d'évaluation (6 métriques) - Score artefact prioritaire, fallback status-based - TSV étendu avec colonne artifact_score - Documentation mise à jour Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.6 KiB
Autoresearch Mode V2
Ce document decrit une integration minimale de la logique autoresearch dans KXKM_Clown V2.
Objectif
Automatiser des cycles d'experiences Node Engine avec un budget fixe par run, puis appliquer une decision keep/discard basee sur une politique de score deterministe.
Le mode actuel automatise l'orchestration des runs et leur selection. Il ne modifie pas le code des nodes.
Ce qui est implemente
- script: scripts/v2-autoresearch-loop.js
- config exemple: ops/v2/autoresearch.example.json
- sortie TSV append-only: data/node-engine/autoresearch/results.tsv
Boucle executee:
- creer un run queued sur un graph existant
- attendre un statut terminal
- calculer un score
- marquer keep/discard par rapport au meilleur score courant
- journaliser la ligne dans results.tsv
Prerequis
- Postgres accessible via DATABASE_URL
- migrations V2 executees (tables node_graphs et node_runs)
- worker V2 actif (npm run dev:v2:worker) pour consommer la queue
- un graph existant dans node_graphs
Utilisation
- definir graphId dans ops/v2/autoresearch.example.json
- lancer:
npm run v2:autoresearch
Execution unique:
node scripts/v2-autoresearch-loop.js --config ops/v2/autoresearch.example.json --once
Politique de score
Le score par defaut est derive du statut terminal, avec bonus de vitesse pour les runs completes:
- completed: 1 + bonus
- failed: 0
- cancelled, blocked, not_configured: -1
La table statusScores du JSON permet d'ajuster le comportement sans changer le script.
Score metier via artefacts
Le script extrait automatiquement les scores depuis les artefacts d'evaluation du run. Les metriques supportees (par ordre de priorite) :
score— score generique (0-1)eval_score— score d'evaluationaccuracy— precisionf1— F1 scorebleu— score BLEU (traduction/generation)perplexity— perplexite (inversee: 1/(1+p), plus bas = mieux)
Pour qu'un run produise un score metier, le graph doit inclure un node benchmark ou prompt_test qui ecrit un artefact de type evaluation avec une de ces metriques dans le champ data.
Si aucun artefact d'evaluation n'est trouve, le fallback est le score base sur le statut terminal.
Limites actuelles
- keep/discard est une decision de session, pas encore un alias model registry
- pas de mutation automatique des graphes ou hyperparametres
Etapes suivantes
- Brancher keep/discard comme alias dans le model registry (register_model node)
- Ajouter mutation automatique des hyperparametres entre experiments
- Integrer les metriques cout tokens et latence p95