Configurer un MacBook pour l’ingénierie AI : outils et workflow macOS
Traduction automatique
Cet article a été traduit automatiquement depuis la version originale en anglais.
Voici la configuration que j’applique à un MacBook neuf avant d’y faire de l’ingénierie AI. Elle s’adresse aux ingénieurs qui préparent un Mac Apple Silicon pour Python et l’AI. Elle couvre les outils en ligne de commande que macOS n’inclut pas, Homebrew, Python avec uv, le shell, le choix du terminal et de l’éditeur, les agents de code, Docker et les outils de modèles locaux.
Certaines étapes sont indispensables, d’autres relèvent de mes préférences. Les Xcode Command Line Tools, Homebrew, Git et un workflow Python constituent la base. Warp, iTerm2, Powerlevel10k, Cursor et les outils d’exécution de modèles locaux sont des choix. Les commandes ci-dessous installent cette base ; les sections suivantes présentent mes choix supplémentaires.
Les étapes se déroulent dans cet ordre :
- Les outils en ligne de commande Xcode.
- Homebrew.
- uv et Python.
- Oh My Zsh.
- Les plugins et Powerlevel10k.
Le terminal, l’éditeur, les conteneurs et les modèles locaux sont des choix indépendants. Si vous en sautez un, les étapes ci-dessus fonctionnent quand même.
Outils en ligne de commande et Homebrew
Commencez par les outils en ligne de commande d’Apple :
xcode-select --install
macOS ouvre une boîte de dialogue qui guide l’installation.
Homebrew est le gestionnaire de paquets que j’utilise pour le reste de cette configuration. Son installateur officiel tient en une commande :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
L’installateur explique ce qu’il va modifier et demande une confirmation. Le guide d’installation de Homebrew liste les modifications et les préfixes par défaut.
Pour exécuter une révision vérifiée de l’installateur, téléchargez le script, vérifiez son SHA-256 et exécutez la copie locale. Ce bloc utilise le commit 150c69d :
(
set -e
homebrew_installer="$(mktemp)"
trap 'rm -f "$homebrew_installer"' EXIT
curl --proto '=https' --tlsv1.2 --fail --location --show-error https://raw.githubusercontent.com/Homebrew/install/150c69df1e54b0b74c9fcca5a201410a2300816a/install.sh -o "$homebrew_installer"
printf '%s %s\n' 12479a24be3f5307eecac7cde670fad7118640f031229e964f544b1367b52a41 "$homebrew_installer" | shasum -a 256 --check
less "$homebrew_installer"
/bin/bash "$homebrew_installer"
)
Le commit et le SHA-256 fixent le script d’installation que vous exécutez. Ce script installe toujours la dernière version de Homebrew, et les commandes de paquets suivantes installent les versions actuelles. Épingler le commit ne prouve pas qui l’a écrit.
Sur Apple Silicon, Homebrew s’installe dans /opt/homebrew, qui ne figure pas dans le PATH par défaut. L’installateur affiche les commandes qui corrigent cela, mais ne les exécute pas. Exécutez-les vous-même :
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
La première ligne rend brew disponible dans chaque nouveau shell de connexion. La seconde le rend disponible dans le shell courant. .zprofile ou .zshrc explique pourquoi la ligne va dans .zprofile.
Installez les outils en ligne de commande que j’utilise régulièrement :
brew install uv htop gitmoji pandoc ncdu tmux
- uv gère les versions de Python, les environnements, les dépendances, les commandes et les fichiers de verrouillage. La section suivante le configure.
- htop est un moniteur visuel du système et des processus.
- tmux maintient plusieurs sessions de terminal dans une seule fenêtre.
- ncdu affiche l’occupation du disque par répertoire.
- gitmoji ajoute des emojis aux messages de commit.
- pandoc convertit des documents d’un format à l’autre.
Python avec uv et pyenv
Avant d’adopter uv, j’utilisais pyenv pour gérer les environnements Python. uv couvre désormais mon workflow quotidien. Installez la dernière version de Python gérée par uv :
uv python install
Cette commande installe la dernière version disponible pour uv au moment de la configuration. Lancez-la avec uv run python, ou démarrez un projet avec uv init. Pour une version propre à un projet, suivez la procédure d’épinglage de mon guide rapide pour gérer Python sur macOS avec uv.
J’utilise pyenv quand j’ai besoin d’un interpréteur compilé depuis les sources ou d’options de compilation CPython personnalisées que les distributions précompilées de uv ne proposent pas. pyenv compile Python depuis les sources ; il a donc d’abord besoin de ces bibliothèques. La liste suit l’environnement de compilation recommandé de pyenv :
brew install pyenv openssl@3 readline sqlite3 xz tcl-tk@8 libb2 zstd zlib pkgconfig
- openssl fournit la prise en charge SSL/TLS du module
sslde Python. - readline ajoute l’édition de ligne et l’historique à l’interpréteur interactif.
- sqlite3 est la base de données embarquée derrière le module
sqlite3de Python. - xz, zlib et zstd assurent la compression des données.
tcl-tk@8permet de compiler le module graphiquetkinter,libb2fournit le hachage BLAKE2 etpkgconfigaide la compilation à trouver les autres bibliothèques.
uv n’a besoin d’aucun de ces paquets. Sautez ce bloc si vous n’utilisez pas pyenv.
Terminal
Le Terminal par défaut de macOS convient. J’ai utilisé iTerm2 pendant des années, puis je suis récemment passé à Warp, un terminal écrit en Rust avec des fonctions AI intégrées. Le thème de prompt présenté plus loin, Powerlevel10k, demande un réglage par terminal : choisir la police MesloLGS NF. Dans Warp, ouvrez aussi Settings → Appearance et, sous Input, réglez Input type sur Shell (PS1). Warp dessine son propre prompt par défaut ; sans ce réglage, vous ne verrez pas le prompt Powerlevel10k (documentation de Warp sur le prompt).
Si vous restez sur iTerm2, voici les deux réglages que je modifie :
Activer l’édition de texte naturelle
- Ouvrez Preferences → Profiles → Keys → Key Mappings.
- Ouvrez le menu déroulant Presets….
- Sélectionnez « Natural Text Editing ».
Choisir un thème de couleurs
- Parcourez les thèmes sur iTerm2-Color-Schemes.
- Ouvrez Preferences → Profiles → Colors → Color Presets…
- Sélectionnez Import et choisissez le thème téléchargé.
Zsh et Oh My Zsh
macOS utilise Zsh comme shell de connexion par défaut. J’utilise le /bin/zsh fourni avec le système ; n’installez le Zsh de Homebrew que si vous avez besoin d’une version plus récente en particulier.
Vérifiez le Zsh installé et le shell de connexion actuel :
echo "$SHELL"
command -v zsh
zsh --version
Si Zsh est installé mais n’est pas choisi comme shell de connexion, passez à la copie fournie avec le système :
chsh -s /bin/zsh
Ouvrez un nouveau terminal après avoir changé de shell de connexion.
Oh My Zsh ajoute les réglages par défaut et le système de plugins que j’utilise. Son installateur officiel est :
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
L’installateur renomme un ~/.zshrc existant en ~/.zshrc.pre-oh-my-zsh et en écrit un nouveau à partir de son modèle. Copiez de l’ancien fichier vers le nouveau les réglages que vous voulez garder. Lancez omz update quand vous voulez une version plus récente d’Oh My Zsh. Par défaut, il vous demande aussi tous les 13 jours si vous voulez le mettre à jour.
Les deux sections suivantes ajoutent des plugins et un thème, et toutes deux modifient ~/.zshrc. La figure montre quel fichier contient quelle ligne, quelles lignes vous modifiez et vers quoi chaque ligne pointe sur le disque.
Ajouter des plugins
Installez zsh-autosuggestions et zsh-syntax-highlighting dans le répertoire de plugins personnalisés d’Oh My Zsh :
git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
zsh-autosuggestions propose des commandes tirées de votre historique pendant la saisie. zsh-syntax-highlighting colore chaque commande pendant la saisie, si bien que les fautes de frappe apparaissent avant que vous n’appuyiez sur Entrée.
Dans ~/.zshrc, remplacez la ligne plugins=(git) du modèle par les plugins correspondant aux outils de cet article :
plugins=(
git brew docker docker-compose macos python tmux vscode
zsh-autosuggestions zsh-syntax-highlighting
)
Ajoutez pyenv à la liste si vous l’avez installé. Gardez zsh-syntax-highlighting en dernière position du tableau. Ma propre liste contient aussi aws, gcloud, kubectl et pre-commit. N’ajoutez ce genre de plugins que si vous utilisez l’outil concerné, car chaque plugin allonge le démarrage du shell. Le wiki des plugins Oh My Zsh décrit les plugins fournis.
Powerlevel10k et sa police
Powerlevel10k est le thème Zsh que j’utilise. Il affiche dans le prompt le répertoire de travail, l’état Git et l’environnement Python actif, et fournit un assistant de configuration interactif. Installez-le pour Oh My Zsh :
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
Dans ~/.zshrc, remplacez la ligne ZSH_THEME="robbyrussell" par :
ZSH_THEME="powerlevel10k/powerlevel10k"
Ouvrez un nouveau shell et lancez p10k configure. L’assistant enregistre vos choix dans ~/.p10k.zsh.
Les icônes de Powerlevel10k nécessitent la police MesloLGS NF. p10k configure peut installer la police automatiquement dans iTerm2. Pour les autres terminaux et éditeurs, téléchargez et installez les quatre fichiers TTF indiqués dans le guide des polices de Powerlevel10k, puis sélectionnez la police. Dans Warp, ouvrez Settings → Appearance → Text et réglez Terminal font sur MesloLGS NF. Dans VS Code ou Cursor, réglez la police du terminal intégré :
- Ouvrez les paramètres de votre éditeur.
- Recherchez
terminal.integrated.fontFamily. - Réglez-le sur
MesloLGS NF.
Éditeurs et agents de code
Je garde un éditeur ouvert et lance un ou deux agents de code à côté. En ce moment, j’utilise Cursor, avec Codex et Claude Code qui tournent en parallèle.
- Cursor est un fork de VS Code avec la programmation en binôme assistée par AI intégrée. Utilisez-le quand vous voulez que le modèle modifie le code dans l’éditeur.
- VS Code dispose du plus grand catalogue d’extensions. Utilisez-le quand vous avez besoin d’une extension que Cursor ne prend pas en charge.
- Claude Code et Codex CLI sont des agents de code qui s’exécutent dans le terminal. Ils lisent le dépôt, modifient les fichiers et lancent des commandes. Utilisez-les pour des modifications qui touchent de nombreux fichiers ou des tâches qui doivent lancer des tests.
- GitHub Desktop est un client Git pour les moments où je ne veux pas passer par la CLI.
Tous s’installent comme casks Homebrew :
brew install --cask cursor visual-studio-code claude-code codex github
Homebrew ne met pas Claude Code à jour tout seul ; lancez brew upgrade claude-code. Si vous préférez les mises à jour automatiques, utilisez plutôt l’installateur natif d’Anthropic : curl -fsSL https://claude.ai/install.sh | bash.
Conteneurs et modèles locaux
Les outils restants dépendent du travail que je prévois de faire sur la machine. La configuration du shell et de Python ne dépend ni des conteneurs ni des modèles locaux.
- Docker Desktop est le runtime de conteneurs que j’utilise. Sa licence est gratuite pour un usage personnel et pour les petites entreprises de moins de 250 employés et de moins de $10 millions de chiffre d’affaires annuel. Les entreprises plus grandes ont besoin d’un abonnement payant (licence Docker Desktop).
- Podman Desktop est open source et n’impose pas ce type de condition de licence. Utilisez-le quand votre entreprise dépasse ces seuils et ne paie pas Docker.
- Ollama tourne comme service en arrière-plan avec une API locale. Utilisez-le quand des scripts ou une application appellent le modèle.
- LM Studio est une application de bureau pour trouver, charger et comparer des modèles. Utilisez-la quand vous voulez essayer des modèles à la main. Elle peut aussi servir une API locale.
Ceux-ci s’installent aussi comme casks :
brew install --cask docker-desktop # or podman-desktop
brew install --cask ollama-app # or lm-studio
LLMs locaux sur macOS compare en détail Ollama, LM Studio, llama.cpp et MLX-LM.
Reproduire la configuration sur le prochain Mac
Homebrew peut enregistrer les formules et les casks de cette configuration dans un Brewfile et les installer sur une nouvelle machine :
brew bundle dump --file ~/Brewfile
brew bundle --file ~/Brewfile
Lancez la première commande sur l’ancien Mac ; ajoutez --force pour écraser un Brewfile existant. Sur le nouveau Mac, installez Xcode Command Line Tools et Homebrew, effectuez l’étape brew shellenv, puis lancez la seconde commande.
Conservez le Brewfile et des copies sans secrets de .zprofile, .zshrc et .p10k.zsh dans un dépôt de dotfiles. Refaites l’installation de Python géré par uv et les étapes manuelles pour Oh My Zsh, les plugins, Powerlevel10k et les polices. Restaurez vos fichiers de configuration du shell après avoir installé Oh My Zsh, car son installateur réécrit .zshrc. Réappliquez les réglages du terminal et de l’éditeur.
Un Brewfile enregistre les noms des paquets sans verrouiller leurs versions. Les paquets restaurés peuvent être plus récents ; la documentation de Homebrew Bundle explique cette limite.
Références
- Guide de Terminal d’Apple : changer le shell par défaut
- Installation de Homebrew et formule Zsh de Homebrew
- Installation d’Oh My Zsh et configuration de Zsh sur macOS
- Installation de Powerlevel10k
- Installation de pyenv et configuration du shell
- Gestion de Python avec uv
- Réglages du prompt de Warp
- Installation de Claude Code et Codex CLI
- Docker Desktop pour Mac et licence Docker Desktop
- Documentation d’Ollama