Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
PMOCrazyCoder
Environnement de développement conteneurisé avec assistance IA intégrée — Go, Rust, Python, TypeScript, R, Ruby — et outillage IA local (LM Studio) ou cloud (Claude Pro).
Vision
Un container de développement complet, multi-langages, avec LSP, outils IA et MCP intégrés, utilisable depuis Zed, VS Code ou Cursor, avec persistance par projet.
Ce que contient l'image
Langages et compilateurs
- Go (dernière version stable via script)
- Rust (stable + nightly, avec rustfmt, clippy, rust-analyzer, rust-src)
- Python 3 (avec ruff, fastmcp, ipython, tasklin)
- Node.js / npm (avec TypeScript, ESLint, Prettier, Pyright, typescript-language-server)
- Ruby (avec github-linguist)
- R
- Clang / LLVM (clangd inclus)
Outils de développement
jj(Jujutsu VCS) +jj-lspgopls,mcp-language-servercargo-edit,cargo-watch,cargo-outdated,cargo-make,cargo-binstallsqlite3,cmake,make,gitaichat(client LLM CLI)
Assistants IA
- Claude Code (installé au
postCreateCommand) - opencode (configuré via l'entrypoint)
- aichat (configuré via l'entrypoint, connecté au LLM local)
Utilisation rapide
Ajouter l'environnement à un projet existant
curl -fsSL https://gargoton.petite-maison-orange.fr/eric/PMOCrazycoder/raw/branch/main/setup-devcontainer.sh | bash
Ou avec un endpoint LLM personnalisé :
LOCAL_LLM_API=http://monserveur:1248/v1 bash setup-devcontainer.sh
Le script télécharge les fichiers devcontainer.json et docker-compose.yml directement depuis le dépôt Gitea, crée les répertoires de persistance dans .devcontainer/config/ et met à jour .gitignore.
Ouvrir dans le container
Ouvrir le projet dans VS Code, Zed ou Cursor et choisir "Reopen in Container". L'image est tirée automatiquement depuis le registry.
Authentifier Claude Code
Dans le panneau Claude Agent de Zed, lancer /login et choisir "Log in with Claude.ai" (abonnement Pro/Max).
Persistance par projet
Toutes les données et caches sont persistés dans .devcontainer/config/ (ignoré par git) :
| Répertoire | Contenu |
|---|---|
config/claude/ |
Sessions et config Claude Code |
config/opencode/ |
Config opencode |
config/aichat/ |
Config aichat |
config/ai_index/ |
Index de code du projet |
config/cargo-registry/ |
Cache crates.io |
config/cargo-git/ |
Cache dépendances git Cargo |
config/cargo-bin/ |
Binaires Rust installés pour le projet |
config/go-cache/ |
Cache modules Go |
config/go-bin/ |
Binaires Go installés pour le projet |
config/python-local/ |
Paquets pip user + gems Ruby |
config/npm-cache/ |
Cache npm |
config/r-libs/ |
Paquets R installés |
Installer des binaires persistants
# Rust — persiste dans .devcontainer/config/cargo-bin/
cargo install cargo-nextest
# Go — persiste dans .devcontainer/config/go-bin/
GOBIN=~/go/bin go install github.com/some/tool@latest
# Python — persiste dans .devcontainer/config/python-local/
pip install --user monpaquet
# R — persiste dans .devcontainer/config/r-libs/
R -e 'install.packages("tidyverse")'
LLM local
L'entrypoint configure automatiquement opencode et aichat pour pointer sur LOCAL_LLM_API
(défaut : http://host.docker.internal:1248/v1).
Variables d'environnement disponibles dans le container :
| Variable | Défaut | Description |
|---|---|---|
LOCAL_LLM_API |
http://host.docker.internal:1248/v1 |
Endpoint OpenAI-compatible |
LLM_MODEL |
ollama:qwen/qwen3-coder-next@4bit |
Modèle à utiliser |
TEMPERATURE |
0.5 |
Température |
NUM_CTX |
32768 |
Taille de contexte |
MAXTOKEN |
4096 |
Tokens max en sortie |
Construire et publier l'image
# Build natif (local)
make build
# Build multi-arch (amd64 + arm64) + push vers le registry
make all
# Push uniquement (si l'archive OCI existe déjà)
make push
# Lister toutes les targets
make help
L'image est publiée sur niepce.petite-maison-orange.fr/public/pmocrazycoder:latest.
Le push utilise skopeo — assurez-vous d'être authentifié sur le registry.
Sources
- Dépôt git :
https://gargoton.petite-maison-orange.fr/eric/PMOCrazycoder - Registry OCI :
niepce.petite-maison-orange.fr/public/pmocrazycoder:latest
Licence
CECILL-2.1