← Все гайды AI Release
EN Подписаться на @ai_release1

Как превратить чёлку MacBook в пульт управления ИИ-агентами: настройка Claude Code, Codex, Cursor и Copilot

Обновлено: 23.10.2026 · AI Release · @ai_release1
Как превратить чёлку MacBook в пульт управления ИИ-агентами: настройка Claude Code, Codex, Cursor и Copilot

TL;DR

Требования и подготовка

Иллюстрация к разделу «Требования и подготовка»
Иллюстрация к разделу «Требования и подготовка»

Шаг 1. Проверить окружение и поставить базовые инструменты

Что сделать: убедиться, что на машине есть компилятор и пакетный менеджер, затем создать рабочую папку для статусов.

Зачем: агенты и наш будущий HUD (HUD — полупрозрачная плашка поверх экрана со строкой состояния) ставятся из npm, а npm при сборке нативных модулей обращается к системному компилятору.

Как проверить: каждая команда ниже печатает версию или путь.

sw_vers
xcode-select -p

Ожидаемый вывод второй команды — путь /Library/Developer/CommandLineTools. Если вместо него ошибка, поставьте инструменты:

xcode-select --install

Проверьте Homebrew. Если ответ zsh: command not found: brew — установите его по официальной инструкции на brew.sh (команда установки меняется, сверьтесь с сайтом).

brew --version
brew install node
node -v && npm -v

Ожидаемо: две строки с версиями, например v22.x.x и 10.x.x — конкретные номера у вас будут свои, это нормально.

Создайте каталоги и добавьте ~/bin в PATH (PATH — список папок, где оболочка ищет команды):

mkdir -p ~/.ai-agent ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
ls -la ~/.ai-agent

Проверка: ls показывает пустой каталог (только . и ..). Git нужен для работы агентов с репозиториями — git --version; если планируете альтернативу, см. Jujutsu или Git: что выбрать для работы с ИИ-агентами и Claude Code.

Шаг 2. Установить четырёх агентов, включить запись статуса и вывести HUD в чёлку

Иллюстрация к разделу «Шаг 2. Установить четырёх агентов, включить запись статуса и вывести HUD в чёлку»
Иллюстрация к разделу «Шаг 2. Установить четырёх агентов, включить запись статуса и вывести HUD в чёлку»

Что сделать: поставить Claude Code, Codex, Cursor и Copilot CLI, затем связать их с одним файлом статуса ~/.ai-agent/status.json, который читает плашка в чёлке.

Зачем: агенты — разные программы с разными интерфейсами; единый файл статуса превращает их в один «пульт»: чёлка показывает, кто именно сейчас работает.

Как проверить: после каждого блока есть команда проверки и ожидаемый вывод.

1) Claude Code и Codex

npm install -g @anthropic-ai/claude-code
npm install -g @openai/codex
claude --version
codex --version

Первый запуск: claude → команда /login (откроется браузер) и /status для проверки аккаунта. Для Codex — codex и вход по аккаунту ChatGPT либо переменная OPENAI_API_KEY; точные флаги входа сверьте с документацией.

2) Cursor. Установите IDE с официального сайта cursor.com, затем в палитре команд (⌘⇧P) выполните пункт установки shell-команды cursor (название пункта может отличаться — сверьтесь с документацией).

cursor --version
mkdir -p .cursor/rules

Второй командой вы создаёте папку правил проекта — туда Cursor складывает инструкции для модели.

3) Copilot CLI.

gh auth login
gh extension install github/gh-copilot
gh copilot --help

Ожидаемо: справка с подкомандами suggest и explain. Copilot CLI активно переименовывают — если расширение не ставится, сверьтесь с документацией по актуальному имени пакета.

4) Файл статуса и скрипт-писарь. Создайте ~/.ai-agent/notify.sh:

#!/usr/bin/env bash
set -euo pipefail
state="${1:-idle}"; agent="${2:-unknown}"
printf '{"agent":"%s","state":"%s","ts":"%s"}\n' "$agent" "$state" "$(date -u +%FT%TZ)" \
  > "$HOME/.ai-agent/status.json"
chmod +x ~/.ai-agent/notify.sh
~/.ai-agent/notify.sh running claude-code
cat ~/.ai-agent/status.json

Пример вывода: {"agent":"claude-code","state":"running","ts":"2025-01-01T10:00:00Z"}. Так работает потому, что агент и плашка читают один и тот же файл — посредник не нужен.

5) Хук Claude Code. Хук (hook) — команда, которую агент запускает сам при событии. Добавьте в ~/.claude/settings.json (путь к скрипту — абсолютный, $HOME внутри JSON не раскрывается):

{
  "hooks": {
    "Notification": [
      { "matcher": "", "hooks": [ { "type": "command", "command": "/Users/<имя>/.ai-agent/notify.sh wait claude-code" } ] }
    ],
    "Stop": [
      { "matcher": "", "hooks": [ { "type": "command", "command": "/Users/<имя>/.ai-agent/notify.sh done claude-code" } ] }
    ]
  }
}

Замените <имя> на ваше имя пользователя (whoami). Точный список событий хуков сверьте с документацией. Если работаете не один, а командой, схему субагентов разбирает гайд Claude Code для команды: как настроить субагентов и общий ИИ-суперагент.

6) Плашка в чёлке. Вариант А — готовое приложение (boring.notch или NotchNook): установите по официальной инструкции и проверьте в его настройках, умеет ли оно читать внешний файл или запускать скрипт — это сверьте с документацией, набор виджетов у версий разный. Вариант Б — свой HUD на Swift (компилятор уже стоит), файл ~/.ai-agent/notch_hud.swift:

import AppKit

let statusPath = ("~/.ai-agent/status.json" as NSString).expandingTildeInPath
let screen = NSScreen.main!
let w: CGFloat = 280, h: CGFloat = 26
let frame = NSRect(x: screen.frame.midX - w/2, y: screen.frame.maxY - h, width: w, height: h)
let panel = NSPanel(contentRect: frame, styleMask: [.borderless, .nonactivatingPanel],
                    backing: .buffered, defer: false)
panel.level = .statusBar
panel.isOpaque = false
panel.backgroundColor = .black
panel.alphaValue = 0.9
panel.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
let label = NSTextField(labelWithString: "idle")
label.alignment = .center
label.textColor = .white
label.font = .monospacedSystemFont(ofSize: 12, weight: .medium)
label.frame = NSRect(x: 0, y: 4, width: w, height: 18)
panel.contentView?.addSubview(label)
panel.orderFrontRegardless()

Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
    let raw = (try? String(contentsOfFile: statusPath, encoding: .utf8)) ?? ""
    if let d = raw.data(using: .utf8), let j = try? JSONSerialization.jsonObject(with: d) as? [String: Any] {
        label.stringValue = "\(j["agent"] ?? "?") · \(j["state"] ?? "?")"
    }
}
NSApplication.shared.run()

Запуск и проверка:

swift ~/.ai-agent/notch_hud.swift
~/.ai-agent/notify.sh running codex

В течение секунды в плашке под вырезом появится codex · running. Работает так: таймер раз в секунду перечитывает JSON, поэтому отдельный сервер и порт не нужны. Автозапуск при входе в систему настройте через Login Items (swiftc -O -o ~/bin/notch_hud ~/.ai-agent/notch_hud.swift) — детали сверьте с документацией.

Шаг 3. Проверить работу и зафиксировать результат

Иллюстрация к разделу «Шаг 3. Проверить работу и зафиксировать результат»
Иллюстрация к разделу «Шаг 3. Проверить работу и зафиксировать результат»

Что сделать: прогнать каждого агента и убедиться, что плашка меняет состояние, а агенты отвечают.

Зачем: до этой проверки вы не знаете, сработал ли хук и видит ли HUD файл — обе поломки выглядят одинаково («плашка висит на idle»).

Как проверить: команды ниже плюс чек-лист.

~/.ai-agent/notify.sh running claude-code
jq -r '.state' ~/.ai-agent/status.json

jq ставится через brew install jq. Ожидаемо: running.

claude

Введите короткий запрос, например объясни, что делает команда ls -la. После ответа снова прочитайте файл — состояние должно смениться на done, а в чёлке появиться claude-code · done. Если так — хук пишет статус, HUD его читает, связка собрана.

Чек-лист приёмки:

Возможные проблемы и решения

Проблема. Агент не находится после установки.

npm config get prefix
echo 'export PATH="<префикс>/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc && claude --version

Проблема. Сборка нативных модулей падает после обновления macOS.

xcode-select --install
xcode-select -p

Дождитесь окончания установки и повторите npm install -g ....

Проблема. Хук не срабатывает, статус не меняется.

chmod +x ~/.ai-agent/notify.sh
bash ~/.ai-agent/notify.sh test claude-code && cat ~/.ai-agent/status.json

Затем замените $HOME в settings.json на абсолютный путь /Users/<имя>/....

Резюме и следующие шаги

Четыре агента установлены, а их состояние стекается в один файл ~/.ai-agent/status.json, который читает плашка в чёлке. Дальше имеет смысл добавить хуки для Codex и Copilot по той же схеме и прогнать код агентов через сканер безопасности из гайда Как проверить код от Cursor и Claude Code на уязвимости.

FAQ

Нужен ли обязательно MacBook с вырезом?

Нет. Плашка ставится по координатам экрана, поэтому на мониторе без выреза она просто отрисуется у верхней кромки. Готовые приложения для чёлки нацелены именно на модели с вырезом — их поведение на внешнем дисплее сверьте с документацией.

Нужны ли платные подписки на все четыре инструмента?

Каждый сервис требует своей авторизации: Claude Code и Codex — вход в аккаунт, Copilot — активная подписка GitHub Copilot, Cursor — аккаунт IDE. Актуальные тарифы и лимиты сверьте с документацией, они меняются.

Замедлит ли HUD работу агентов?

Нет. Плашка раз в секунду читает локальный файл размером в одну строку, сеть и API не задействованы.

Можно ли подключить к этой схеме локальную модель вместо облачной?

Да, если у CLI есть OpenAI-совместимый эндпоинт — пошаговая настройка разобрана в гайде Как подключить локальную модель к Claude Code; файл статуса и хуки при этом не меняются.

🤖 Кратко для ИИ