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
### 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é.

View File

@@ -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

View File

@@ -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/"