refactor: installation par git clone, plus de subtree dans le projet hote

This commit is contained in:
2026-03-27 11:28:07 +01:00
parent ba0555f02b
commit 686fa7c064
3 changed files with 28 additions and 83 deletions

View File

@@ -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 ## 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 ```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. Cloner llm-functions
### 2. Ajouter llm-functions comme subtree
```sh ```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 ### 3. Lancer le script d'installation
Choisissez les outils à activer en éditant `.claude/llm-functions/tools.txt`, puis :
```sh ```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
``` ### 4. Adapter CLAUDE.md à votre 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
Éditez `.claude/CLAUDE.md` : mettez à jour la section `## Stack` et les heuristiques de délégation. É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 ## Structure
@@ -203,18 +158,9 @@ printf ".claude/venv/\n.claude/logs/\n.claude/llm-functions/bin/\n.claude/llm-fu
## Mise à jour ## Mise à jour
Utilisez le script inclus depuis la racine de votre projet :
```sh ```sh
bash .claude/update_crazyclaude.sh bash .claude/update_crazyclaude.sh
``` ```
Ou manuellement : 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é.
```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.

View File

@@ -38,10 +38,7 @@ echo ""
echo "=== Mise à jour du .gitignore projet ===" echo "=== Mise à jour du .gitignore projet ==="
GITIGNORE="$PROJECT_DIR/.gitignore" GITIGNORE="$PROJECT_DIR/.gitignore"
entries=( entries=(
".claude/venv/" ".claude/"
".claude/logs/"
".claude/llm-functions/bin/"
".claude/llm-functions/cache/"
) )
for entry in "${entries[@]}"; do for entry in "${entries[@]}"; do
if ! grep -qxF "$entry" "$GITIGNORE" 2>/dev/null; then if ! grep -qxF "$entry" "$GITIGNORE" 2>/dev/null; then

View File

@@ -6,10 +6,8 @@
set -euo pipefail set -euo pipefail
CRAZY_CLAUDE_URL="https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git" CLAUDE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LLM_FUNCTIONS_URL="https://github.com/sigoden/llm-functions.git" LLM_DIR="$CLAUDE_DIR/llm-functions"
CLAUDE_PREFIX=".claude"
LLM_PREFIX=".claude/llm-functions"
dry_run=0 dry_run=0
[[ "${1:-}" == "--dry-run" ]] && dry_run=1 [[ "${1:-}" == "--dry-run" ]] && dry_run=1
@@ -32,15 +30,19 @@ require argc
require jq require jq
echo "=== Mise à jour de .claude (CrazyClaude) ===" 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 ""
echo "=== Mise à jour de .claude/llm-functions ===" 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 ""
echo "=== Reconstruction des outils llm-functions ===" 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 ""
echo "OK — outils reconstruits dans $LLM_PREFIX/bin/" echo "OK — outils reconstruits dans $LLM_DIR/bin/"