Konfiguracja MacBooka do pracy z AI: narzędzia i workflow w macOS
Tłumaczenie automatyczne Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.
To jest konfiguracja, którą stosuję na świeżo skonfigurowanym MacBooku przed rozpoczęciem pracy inżynierskiej z AI. Obejmuje narzędzia wiersza poleceń, których macOS nie zawiera, Homebrew, Python z uv, powłokę, wybór terminala i edytora, Docker oraz lokalne narzędzia AI.
Praktyczny podział przebiega między wymaganymi podstawami a osobistymi preferencjami. Xcode Command Line Tools, Homebrew, Git i workflow dla Pythona to fundamenty. Warp, iTerm2, Powerlevel10k, Cursor i lokalne narzędzia do uruchamiania modeli to kwestie wyboru. Poniższe polecenia instalują fundamenty, a kolejne sekcje opisują wybory, których dokonuję na ich podstawie. To udokumentowana sekwencja konfiguracji, a nie bitowy obraz maszyny możliwy do odtworzenia.
Instalacja podstaw macOS
Zacznij od narzędzi wiersza poleceń Apple:
xcode-select --install
macOS otworzy okno dialogowe prowadzące przez proces instalacji.
Homebrew to menedżer pakietów, którego używam w pozostałej części tej konfiguracji:
Pobierz instalator z przejrzanej wersji, zweryfikuj jego sumę kontrolną, sprawdź jego zawartość, a następnie uruchom lokalną kopię:
(
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"
)
Instrukcja instalacji Homebrew wyjaśnia wprowadzone zmiany i domyślne ścieżki instalacji. Na Apple Silicon Homebrew używa /opt/homebrew. Uruchom polecenie brew shellenv wyświetlone na końcu, aby brew było dostępne w bieżącej powłoce. Instalator może również skonfigurować prefiks Homebrew dla przyszłych powłok logowania. Pinowanie commita i SHA-256 obejmują plik bootstrapu — po weryfikacji aktualizuj je razem. Sam Homebrew jest menedżerem pakietów typu rolling release, dlatego późniejsze polecenia brew install nadal będą wskazywać aktualne w danym momencie wersje formuł.
Zainstaluj używane przeze mnie regularnie narzędzia wiersza poleceń:
brew install openssl readline sqlite3 xz zlib uv htop gitmoji pandoc ncdu tmux
Pakiety dzielą się na trzy grupy:
- openssl, readline, sqlite3, xz i zlib dostarczają biblioteki do typowych zadań w Pythonie i pracy z wierszem poleceń.
- uv zarządza wersjami Pythona, środowiskami, zależnościami, poleceniami i lockfile’ami.
- htop, tmux, ncdu, gitmoji i pandoc służą odpowiednio do monitorowania procesów, sesji terminala, analizy zajętości dysku, formatowania commitów i konwersji dokumentów.
Używanie uv w codziennej pracy z Pythonem
Przed przejściem na uv używałem pyenv do zarządzania środowiskami Pythona. Obecnie uv obsługuje mój codzienny workflow. Zainstaluj najnowszą wersję Pythona zarządzaną przez uv:
uv python install
Spowoduje to zainstalowanie najnowszej wersji dostępnej w uv w momencie konfiguracji. W przypadku wersji przypisanej do konkretnego projektu użyj workflow pinowania opisanego w moim krótkim przewodniku po zarządzaniu Pythonem na macOS za pomocą uv.
Zainstaluj pyenv osobno tylko wtedy, gdy potrzebujesz ścieżki budowania ze źródeł:
brew install pyenv
Używam pyenv, gdy potrzebuję interpretera zbudowanego ze źródeł albo niestandardowych opcji kompilacji CPythona, których nie zapewniają prebuilt dystrybucje uv. Jeśli pomijasz tę opcjonalną instalację, usuń pyenv z listy pluginów powłoki poniżej.
Wybór terminala
Domyślny Terminal macOS jest wystarczający. Przez lata używałem iTerm2, a niedawno przeszedłem na Warp — terminal oparty na Rust z wbudowanymi funkcjami AI. Ten wybór nie wpływa na dalszą konfigurację.
Jeśli pozostajesz przy iTerm2, zmieniam w nim dwa ustawienia:
Włącz naturalną edycję tekstu
- Otwórz Preferences → Profiles → Keys → Key Mappings.
- Otwórz menu rozwijane Presets…
- Wybierz „Natural Text Editing”.
Wybierz motyw kolorystyczny
- Przejrzyj motywy na stronie iTerm2-Color-Schemes.
- Otwórz Preferences → Profiles → Colors → Color Presets…
- Wybierz Import i wskaż pobrany motyw.
Konfiguracja Zsh
macOS używa Zsh jako domyślnej powłoki logowania. Korzystam z dołączonego do systemu /bin/zsh; Zsh z Homebrew instaluję tylko wtedy, gdy potrzebuję konkretnej, nowszej wersji upstream.
Sprawdź zainstalowaną wersję Zsh i bieżącą powłokę logowania:
echo "$SHELL"
command -v zsh
zsh --version
Jeśli Zsh jest zainstalowany, ale nie jest wybraną powłoką logowania, przełącz się na wersję dołączoną do systemu:
chsh -s /bin/zsh
Po zmianie powłoki logowania otwórz nowy terminal.
Oh My Zsh dodaje używane przeze mnie ustawienia domyślne i system pluginów. Jego standardowy instalator korzysta ze zmiennej gałęzi. W przypadku przypiętej konfiguracji sklonuj repozytorium bez przełączania się na tę gałąź, wybierz zweryfikowany commit i dopiero wtedy skopiuj szablon:
(
set -e
omz_dir="$HOME/.oh-my-zsh"
if [ -L "$HOME/.zshrc" ]; then
printf 'Refusing to replace symlink: %s\n' "$HOME/.zshrc" >&2
exit 1
fi
if [ -e "$HOME/.zshrc" ] && [ ! -f "$HOME/.zshrc" ]; then
printf 'Refusing to replace non-regular file: %s\n' "$HOME/.zshrc" >&2
exit 1
fi
if [ -e "$HOME/.zshrc" ]; then
omz_backup="$(mktemp "$HOME/.zshrc.pre-oh-my-zsh.XXXXXX")"
cp "$HOME/.zshrc" "$omz_backup"
printf 'Existing .zshrc backed up to %s\n' "$omz_backup"
fi
git clone --filter=blob:none --no-checkout https://github.com/ohmyzsh/ohmyzsh "$omz_dir"
git -C "$omz_dir" checkout --detach 4b657407c98bbc8830ae66c2ac7ff3d737c55a83
test "$(git -C "$omz_dir" rev-parse HEAD)" = 4b657407c98bbc8830ae66c2ac7ff3d737c55a83
new_zshrc="$(mktemp "$HOME/.zshrc.new.XXXXXX")"
trap 'rm -f "$new_zshrc"' EXIT
cp "$omz_dir/templates/zshrc.zsh-template" "$new_zshrc"
test -s "$new_zshrc"
test ! -d "$HOME/.zshrc"
mv -f "$new_zshrc" "$HOME/.zshrc"
)
Blok zatrzymuje się przed zastąpieniem .zshrc, jeśli klonowanie lub weryfikacja commita zakończy się niepowodzeniem. Odrzuca dowiązania symboliczne i pliki niebędące zwykłymi plikami, tworzy kopię zapasową istniejącego pliku pod unikalną nazwą .zshrc.pre-oh-my-zsh.*, a następnie zastępuje go zweryfikowaną kopią tymczasową w ramach jednej operacji rename. Porównaj wyświetloną kopię zapasową z szablonem i przywróć lokalne ustawienia przed otwarciem nowej powłoki. Checkout jest przypięty do commita 4b65740; aktualizuj hash dopiero po przejrzeniu nowszej wersji.
Uruchamiaj fragmenty konfiguracji powłoki z jednej powłoki konfiguracyjnej, bez innego procesu modyfikującego .zshrc albo docelowe katalogi pluginów i motywów. Odmawiają one nadpisania istniejących lub dowiązanych symbolicznie lokalizacji, ale nie są menedżerem pakietów obsługującym wiele procesów.
Dodawanie pluginów
Zainstaluj zsh-autosuggestions i zsh-syntax-highlighting w niestandardowym katalogu pluginów Oh My Zsh:
install_pinned_zsh_repo() (
set -e
repo_url="$1"
commit="$2"
destination="$3"
if [ -L "$destination" ]; then
printf 'Refusing symlink destination: %s\n' "$destination" >&2
return 1
fi
if [ -d "$destination/.git" ] && [ "$(git -C "$destination" rev-parse HEAD)" = "$commit" ]; then
return 0
fi
destination_parent="$(dirname "$destination")"
mkdir -p "$destination_parent"
stage="$(mktemp -d "$destination_parent/.pinned-zsh.XXXXXX")"
cleanup_stage() { rm -rf "$stage"; }
trap cleanup_stage EXIT
git clone --filter=blob:none --no-checkout "$repo_url" "$stage/repo"
git -C "$stage/repo" checkout --detach "$commit"
test "$(git -C "$stage/repo" rev-parse HEAD)" = "$commit"
test ! -e "$destination"
test ! -L "$destination"
mv -h -n "$stage/repo" "$destination"
test ! -e "$stage/repo"
test "$(git -C "$destination" rev-parse HEAD)" = "$commit"
)
install_pinned_zsh_repo https://github.com/zsh-users/zsh-autosuggestions e52ee8ca55bcc56a17c828767a3f98f22a68d4eb "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
install_pinned_zsh_repo https://github.com/zsh-users/zsh-syntax-highlighting.git db085e4661f6aafd24e5acb5b2e17e4dd5dddf3e "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"
Przypięty commit zsh-autosuggestions i commit zsh-syntax-highlighting odpowiadają opublikowanym wydaniom v0.7.1 i 0.8.0. Aktualizuj hashe dopiero po przejrzeniu nowszego wydania.
Edytuj ~/.zshrc, aby ładował je wraz z używanymi przeze mnie pluginami:
plugins=(
aws bgnotify brew docker docker-compose
emoji forklift gcloud git history iterm2
keychain kubectl macos pre-commit
pyenv pylint python screen themes
tmux virtualenv vscode
zsh-autosuggestions zsh-syntax-highlighting
)
Pozostaw zsh-syntax-highlighting na końcu tablicy. Wiki pluginów Oh My Zsh opisuje pluginy dołączone do pakietu. Dwa zewnętrzne pluginy podpowiadają polecenia na podstawie historii i wyróżniają składnię podczas pisania; postępuj zgodnie z instrukcjami instalacji w poszczególnych repozytoriach.
Dodawanie Powerlevel10k i czcionki
Powerlevel10k to używany przeze mnie motyw Zsh. Pokazuje bieżący katalog roboczy, status Git i aktywne środowisko Pythona w promptcie oraz udostępnia interaktywny kreator konfiguracji. Zainstaluj go dla Oh My Zsh, a następnie wybierz motyw w ~/.zshrc:
(
set -e
p10k_dir="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
if [ -L "$p10k_dir" ]; then
printf 'Refusing symlink destination: %s\n' "$p10k_dir" >&2
exit 1
fi
if [ -d "$p10k_dir/.git" ] && [ "$(git -C "$p10k_dir" rev-parse HEAD)" = 35833ea15f14b71dbcebc7e54c104d8d56ca5268 ]; then
exit 0
fi
test ! -e "$p10k_dir"
p10k_parent="$(dirname "$p10k_dir")"
mkdir -p "$p10k_parent"
stage="$(mktemp -d "$p10k_parent/.pinned-p10k.XXXXXX")"
cleanup_stage() { rm -rf "$stage"; }
trap cleanup_stage EXIT
git clone --filter=blob:none --no-checkout https://github.com/romkatv/powerlevel10k.git "$stage/repo"
git -C "$stage/repo" checkout --detach 35833ea15f14b71dbcebc7e54c104d8d56ca5268
test "$(git -C "$stage/repo" rev-parse HEAD)" = 35833ea15f14b71dbcebc7e54c104d8d56ca5268
test ! -L "$p10k_dir"
mv -h -n "$stage/repo" "$p10k_dir"
test ! -e "$stage/repo"
test "$(git -C "$p10k_dir" rev-parse HEAD)" = 35833ea15f14b71dbcebc7e54c104d8d56ca5268
)
Przypięty commit Powerlevel10k jest wskazany przez wydanie v1.20.0.
Powyższe identyfikatory obiektów Git zapobiegają cichemu dryfowi wersji po ich uzyskaniu, ale same w sobie nie uwierzytelniają maintenera. Polecenia te ufają endpointowi HTTPS GitHub i powiązanym z nim kontom repozytoriów. Aby zastosować silniejszy model zaufania, zweryfikuj podpisany tag lub commit względem klucza maintenera uzyskanego niezależnie, zanim przeniesiesz przygotowany checkout na miejsce docelowe.
ZSH_THEME="powerlevel10k/powerlevel10k"
Otwórz nową powłokę i uruchom p10k configure.
Jeśli używasz zintegrowanego terminala VS Code, zainstaluj zalecaną czcionkę przed ustawieniem czcionki terminala, aby ikony Powerlevel10k wyświetlały się poprawnie. p10k configure może automatycznie zainstalować czcionkę w iTerm2. W przypadku innych terminali pobierz i zainstaluj cztery pliki TTF z przewodnika po czcionce Powerlevel10k.
W VS Code ustaw czcionkę terminala na MesloLGS NF:
- Otwórz ustawienia edytora.
- Wyszukaj
terminal.integrated.fontFamily. - Ustaw wartość
MesloLGS NF.
Wybór edytorów i asystentów AI
Zazwyczaj mam otwarte jedno IDE, a obok niego jedno lub dwa narzędzia AI.
IDE
Asystenci AI
- OpenAI Codex to agent kodujący firmy OpenAI.
- Claude to asystent firmy Anthropic, po którego sięgam przy trudniejszych zadaniach.
Obecnie używam Cursora, a równolegle uruchamiam Codex i Claude Code.
Wybór kontenerów i lokalnych narzędzi do modeli
Pozostałe narzędzia zależą od pracy, którą planuję wykonywać na komputerze:
- GitHub Desktop, gdy nie chcę korzystać z CLI.
- Docker Desktop — używane przeze mnie środowisko uruchomieniowe kontenerów.
- Podman Desktop — alternatywa dla Docker Desktop.
- Ollama lub LM Studio — do lokalnego uruchamiania LLMs na Macu.
Docker Desktop i lokalne narzędzia do uruchamiania modeli to niezależne wybory. Instaluj je wtedy, gdy projekty wymagają kontenerów lub lokalnej inferencji; konfiguracja powłoki i Pythona nie zależy od żadnego z nich.
Ustalenie granic konfiguracji
To osobista konfiguracja, a nie minimalna ani uniwersalna baza macOS. Usuń elementy, których nie używasz. Zawiera zweryfikowane wersje bootstrapu i wydań pluginów, ale formuły Homebrew i aplikacje GUI nadal się zmieniają. Spójność utrzymuję przede wszystkim na poziomie następujących granic:
- Używaj dołączonego do systemu
/bin/zsh, chyba że projekt wymaga konkretnej, nowszej wersji Zsh. - Używaj uv do codziennej instalacji Pythona i środowisk projektowych; zachowaj pyenv do interpreterów budowanych ze źródeł lub niestandardowych interpreterów CPython.
- Dokumentuj polecenia instalacyjne, pozbawione sekretów dotfiles, rozszerzenia edytora i lokalizacje modeli, aby kolejna konfiguracja była mechaniczna.