Настройка MacBook для AI-инжиниринга: инструменты macOS и рабочий процесс

Автоматический перевод

Эта статья была автоматически переведена с оригинальной английской версии.

Это настройка, которую я делаю на новом MacBook перед работой в AI-инжиниринге. Она для инженеров, которые готовят Mac на Apple Silicon к работе с Python и AI. Здесь описаны консольные инструменты, которых нет в macOS, Homebrew, Python с uv, оболочка, выбор терминала и редактора, кодинг-агенты, Docker и инструменты для локальных моделей.

Одни шаги обязательны, другие отражают мои предпочтения. Xcode Command Line Tools, Homebrew, Git и рабочий процесс с Python составляют базу. Warp, iTerm2, Powerlevel10k, Cursor и программы для запуска локальных моделей выбираются отдельно. Команды ниже устанавливают базу, а следующие разделы описывают мои дополнительные настройки.

Шаги идут в таком порядке:

  1. Xcode Command Line Tools.
  2. Homebrew.
  3. uv и Python.
  4. Oh My Zsh.
  5. Плагины и Powerlevel10k.

Терминал, редактор, контейнеры и локальные модели выбираются независимо. Если пропустить любой из них, шаги выше всё равно работают.

Консольные инструменты и Homebrew

Начните с консольных инструментов Apple:

xcode-select --install

macOS откроет диалог, который проведёт через установку.

Homebrew — пакетный менеджер, которым я ставлю всё остальное в этой настройке. Официальный установщик запускается одной командой:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Установщик объясняет, что он изменит, и просит подтверждения. Руководство по установке Homebrew перечисляет эти изменения и префиксы по умолчанию.

Чтобы запустить проверенную ревизию установщика, скачайте скрипт, сверьте его SHA-256 и запустите локальную копию. Этот блок использует коммит 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"
)

Коммит и SHA-256 фиксируют скрипт установщика, который вы запускаете. Этот скрипт всё равно устанавливает последнюю версию Homebrew, а последующие команды устанавливают актуальные версии пакетов. Закрепление коммита не доказывает, кто его написал.

На Apple Silicon Homebrew устанавливается в /opt/homebrew, а этого каталога нет в PATH по умолчанию. Установщик выводит команды, которые это исправляют, но не запускает их. Запустите их сами:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Первая строка делает brew доступным в каждой новой оболочке входа. Вторая делает его доступным в текущей. .zprofile и .zshrc объясняет, почему эта строка идёт в .zprofile.

Установите консольные инструменты, которыми я пользуюсь постоянно:

brew install uv htop gitmoji pandoc ncdu tmux
  • uv управляет версиями Python, окружениями, зависимостями, командами и lock-файлами. Следующий раздел его настраивает.
  • htop — наглядный монитор системы и процессов.
  • tmux держит несколько терминальных сессий в одном окне.
  • ncdu показывает занятое место на диске по каталогам.
  • gitmoji добавляет эмодзи в сообщения коммитов.
  • pandoc конвертирует документы между форматами.

Python с uv и pyenv

До uv я управлял окружениями Python через pyenv. Теперь uv обеспечивает мою повседневную работу. Установите последнюю версию Python, которой управляет uv:

uv python install

Команда ставит последнюю версию, доступную uv на момент настройки. Запускайте её через uv run python или начните проект с uv init. Чтобы закрепить версию для проекта, используйте порядок действий из моего краткого руководства по управлению Python в macOS с uv.

pyenv я использую, когда нужен интерпретатор, собранный из исходников, или свои параметры сборки CPython, которых нет в готовых дистрибутивах uv. pyenv компилирует Python из исходников, поэтому сначала ему нужны эти библиотеки. Список взят из рекомендованного окружения сборки pyenv:

brew install pyenv openssl@3 readline sqlite3 xz tcl-tk@8 libb2 zstd zlib pkgconfig
  • openssl обеспечивает поддержку SSL/TLS для модуля ssl в Python.
  • readline добавляет редактирование строки и историю в интерактивный интерпретатор.
  • sqlite3 — встроенная база данных, на которой работает модуль sqlite3 в Python.
  • xz, zlib и zstd отвечают за сжатие данных.
  • tcl-tk@8 нужен для сборки GUI-модуля tkinter, libb2 даёт хеширование BLAKE2, а pkgconfig помогает сборке найти остальные библиотеки.

uv не нужен ни один из этих пакетов. Пропустите этот блок, если не пользуетесь pyenv.

Терминал

Стандартный Terminal в macOS вполне подходит. Я много лет пользовался iTerm2, а недавно перешёл на Warp — терминал на Rust со встроенными AI-функциями. Тема промпта, о которой пойдёт речь дальше, Powerlevel10k, требует одного изменения в каждом терминале: выбрать шрифт MesloLGS NF. В Warp также откройте Settings → Appearance и в разделе Input установите Input type в Shell (PS1). По умолчанию Warp рисует собственный промпт, поэтому без этого изменения вы не увидите промпт Powerlevel10k (документация Warp о промпте).

Если остаётесь на iTerm2, вот две настройки, которые я меняю:

Включите естественное редактирование текста

  1. Откройте Preferences → Profiles → Keys → Key Mappings.
  2. Откройте выпадающий список Presets….
  3. Выберите «Natural Text Editing».

Выберите цветовую тему

  1. Посмотрите темы в iTerm2-Color-Schemes.
  2. Откройте Preferences → Profiles → Colors → Color Presets…
  3. Выберите Import и укажите скачанную тему.

Zsh и Oh My Zsh

В macOS Zsh — оболочка входа по умолчанию. Я использую встроенный /bin/zsh; ставьте Zsh из Homebrew, только когда нужна конкретная более новая версия из upstream.

Проверьте установленный Zsh и текущую оболочку входа:

echo "$SHELL"
command -v zsh
zsh --version

Если Zsh установлен, но не выбран как оболочка входа, переключитесь на встроенную копию:

chsh -s /bin/zsh

После смены оболочки входа откройте новый терминал.

Oh My Zsh добавляет настройки по умолчанию и систему плагинов, которыми я пользуюсь. Его официальный установщик:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установщик переименовывает существующий ~/.zshrc в ~/.zshrc.pre-oh-my-zsh и пишет новый по своему шаблону. Перенесите из старого файла в новый настройки, которые хотите сохранить. Чтобы обновить Oh My Zsh, запустите omz update. По умолчанию он также каждые 13 дней спрашивает, обновиться ли.

Следующие два раздела добавляют плагины и тему, и оба правят ~/.zshrc. На схеме показано, какой файл хранит какую строку, какие строки вы меняете и куда каждая строка указывает на диске.

Два стартовых файла с их строками: ~/.zprofile содержит строку brew shellenv, которая добавляет /opt/homebrew/bin в PATH; ~/.zshrc содержит строку ZSH_THEME, указывающую на тему, клонированную в ZSH_CUSTOM/themes, список plugins со встроенными плагинами и двумя клонированными в ZSH_CUSTOM/plugins, где zsh-syntax-highlighting стоит последним, строку source, которая загружает Oh My Zsh, и строку, которая читает ~/.p10k.zsh, созданный p10k configureДва стартовых файла с их строками: ~/.zprofile содержит строку brew shellenv, которая добавляет /opt/homebrew/bin в PATH; ~/.zshrc содержит строку ZSH_THEME, указывающую на тему, клонированную в ZSH_CUSTOM/themes, список plugins со встроенными плагинами и двумя клонированными в ZSH_CUSTOM/plugins, где zsh-syntax-highlighting стоит последним, строку source, которая загружает Oh My Zsh, и строку, которая читает ~/.p10k.zsh, созданный p10k configure

Добавьте плагины

Установите zsh-autosuggestions и zsh-syntax-highlighting в каталог пользовательских плагинов 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 подсказывает команды из истории, пока вы печатаете. zsh-syntax-highlighting подсвечивает команду по мере ввода, поэтому опечатки видны до нажатия Enter.

В ~/.zshrc замените строку шаблона plugins=(git) на плагины для инструментов из этой статьи:

plugins=(
    git brew docker docker-compose macos python tmux vscode
    zsh-autosuggestions zsh-syntax-highlighting
)

Если вы установили pyenv, добавьте в список pyenv. Держите zsh-syntax-highlighting последним в массиве. В моём собственном списке есть ещё aws, gcloud, kubectl и pre-commit. Добавляйте такие плагины, только если пользуетесь соответствующим инструментом, потому что каждый плагин увеличивает время запуска оболочки. Вики по плагинам Oh My Zsh описывает встроенные плагины.

Powerlevel10k и его шрифт

Powerlevel10k — тема Zsh, которой я пользуюсь. Она показывает в промпте рабочий каталог, статус Git и активное окружение Python, а также предлагает интерактивный мастер настройки. Установите её для Oh My Zsh:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

В ~/.zshrc замените строку ZSH_THEME="robbyrussell" на:

ZSH_THEME="powerlevel10k/powerlevel10k"

Откройте новую оболочку и запустите p10k configure. Мастер запишет ваш выбор в ~/.p10k.zsh.

Иконкам Powerlevel10k нужен шрифт MesloLGS NF. В iTerm2 p10k configure может установить шрифт автоматически. Для других терминалов и редакторов скачайте и установите четыре файла TTF из руководства по шрифту Powerlevel10k, а затем выберите шрифт. В Warp откройте Settings → Appearance → Text и укажите Terminal font MesloLGS NF. В VS Code или Cursor задайте шрифт встроенного терминала:

  1. Откройте настройки редактора.
  2. Найдите terminal.integrated.fontFamily.
  3. Установите значение MesloLGS NF.

Редакторы и кодинг-агенты

Я держу открытым один редактор и запускаю рядом один или два кодинг-агента. Сейчас я работаю в Cursor, а параллельно с ним запускаю Codex и Claude Code.

  • Cursor — форк VS Code со встроенным AI-парным программированием. Берите его, когда хотите, чтобы модель правила код прямо в редакторе.
  • VS Code — с более широким каталогом расширений. Берите его, когда нужно расширение, которое Cursor не поддерживает.
  • Claude Code и Codex CLI — кодинг-агенты, которые работают в терминале. Они читают репозиторий, правят файлы и запускают команды. Используйте их для изменений во многих файлах или задач, где нужно прогонять тесты.
  • GitHub Desktop — Git-клиент на случай, когда не хочется переходить в CLI.

Все они ставятся как cask в Homebrew:

brew install --cask cursor visual-studio-code claude-code codex github

Homebrew сам не обновляет Claude Code; запускайте brew upgrade claude-code. Если вам нужны автоматические обновления, используйте вместо этого нативный установщик Anthropic: curl -fsSL https://claude.ai/install.sh | bash.

Контейнеры и локальные модели

Остальные инструменты зависят от того, какую работу я планирую делать на машине. Настройка оболочки и Python не зависит от контейнеров и локальных моделей.

  • Docker Desktop — контейнерный рантайм, которым я пользуюсь. Его лицензия бесплатна для личного использования и для небольших компаний, где меньше 250 сотрудников и годовая выручка меньше $10 млн. Крупным компаниям нужен платный план (лицензия Docker Desktop).
  • Podman Desktop — open source, и такого условия в лицензии у него нет. Используйте его, когда ваша компания выходит за эти пределы и не платит за Docker.
  • Ollama работает как фоновый сервис с локальным API. Используйте его, когда модель вызывают скрипты или приложение.
  • LM Studio — десктопное приложение, чтобы искать, загружать и сравнивать модели. Используйте его, когда хотите пробовать модели вручную. Оно тоже может предоставлять локальный API.

Они тоже ставятся как cask:

brew install --cask docker-desktop   # or podman-desktop
brew install --cask ollama-app       # or lm-studio

Локальные LLMs в macOS подробно сравнивает Ollama, LM Studio, llama.cpp и MLX-LM.

Повторите настройку на следующем Mac

Homebrew может записать формулы и cask-пакеты из этой настройки в Brewfile и установить их на новой машине:

brew bundle dump --file ~/Brewfile
brew bundle --file ~/Brewfile

Первую команду запустите на старом Mac; добавьте --force, чтобы перезаписать существующий Brewfile. На новом Mac установите Xcode Command Line Tools и Homebrew, выполните шаг brew shellenv, затем запустите вторую команду.

Храните Brewfile и копии .zprofile, .zshrc и .p10k.zsh без секретов в репозитории dotfiles. Повторите установку Python через uv и ручные шаги для Oh My Zsh, плагинов, Powerlevel10k и шрифта. Восстановите файлы конфигурации оболочки после установки Oh My Zsh, потому что его установщик переписывает .zshrc. Заново примените настройки терминала и редактора.

Brewfile сохраняет имена пакетов, но не фиксирует их версии. Восстановленные пакеты могут оказаться новее; документация Homebrew Bundle объясняет это ограничение.

Источники