2026-03-26 12:23:54 +01:00
# CrazyClaude
2026-03-27 09:13:47 +01:00
Configuration Claude Code pour orchestrer des tâches de développement en déléguant les tâches atomiques à **Qwen3-Coder ** via [aichat ](https://github.com/sigoden/aichat ).
2026-03-26 12:23:54 +01:00
2026-03-27 09:13:47 +01:00
Ce dépôt est conçu pour être intégré comme sous-répertoire `.claude/` dans n'importe quel projet. Il fournit agents, hooks, skills, un serveur MCP et une collection d'outils prêts à l'emploi.
2026-03-26 12:23:54 +01:00
Pour le détail de l'architecture, voir [`rapport-orchestration-claude-code.md` ](./rapport-orchestration-claude-code.md ).
---
2026-03-27 09:13:47 +01:00
## Architecture
```
Claude Code (orchestrateur)
│
└── MCP qwen3 (stdio)
│
└── aichat --serve (port dynamique)
│
└── LM Studio → Qwen3-Coder-Next
+ outils llm-functions
(fs, shell, web, ...)
```
Le serveur MCP lance aichat au démarrage sur un port libre. Qwen3 dispose d'outils filesystem, shell et web fournis par [llm-functions ](https://github.com/sigoden/llm-functions ) — sans aucune logique d'outil dans le serveur lui-même.
---
2026-03-26 12:23:54 +01:00
## Prérequis
2026-03-27 09:13:47 +01:00
- [Claude Code ](https://claude.ai/code ) (`claude` dans le PATH)
- [aichat ](https://github.com/sigoden/aichat ) (`aichat` dans le PATH)
- [LM Studio ](https://lmstudio.ai/ ) avec le modèle `qwen/qwen3-coder-next` chargé et accessible depuis aichat
- [argc ](https://github.com/sigoden/argc ) — runner de scripts pour llm-functions
- [jq ](https://jqlang.github.io/jq/ ) — requis par llm-functions
2026-03-26 12:23:54 +01:00
- Python 3.11+ (pour le serveur MCP)
- Outils selon votre stack : `cargo` + `clippy` (Rust), `golangci-lint` (Go)
---
## Installation dans un projet existant
2026-03-27 11:28:07 +01:00
`.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.
2026-03-26 12:23:54 +01:00
2026-03-27 11:28:07 +01:00
### 1. Cloner CrazyClaude
2026-03-26 12:23:54 +01:00
```sh
2026-03-27 11:28:07 +01:00
git clone https://gargoton.petite-maison-orange.fr/eric/CrazyClaude.git .claude
2026-03-26 12:23:54 +01:00
```
2026-03-27 11:40:00 +01:00
### 2. Lancer le script d'installation
2026-03-27 10:24:55 +01:00
```sh
2026-03-27 11:28:07 +01:00
bash .claude/install.sh
2026-03-27 10:24:55 +01:00
```
2026-03-27 11:40:00 +01:00
Le script clone automatiquement `llm-functions` si absent.
2026-03-27 11:28:07 +01:00
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
2026-03-27 09:13:47 +01:00
2026-03-27 11:28:07 +01:00
### 4. Adapter CLAUDE.md à votre projet
2026-03-26 12:23:54 +01:00
2026-03-27 09:13:47 +01:00
Éditez `.claude/CLAUDE.md` : mettez à jour la section `## Stack` et les heuristiques de délégation.
2026-03-26 12:23:54 +01:00
---
## Structure
```
.claude/
├── CLAUDE.md # contexte projet + heuristiques de délégation
├── settings.json # hooks et permissions
├── agents/
2026-03-27 09:13:47 +01:00
│ ├── qwen3-worker.md # délégation vers Qwen3 via MCP
2026-03-26 12:23:54 +01:00
│ ├── code-reviewer.md # révision code (Claude Haiku)
│ └── task-planner.md # planification complexe (Claude Opus)
├── skills/
│ ├── delegation-rules.md # quand déléguer à Qwen3
│ └── rust-go-conventions.md # conventions Rust/Go
├── hooks/
│ ├── post-write-lint.sh # lint automatique après écriture
│ ├── subagent-stop-log.sh # log des décisions de délégation
│ └── pre-bash-guard.sh # blocage des commandes dangereuses
├── mcp/
│ └── qwen3-mcp/
2026-03-27 09:13:47 +01:00
│ ├── server.py # serveur MCP stdio : lance aichat + gère tool_calls
│ ├── agent_lm.py # agent loop CLI autonome (usage direct sans MCP)
2026-03-26 12:23:54 +01:00
│ └── requirements.txt
2026-03-27 09:13:47 +01:00
├── llm-functions/ # collection d'outils pour Qwen3 (sous-repo)
│ ├── tools.txt # outils activés
│ ├── functions.json # déclarations générées (lues par server.py)
│ ├── bin/ # binaires générés par argc build
│ └── tools/ # scripts sources (.sh, .py, .js)
2026-03-26 12:23:54 +01:00
├── logs/ # produits par les hooks (ignorés par jj/git)
└── venv/ # virtualenv Python (ignoré par jj/git)
```
---
2026-03-27 09:13:47 +01:00
## Outils disponibles pour Qwen3
Les outils sont définis dans `.claude/llm-functions/tools.txt` et buildés avec `argc build` .
| Outil | Description |
|-------|-------------|
| `fs_cat` | Lit un fichier |
| `fs_ls` | Liste un répertoire |
| `fs_mkdir` | Crée un répertoire |
| `fs_write` | Écrit/crée un fichier |
| `fs_patch` | Modifie un fichier par patch |
| `execute_command` | Exécute une commande shell |
| `fetch_url_via_curl` | Requête HTTP GET |
| `web_search_aichat` | Recherche web |
| `execute_py_code` | Exécute du code Python |
2026-03-26 12:23:54 +01:00
2026-03-27 09:13:47 +01:00
Pour ajouter un outil : éditez `tools.txt` et relancez `argc build` .
---
2026-03-26 12:23:54 +01:00
2026-03-27 09:13:47 +01:00
## Configuration du modèle
Le modèle Qwen3 est configuré dans `.claude/mcp/qwen3-mcp/server.py` :
2026-03-26 12:23:54 +01:00
```python
2026-03-27 09:13:47 +01:00
QWEN3_MODEL = "LMStudio:qwen/qwen3-coder-next"
2026-03-26 12:23:54 +01:00
```
2026-03-27 09:13:47 +01:00
Le format `Provider:model-id` suit la convention aichat. Adaptez selon votre installation LM Studio.
2026-03-26 12:23:54 +01:00
---
## Fichiers à ignorer (jj / git)
```
.claude/venv/
.claude/logs/
2026-03-27 09:13:47 +01:00
.claude/llm-functions/bin/
.claude/llm-functions/cache/
2026-03-26 12:23:54 +01:00
```
Avec Jujutsu :
```sh
2026-03-27 09:13:47 +01:00
printf ".claude/venv/\n.claude/logs/\n.claude/llm-functions/bin/\n.claude/llm-functions/cache/\n" >> .gitignore
2026-03-26 12:23:54 +01:00
```
---
## Mise à jour
```sh
2026-03-27 10:24:55 +01:00
bash .claude/update_crazyclaude.sh
2026-03-26 12:23:54 +01:00
```
2026-03-27 11:28:07 +01:00
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é.