Plan réservé aux nouvelles constructions, pas aux corrections

Un plan « from scratch » (architecture, création des fichiers…) était
régénéré à CHAQUE tâche de code, y compris pour corriger un bug sur une
appli existante — hors-sujet et perturbant (« je n'arrive pas à déplacer
les pièces » → plan de re-création complète).

- want_plan ne se déclenche plus que pour une NOUVELLE construction :
  pas de code antérieur dans la session ET workspace vide. Une
  modification / correction / suite de travail n'affiche plus de plan.
- Plan de code : l'étape ARCHITECTURE privilégie un seul fichier
  autonome (cohérent avec les contraintes appli web), au lieu de
  proposer index.html + style.css + app.js.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
This commit is contained in:
Claude committed 2026-07-21 10:00:22 +00:00
1 parent 920f575507
commit e7797b1b09
2 files changed
+10 -3

No files matched your search

+3 -2
View File
@@ -26,8 +26,9 @@ _PLAN_CODE_PROMPT = (
"Tu es architecte logiciel. Établis un plan d'IMPLÉMENTATION concret pour " "Tu es architecte logiciel. Établis un plan d'IMPLÉMENTATION concret pour "
"cette application, en 3 à 5 étapes courtes (une par ligne, numérotées " "cette application, en 3 à 5 étapes courtes (une par ligne, numérotées "
"« 1. », « 2. »…).\n" "« 1. », « 2. »…).\n"
"- Étape 1 = ARCHITECTURE : quels fichiers créer et leur rôle (ex. un seul " "- Étape 1 = ARCHITECTURE : privilégie UN SEUL fichier autonome (ex. "
"index.html avec HTML+CSS+JS, ou séparer index.html / style.css / app.js).\n" "index.html avec le CSS et le JS intégrés, sans dépendance externe) ; ne "
"sépare en plusieurs fichiers que si c'est vraiment indispensable.\n"
"- Étapes suivantes = construire UNE fonctionnalité concrète et testable à " "- Étapes suivantes = construire UNE fonctionnalité concrète et testable à "
"la fois (structure/affichage, puis interactions, puis logique).\n" "la fois (structure/affichage, puis interactions, puis logique).\n"
"Reste RÉALISTE et réalisable en une passe : pas de dépendance externe, pas " "Reste RÉALISTE et réalisable en une passe : pas de dépendance externe, pas "
+7 -1
View File
@@ -335,8 +335,14 @@ async def chat(req: ChatRequest) -> StreamingResponse:
# RAG, plan et choix du modèle code partent ensemble au lieu de # RAG, plan et choix du modèle code partent ensemble au lieu de
# s'enchaîner en bloquant le premier token. # s'enchaîner en bloquant le premier token.
want_rag = cfg.get("rag_enabled", False) want_rag = cfg.get("rag_enabled", False)
# Un plan « from scratch » n'a de sens que pour une NOUVELLE construction.
# Pour une correction ou la suite d'un travail (l'appli existe déjà,
# session code en cours, formulation de suivi), il est hors-sujet et
# perturbe : on ne replanifie pas l'architecture à chaque message.
is_modification = prev_code or bool(_workspace_listing())
new_build = use_code and not is_modification
want_plan = cfg.get("plan_mode", True) and ( want_plan = cfg.get("plan_mode", True) and (
use_code or enhance.needs_plan(req.content) new_build or (not use_code and enhance.needs_plan(req.content))
) )
if want_rag or want_plan or use_code: if want_rag or want_plan or use_code:
yield _sse("status", {"message": "Préparation du contexte…"}) yield _sse("status", {"message": "Préparation du contexte…"})