From 686fa7c064ab43048e22bac102bc5289f71eb14b Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Fri, 27 Mar 2026 11:28:07 +0100 Subject: [PATCH] refactor: installation par git clone, plus de subtree dans le projet hote --- README.md | 88 +++++++++---------------------------------- install.sh | 5 +-- update_crazyclaude.sh | 18 +++++---- 3 files changed, 28 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index 43eddda..bdcf384 100644 --- a/README.md +++ b/README.md @@ -40,83 +40,38 @@ Le serveur MCP lance aichat au démarrage sur un port libre. Qwen3 dispose d'out ## Installation dans un projet existant -### 1. Ajouter CrazyClaude comme subtree +`.claude/` n'est pas commité dans le projet hôte — il est installé localement comme un venv. +Chaque développeur lance `install.sh` une fois. -Depuis la racine de votre projet (jj colocalisé git) : +### 1. Cloner CrazyClaude ```sh -git subtree add --prefix .claude https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git main --squash +git clone https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git .claude ``` -Le contenu du repo s'installe directement dans `.claude/` — agents, hooks, mcp, etc. - -### 2. Ajouter llm-functions comme subtree +### 2. Cloner llm-functions ```sh -git subtree add --prefix .claude/llm-functions https://github.com/sigoden/llm-functions.git main --squash +git clone https://github.com/sigoden/llm-functions.git .claude/llm-functions ``` -### 3. Construire les outils llm-functions - -Choisissez les outils à activer en éditant `.claude/llm-functions/tools.txt`, puis : +### 3. Lancer le script d'installation ```sh -cd .claude/llm-functions && argc build +bash .claude/install.sh ``` -Les outils activés par défaut : +Le script : +- crée le virtualenv Python +- construit les outils llm-functions +- rend les hooks exécutables +- enregistre le serveur MCP dans Claude Code +- ajoute `.claude/` au `.gitignore` du projet -``` -fs_cat.sh -fs_ls.sh -fs_mkdir.sh -fs_write.sh -fs_patch.sh -execute_command.sh -fetch_url_via_curl.sh -web_search_aichat.sh -execute_py_code.py -``` - -### 4. Créer le virtualenv Python - -```sh -cd .claude -python3 -m venv venv -venv/bin/pip install -r mcp/qwen3-mcp/requirements.txt -``` - -### 5. Configurer aichat - -Vérifiez que aichat peut accéder à LM Studio et que le modèle `qwen/qwen3-coder-next` est disponible : - -```sh -aichat --list-models | grep qwen -``` - -### 6. Enregistrer le serveur MCP - -```sh -claude mcp add --transport stdio qwen3 -- .claude/venv/bin/python3 .claude/mcp/qwen3-mcp/server.py -``` - -Vérifier : - -```sh -claude mcp list -# qwen3: ... - ✓ Connected -``` - -### 7. Adapter CLAUDE.md à votre projet +### 4. Adapter CLAUDE.md à votre projet Éditez `.claude/CLAUDE.md` : mettez à jour la section `## Stack` et les heuristiques de délégation. -### 8. Rendre les hooks exécutables - -```sh -chmod +x .claude/hooks/*.sh -``` - --- ## Structure @@ -203,18 +158,9 @@ printf ".claude/venv/\n.claude/logs/\n.claude/llm-functions/bin/\n.claude/llm-fu ## Mise à jour -Utilisez le script inclus depuis la racine de votre projet : - ```sh bash .claude/update_crazyclaude.sh ``` -Ou manuellement : - -```sh -git subtree pull --prefix .claude https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git main --squash -git subtree pull --prefix .claude/llm-functions https://github.com/sigoden/llm-functions.git main --squash -cd .claude/llm-functions && argc build -``` - -jj voit chaque commit résultant comme un commit ordinaire dans son graphe. +Le script fait `git pull` sur `.claude/` et `.claude/llm-functions/` puis reconstruit les outils. +L'historique du projet hôte n'est pas affecté. diff --git a/install.sh b/install.sh index b34e28d..769d912 100755 --- a/install.sh +++ b/install.sh @@ -38,10 +38,7 @@ echo "" echo "=== Mise à jour du .gitignore projet ===" GITIGNORE="$PROJECT_DIR/.gitignore" entries=( - ".claude/venv/" - ".claude/logs/" - ".claude/llm-functions/bin/" - ".claude/llm-functions/cache/" + ".claude/" ) for entry in "${entries[@]}"; do if ! grep -qxF "$entry" "$GITIGNORE" 2>/dev/null; then diff --git a/update_crazyclaude.sh b/update_crazyclaude.sh index 698518f..768b13d 100755 --- a/update_crazyclaude.sh +++ b/update_crazyclaude.sh @@ -6,10 +6,8 @@ set -euo pipefail -CRAZY_CLAUDE_URL="https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git" -LLM_FUNCTIONS_URL="https://github.com/sigoden/llm-functions.git" -CLAUDE_PREFIX=".claude" -LLM_PREFIX=".claude/llm-functions" +CLAUDE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +LLM_DIR="$CLAUDE_DIR/llm-functions" dry_run=0 [[ "${1:-}" == "--dry-run" ]] && dry_run=1 @@ -32,15 +30,19 @@ require argc require jq echo "=== Mise à jour de .claude (CrazyClaude) ===" -run git subtree pull --prefix "$CLAUDE_PREFIX" "$CRAZY_CLAUDE_URL" main --squash +run git -C "$CLAUDE_DIR" pull --ff-only echo "" echo "=== Mise à jour de .claude/llm-functions ===" -run git subtree pull --prefix "$LLM_PREFIX" "$LLM_FUNCTIONS_URL" main --squash +run git -C "$LLM_DIR" pull --ff-only echo "" echo "=== Reconstruction des outils llm-functions ===" -run argc build --arcgfile "$LLM_PREFIX/Argcfile.sh" +if [[ "$dry_run" -eq 1 ]]; then + echo "[dry-run] argc build (dans $LLM_DIR)" +else + (cd "$LLM_DIR" && argc build) +fi echo "" -echo "OK — outils reconstruits dans $LLM_PREFIX/bin/" +echo "OK — outils reconstruits dans $LLM_DIR/bin/"