Configuração de um MacBook para AI engineering: ferramentas e fluxo de trabalho no macOS
Tradução automática
Este artigo foi traduzido automaticamente a partir da versão original em inglês.
Esta é a configuração que aplico a um MacBook novo antes de começar trabalho de AI engineering. Destina-se a engenheiros que preparam um Mac com Apple Silicon para trabalho com Python e AI. Abrange as ferramentas de linha de comandos que o macOS não inclui, o Homebrew, Python com uv, a shell, as escolhas de terminal e editor, os agentes de programação, o Docker e as ferramentas de modelos locais.
Alguns passos são obrigatórios e outros são preferências minhas. Xcode Command Line Tools, Homebrew, Git e um fluxo de trabalho de Python são a base. Warp, iTerm2, Powerlevel10k, Cursor e as ferramentas para correr modelos locais são escolhas. Os comandos abaixo instalam a base; as secções seguintes registam as escolhas adicionais que faço.
Os passos seguem esta ordem:
- Ferramentas de linha de comandos do Xcode.
- Homebrew.
- uv e Python.
- Oh My Zsh.
- Plugins e Powerlevel10k.
O terminal, o editor, os contentores e os modelos locais são escolhas independentes. Se saltar algum deles, os passos acima continuam a funcionar.
Ferramentas de linha de comandos e Homebrew
Comece pelas ferramentas de linha de comandos da Apple:
xcode-select --install
O macOS abre uma caixa de diálogo que guia a instalação.
O Homebrew é o gestor de pacotes que uso no resto desta configuração. O instalador oficial é um único comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
O instalador explica o que vai alterar e pede confirmação. O guia de instalação do Homebrew enumera as alterações e os prefixos predefinidos.
Para executar uma revisão verificada do instalador, descarregue o script, verifique o
SHA-256 e execute a cópia local. Este bloco usa o
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"
)
O commit e o SHA-256 fixam o script de instalação que executa. Esse script continua a instalar a versão mais recente do Homebrew, e os comandos de pacotes seguintes instalam as versões atuais. Fixar o commit não prova quem o escreveu.
No Apple Silicon, o Homebrew instala em /opt/homebrew, que não está no PATH
predefinido. O instalador imprime os comandos que resolvem isto, mas não os
executa. Execute-os por si:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
A primeira linha torna o brew disponível em cada nova login shell. A segunda
torna-o disponível na shell atual. .zprofile vs .zshrc
explica porque é que a linha vai para o .zprofile.
Instale as ferramentas de linha de comandos que uso com regularidade:
brew install uv htop gitmoji pandoc ncdu tmux
- O uv gere versões de Python, ambientes, dependências, comandos e lockfiles. A secção seguinte configura-o.
- O htop é um monitor visual do sistema e dos processos.
- O tmux mantém várias sessões de terminal a correr numa só janela.
- O ncdu mostra a utilização do disco por diretório.
- O gitmoji acrescenta emojis às mensagens de commit.
- O pandoc converte documentos entre formatos.
Python com uv e pyenv
Antes de adotar o uv, usava o pyenv para gerir ambientes de Python. Hoje, o uv cobre o meu fluxo de trabalho do dia a dia. Instale a versão mais recente de Python gerida pelo uv:
uv python install
Isto instala a versão mais recente disponível para o uv no momento da
configuração. Execute-a com uv run python ou comece um projeto com uv init.
Para uma versão específica de um projeto, use o processo de fixação descrito no
meu guia rápido para gerir Python no macOS com uv.
Uso o pyenv quando preciso de um interpretador compilado a partir do código-fonte ou de opções de compilação do CPython que as distribuições pré-compiladas do uv não oferecem. O pyenv compila o Python a partir do código-fonte, por isso precisa primeiro destas bibliotecas. A lista segue o ambiente de compilação sugerido do pyenv:
brew install pyenv openssl@3 readline sqlite3 xz tcl-tk@8 libb2 zstd zlib pkgconfig
- O openssl fornece suporte SSL/TLS ao módulo
ssldo Python. - O readline acrescenta edição de linha e histórico ao interpretador interativo.
- O sqlite3 é a base de dados embebida por trás do módulo
sqlite3do Python. - O xz, o zlib e o zstd fornecem compressão de dados.
- O
tcl-tk@8compila o módulo de interface gráficatkinter, olibb2fornece hashing BLAKE2 e opkgconfigajuda a compilação a encontrar as outras bibliotecas.
O uv não precisa de nenhum destes pacotes. Salte este bloco se não usa o pyenv.
Terminal
O Terminal predefinido do macOS serve perfeitamente. Usei o iTerm2 durante anos e mudei recentemente para o Warp, um terminal escrito em Rust com funcionalidades de AI integradas. O tema de prompt que surge mais à frente neste artigo, o Powerlevel10k, exige uma alteração em cada terminal: definir a fonte como MesloLGS NF. No Warp, abra também Settings → Appearance e, em Input, defina Input type como Shell (PS1). O Warp desenha o seu próprio prompt por predefinição, por isso, sem esta alteração, não verá o prompt do Powerlevel10k (documentação de prompt do Warp).
Se ficar com o iTerm2, estas são as duas definições que altero:
Ativar a edição de texto natural
- Abra Preferences → Profiles → Keys → Key Mappings.
- Abra o menu pendente Presets….
- Selecione “Natural Text Editing”.
Escolher um tema de cores
- Explore os temas em iTerm2-Color-Schemes.
- Abra Preferences → Profiles → Colors → Color Presets…
- Selecione Import e escolha o tema descarregado.
Zsh e Oh My Zsh
O macOS usa o Zsh como login shell predefinida.
Uso o /bin/zsh incluído no sistema; instale o
Zsh do Homebrew apenas quando precisar de
uma versão upstream específica mais recente.
Verifique o Zsh instalado e a login shell atual:
echo "$SHELL"
command -v zsh
zsh --version
Se o Zsh estiver instalado mas não estiver selecionado como login shell, mude para a cópia incluída no sistema:
chsh -s /bin/zsh
Abra um novo terminal depois de mudar a login shell.
O Oh My Zsh acrescenta as predefinições e o sistema de plugins que uso. O instalador oficial é:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
O instalador muda o nome de um ~/.zshrc existente para ~/.zshrc.pre-oh-my-zsh
e escreve um novo a partir do seu modelo. Copie do ficheiro antigo para o novo as
definições que quer manter. Execute omz update quando quiser uma versão mais
recente do Oh My Zsh. Por predefinição, ele também pergunta a cada 13 dias se quer
atualizar.
As duas secções seguintes acrescentam plugins e um tema, e ambas editam o
~/.zshrc. A figura mostra que ficheiro contém que linha, que linhas altera e para onde cada linha aponta no disco.
Acrescentar plugins
Instale o zsh-autosuggestions e o zsh-syntax-highlighting no diretório de plugins personalizados do 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"
O zsh-autosuggestions sugere comandos do seu histórico enquanto escreve. O zsh-syntax-highlighting colore cada comando enquanto escreve, por isso os erros de escrita aparecem antes de carregar em Enter.
No ~/.zshrc, substitua a linha plugins=(git) do modelo pelos plugins das
ferramentas deste artigo:
plugins=(
git brew docker docker-compose macos python tmux vscode
zsh-autosuggestions zsh-syntax-highlighting
)
Acrescente pyenv à lista se o instalou. Mantenha zsh-syntax-highlighting em
último lugar no array. A minha lista inclui também aws, gcloud, kubectl e
pre-commit. Acrescente plugins como estes apenas quando usar a ferramenta
correspondente, porque cada plugin aumenta o tempo de arranque da shell. A wiki
de plugins do Oh My Zsh descreve
os plugins incluídos.
O Powerlevel10k e a sua fonte
O Powerlevel10k é o tema de Zsh que uso. Mostra no prompt o diretório de trabalho, o estado do Git e o ambiente de Python ativo, e inclui um assistente de configuração interativo. Instale-o para o Oh My Zsh:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
No ~/.zshrc, substitua a linha ZSH_THEME="robbyrussell" por:
ZSH_THEME="powerlevel10k/powerlevel10k"
Abra uma nova shell e execute p10k configure. O assistente grava as suas
escolhas em ~/.p10k.zsh.
Os ícones do Powerlevel10k precisam da fonte MesloLGS NF. O p10k configure pode
instalar a fonte automaticamente no iTerm2. Para outros terminais e editores,
descarregue e instale os quatro ficheiros TTF do guia de fontes do
Powerlevel10k e
depois selecione a fonte. No Warp, abra Settings → Appearance → Text e defina
Terminal font como MesloLGS NF. No VS Code ou no Cursor, defina a fonte do
terminal integrado:
- Abra as definições do seu editor.
- Procure
terminal.integrated.fontFamily. - Defina-a como
MesloLGS NF.
Editores e agentes de programação
Mantenho um editor aberto e corro um ou dois agentes de programação ao lado. Hoje em dia uso o Cursor com o Codex e o Claude Code a correr em paralelo.
- O Cursor é um fork do VS Code com programação em par com AI integrada. Use-o quando quiser que o modelo edite código dentro do editor.
- O VS Code tem o catálogo de extensões maior. Use-o quando precisar de uma extensão que o Cursor não suporta.
- O Claude Code e o Codex CLI são agentes de programação que correm no terminal. Leem o repositório, editam ficheiros e executam comandos. Use-os para alterações que abrangem muitos ficheiros ou para tarefas que precisam de correr testes.
- O GitHub Desktop é um cliente Git para quando não me apetece passar para a CLI.
Todos se instalam como casks do Homebrew:
brew install --cask cursor visual-studio-code claude-code codex github
O Homebrew não atualiza o Claude Code sozinho; execute brew upgrade claude-code.
Se preferir atualizações automáticas, use antes o instalador nativo da Anthropic:
curl -fsSL https://claude.ai/install.sh | bash.
Contentores e modelos locais
As restantes ferramentas dependem do trabalho que planeio fazer na máquina. A configuração da shell e do Python não depende de contentores nem de modelos locais.
- O Docker Desktop é o runtime de contentores que uso. A licença é gratuita para uso pessoal e para pequenas empresas com menos de 250 trabalhadores e menos de $10 milhões de receita anual. As empresas maiores precisam de um plano pago (licença do Docker Desktop).
- O Podman Desktop é open source e não tem essa condição de licença. Use-o quando a sua empresa ultrapassa esses limites e não paga o Docker.
- O Ollama corre como serviço em segundo plano com uma API local. Use-o quando scripts ou uma aplicação chamam o modelo.
- O LM Studio é uma aplicação de desktop para encontrar, carregar e comparar modelos. Use-o quando quiser experimentar modelos à mão. Também pode servir uma API local.
Também se instalam como casks:
brew install --cask docker-desktop # or podman-desktop
brew install --cask ollama-app # or lm-studio
LLMs locais no macOS compara em detalhe o Ollama, o LM Studio, o llama.cpp e o MLX-LM.
Repetir a configuração no próximo Mac
O Homebrew consegue registar as fórmulas e os casks desta configuração num Brewfile e instalá-los numa máquina nova:
brew bundle dump --file ~/Brewfile
brew bundle --file ~/Brewfile
Execute o primeiro comando no Mac antigo; acrescente --force para substituir um Brewfile existente. No Mac novo, instale Xcode Command Line Tools e Homebrew, execute o passo brew shellenv e depois o segundo comando.
Guarde o Brewfile e cópias de .zprofile, .zshrc e .p10k.zsh sem segredos num repositório de dotfiles. Repita a instalação do Python gerido pelo uv e os passos manuais do Oh My Zsh, dos plugins, do Powerlevel10k e da fonte. Restaure os ficheiros de configuração da shell depois de instalar o Oh My Zsh, porque o instalador reescreve o .zshrc. Volte a aplicar as definições do terminal e do editor.
Um Brewfile regista os nomes dos pacotes sem fixar as versões. Os pacotes restaurados podem ser mais recentes; a documentação do Homebrew Bundle explica esta limitação.
Referências
- Guia do Terminal da Apple: alterar a shell predefinida
- Instalação do Homebrew e fórmula Zsh do Homebrew
- Instalação do Oh My Zsh e configuração do Zsh no macOS
- Instalação do Powerlevel10k
- Instalação do pyenv e configuração da shell
- Gestão de Python com o uv
- Definições de prompt do Warp
- Configuração do Claude Code e Codex CLI
- Docker Desktop para Mac e licença do Docker Desktop
- Documentação do Ollama