Coucou: пульт агентов в чёлке и на iPhone
20.1Пульт агентов в чёлке
NOTCH · DYNAMIC ISLAND · APPROVALS
Агент спрашивает разрешение — вопрос всплывает в чёлке MacBook и на экране блокировки iPhone. Одно касание «Разрешить» — и работа продолжается, даже если вы не смотрите в терминал.
20.2Установка
GITHUB RELEASE · NOTARIZED · ДОСТУП
URL=$(curl -s https://api.github.com/repos/Louis-CFM/coucou/releases/latest \ | python3 -c "import json,sys;print([a['browser_download_url'] for a in json.load(sys.stdin)['assets'] if a['name']=='Coucou.zip'][0])") rm -rf /tmp/coucou && mkdir /tmp/coucou && curl -L -o /tmp/coucou/Coucou.zip "$URL" ditto -x -k /tmp/coucou/Coucou.zip /tmp/coucou spctl -a -vv /tmp/coucou/Coucou.app # accepted · Notarized Developer ID ditto /tmp/coucou/Coucou.app /Applications/Coucou.app && open -a Coucou
Первый запуск попросит доступ к уведомлениям и (для iPhone) включить Live Activities в приложении на телефоне. В настройках Coucou включите Launch at login — пульт должен жить всегда.
20.3Подключение к Claude Code
~/.claude/settings.json · 9 СОБЫТИЙ · 120 СЕКУНД
Скрипт добавляет хук Coucou на 9 событий и не трогает хуки других программ (Paradev пишет свои рядом). Перед записью — бэкап.
unzip -o ~/Downloads/si-academy-module-6-kit.zip -d ~/si-kit && bash ~/si-kit/coucou-install-hooks.sh
"PermissionRequest": [
{ "matcher": "*",
"hooks": [{ "type": "command",
"command": "\"$HOME/Library/Application Support/NotchBuddy/nb-hook\" --agent claude",
"timeout": 120 }] }
]| PermissionRequest | Ждёт ваш ответ до 120 секунд. Нет ответа — Claude Code спросит в терминале как обычно. |
| Остальные 8 событий | Огонь-и-забыл за 0,3 с: статус сессии в чёлке, никогда не тормозят агента. |
| Новые сессии | Хуки читаются при старте сессии Claude. Уже открытые сессии перезапустите. |
20.4Coucou + Wispr Flow без конфликтов
ОДИН ГОЛОСОВОЙ СЛОЙ · КЛАВИШИ НЕ ПЕРЕСЕКАЮТСЯ
В Coucou есть своя диктовка (Globe / правый Option / правый Command). Два голосовых слоя дерутся за клавиши и микрофон. Голосом управляет Wispr Flow, диктовку Coucou выключаем:
defaults write fr.louisraille.NotchBuddy flowDictationEnabled -bool false osascript -e 'tell application "Coucou" to quit'; sleep 2; open -a Coucou
| Клавиша | Wispr Flow | Coucou |
|---|---|---|
| Option левый, удержание | диктовка | — |
| Ctrl+Fn | Lens | — |
| Fn / Globe | свободна | диктовка выключена |
| Esc | отмена диктовки | — |
Диктовка обрывается? Удержание Option + любая другая клавиша прерывает запись: у автора за неделю набежало 373 обрыва. Решение — перевести диктовку Wispr на Fn: Settings → General → Shortcuts → Change. В системных настройках клавиатуры поставьте «Клавиша 🌐: Ничего не делать».
20.5Тест: мигнуть чёлкой
ПРЯМОЙ СИГНАЛ В СОКЕТ
H="$HOME/Library/Application Support/NotchBuddy/nb-hook"
printf '{"hook_event_name":"SessionStart","session_id":"academy-test","cwd":"%s"}' "$PWD" | "$H" --agent claude
printf '{"hook_event_name":"Notification","session_id":"academy-test","message":"SI Academy: сигнал дошёл"}' | "$H" --agent claude
sleep 5; printf '{"hook_event_name":"SessionEnd","session_id":"academy-test"}' | "$H" --agent claude- Coucou в /Applications и запущен
- spctl показал Notarized
- Хуки добавлены, бэкап settings.json создан
- Диктовка Coucou выключена, голос — только Wispr
- Тестовая сессия появилась в чёлке
- Launch at login включён