From c7773a36924ee8486f3f04acdd5f1b480a1841d3 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sun, 29 Mar 2026 20:34:29 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9liorations=20robustesse=20MCP=20et=20sc?= =?UTF-8?q?ript=20de=20mise=20=C3=A0=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Augmente MAX_TOOL_ITERATIONS à 20 et timeout HTTP à 300s pour tolérer les erreurs/temps d'attente - Ajoute des directives de gestion d'erreurs dans CLAUDE.md pour les appels MCP - Introduit un mode bootstrap (`CRAZYCLAUDE_BOOTSTRAP=1`) pour éviter les git pull en boucle - Découpe les tâches longues et préconise des corrections ciblées pour les artefacts mineurs --- CLAUDE.md | 9 +++++++++ mcp/qwen3-mcp/server.py | 4 ++-- update_crazyclaude.sh | 16 ++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index c77364d..3d925de 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,6 +54,15 @@ Traite toi-même **uniquement si** : En cas de doute : délègue. +Si `mcp__qwen3__task` retourne une erreur ou timeout : +1. Lire les fichiers concernés — vérifier si le travail a quand même été effectué. +2. Ne reprendre soi-même que si le fichier est absent ou manifestement incorrect. +3. Ne jamais supposer l'échec sans vérification. +4. Les artefacts mineurs (ligne parasite, commentaire résiduel) se corrigent avec + un second appel ciblé — pas besoin de tout réécrire. + +Pour les tâches longues : découper en plusieurs appels successifs plutôt qu'un seul gros appel. + ## Garde-fous absolus - Ne jamais passer `rm -rf` sans confirmation explicite - Ne jamais committer sans que les tests passent diff --git a/mcp/qwen3-mcp/server.py b/mcp/qwen3-mcp/server.py index 75d3423..b289cc0 100644 --- a/mcp/qwen3-mcp/server.py +++ b/mcp/qwen3-mcp/server.py @@ -19,7 +19,7 @@ from pathlib import Path import requests QWEN3_MODEL = "LMStudio:qwen/qwen3-coder-next" -MAX_TOOL_ITERATIONS = 10 +MAX_TOOL_ITERATIONS = 20 # Répertoire llm-functions relatif à ce script _HERE = Path(__file__).parent @@ -192,7 +192,7 @@ def call_qwen3(task: str, files: list[str]) -> str: resp = requests.post( f"{_aichat_url}/v1/chat/completions", json=payload, - timeout=120, + timeout=300, ) resp.raise_for_status() data = resp.json() diff --git a/update_crazyclaude.sh b/update_crazyclaude.sh index 4e31e39..6558a67 100755 --- a/update_crazyclaude.sh +++ b/update_crazyclaude.sh @@ -17,7 +17,7 @@ if [[ "$(basename "$CLAUDE_DIR")" != ".claude" ]]; then rsync -a --exclude='.git' --exclude='llm-functions' --exclude='venv' \ "$CLAUDE_DIR/" "$TARGET/" echo "==> Rebuild des outils" - exec bash "$TARGET/update_crazyclaude.sh" "${@:2}" + exec env CRAZYCLAUDE_BOOTSTRAP=1 bash "$TARGET/update_crazyclaude.sh" "${@:2}" fi # On est maintenant dans .claude/, on peut continuer normalement @@ -43,12 +43,16 @@ require git require argc require jq -echo "=== Mise à jour de .claude (CrazyClaude) ===" -run git -C "$CLAUDE_DIR" pull --ff-only +if [[ "${CRAZYCLAUDE_BOOTSTRAP:-0}" == "1" ]]; then + echo "=== Mode bootstrap — git pull ignoré ===" +else + echo "=== Mise à jour de .claude (CrazyClaude) ===" + run git -C "$CLAUDE_DIR" pull --ff-only -echo "" -echo "=== Mise à jour de .claude/llm-functions ===" -run git -C "$LLM_DIR" pull --ff-only + echo "" + echo "=== Mise à jour de .claude/llm-functions ===" + run git -C "$LLM_DIR" pull --ff-only +fi echo "" echo "=== Reconstruction des outils llm-functions ===" -- 2.49.1