Améliorations robustesse MCP et script de mise à jour
- 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
This commit is contained in:
@@ -54,6 +54,15 @@ Traite toi-même **uniquement si** :
|
|||||||
|
|
||||||
En cas de doute : délègue.
|
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
|
## Garde-fous absolus
|
||||||
- Ne jamais passer `rm -rf` sans confirmation explicite
|
- Ne jamais passer `rm -rf` sans confirmation explicite
|
||||||
- Ne jamais committer sans que les tests passent
|
- Ne jamais committer sans que les tests passent
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from pathlib import Path
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
QWEN3_MODEL = "LMStudio:qwen/qwen3-coder-next"
|
QWEN3_MODEL = "LMStudio:qwen/qwen3-coder-next"
|
||||||
MAX_TOOL_ITERATIONS = 10
|
MAX_TOOL_ITERATIONS = 20
|
||||||
|
|
||||||
# Répertoire llm-functions relatif à ce script
|
# Répertoire llm-functions relatif à ce script
|
||||||
_HERE = Path(__file__).parent
|
_HERE = Path(__file__).parent
|
||||||
@@ -192,7 +192,7 @@ def call_qwen3(task: str, files: list[str]) -> str:
|
|||||||
resp = requests.post(
|
resp = requests.post(
|
||||||
f"{_aichat_url}/v1/chat/completions",
|
f"{_aichat_url}/v1/chat/completions",
|
||||||
json=payload,
|
json=payload,
|
||||||
timeout=120,
|
timeout=300,
|
||||||
)
|
)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
data = resp.json()
|
data = resp.json()
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ if [[ "$(basename "$CLAUDE_DIR")" != ".claude" ]]; then
|
|||||||
rsync -a --exclude='.git' --exclude='llm-functions' --exclude='venv' \
|
rsync -a --exclude='.git' --exclude='llm-functions' --exclude='venv' \
|
||||||
"$CLAUDE_DIR/" "$TARGET/"
|
"$CLAUDE_DIR/" "$TARGET/"
|
||||||
echo "==> Rebuild des outils"
|
echo "==> Rebuild des outils"
|
||||||
exec bash "$TARGET/update_crazyclaude.sh" "${@:2}"
|
exec env CRAZYCLAUDE_BOOTSTRAP=1 bash "$TARGET/update_crazyclaude.sh" "${@:2}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# On est maintenant dans .claude/, on peut continuer normalement
|
# On est maintenant dans .claude/, on peut continuer normalement
|
||||||
@@ -43,12 +43,16 @@ require git
|
|||||||
require argc
|
require argc
|
||||||
require jq
|
require jq
|
||||||
|
|
||||||
echo "=== Mise à jour de .claude (CrazyClaude) ==="
|
if [[ "${CRAZYCLAUDE_BOOTSTRAP:-0}" == "1" ]]; then
|
||||||
run git -C "$CLAUDE_DIR" pull --ff-only
|
echo "=== Mode bootstrap — git pull ignoré ==="
|
||||||
|
else
|
||||||
|
echo "=== Mise à jour de .claude (CrazyClaude) ==="
|
||||||
|
run git -C "$CLAUDE_DIR" pull --ff-only
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Mise à jour de .claude/llm-functions ==="
|
echo "=== Mise à jour de .claude/llm-functions ==="
|
||||||
run git -C "$LLM_DIR" pull --ff-only
|
run git -C "$LLM_DIR" pull --ff-only
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Reconstruction des outils llm-functions ==="
|
echo "=== Reconstruction des outils llm-functions ==="
|
||||||
|
|||||||
Reference in New Issue
Block a user