Продвинутое использование: советы по настройке и лучшие практики
Чему вы научитесь
- Понимать, почему по умолчанию уведомляются только родительские сессии, что снижает информационный шум
- Настраивать звуки уведомлений macOS для различения типов событий
- Вручную указывать тип терминала при проблемах с автоопределением
- Настраивать временное отключение звука для встреч и периодов концентрации
- Оптимизировать стратегию уведомлений, балансируя между своевременностью и отвлечением
Ваша текущая проблема
Плагин уведомлений удобен, но настройки по умолчанию могут не подходить для всех рабочих процессов:
- Хотите отслеживать все подзадачи ИИ, но по умолчанию уведомляются только родительские сессии
- Используете нестандартный терминал, и автоопределение не работает
- Хотите временно отключить звук во время встречи, но не хотите каждый раз редактировать конфигурацию
- Разные типы событий используют одинаковый звук, и вы не можете отличить завершение задачи от ошибки
Когда это пригодится
Когда вы уже освоили базовое использование плагина и хотите оптимизировать уведомления под свой рабочий процесс.
Основная идея
Настройки плагина по умолчанию тщательно продуманы, но вы можете изменить поведение через файл конфигурации. Основной принцип:
Меньше шума, больше пользы
- Фильтрация родительских сессий: уведомления только о главных задачах, игнорирование внутренних подзадач ИИ
- Учёт фокуса: нет уведомлений при активном терминале, чтобы избежать дублирования
- Группировка уведомлений: объединение уведомлений при одновременном завершении нескольких задач
Подсказка
Все параметры конфигурации подробно описаны в Справочнике по конфигурации. Этот урок фокусируется на практических советах и лучших практиках.
🎒 Подготовка
Убедитесь, что вы завершили Быстрый старт и успешно получили первое уведомление.
Пошаговое руководство
Шаг 1: Понимание фильтрации родительских сессий
Зачем это нужно
Сессии OpenCode имеют древовидную структуру: одна родительская сессия может иметь несколько дочерних. По умолчанию плагин уведомляет только о завершении родительских сессий, избегая шума от подзадач.
Просмотр конфигурации
Отредактируйте файл конфигурации:
# macOS/Linux
~/.config/opencode/kdco-notify.json
# Windows
%APPDATA%\opencode\kdco-notify.json{
"notifyChildSessions": false // ← по умолчанию false
}Что вы должны увидеть:
notifyChildSessions: falseозначает уведомления только о корневых сессиях- Внутренние вызовы инструментов ИИ не вызывают уведомлений
Когда включать уведомления о дочерних сессиях
Если нужно отслеживать каждую подзадачу (например, при отладке многошаговых процессов), установите значение true:
{
"notifyChildSessions": true // ← при включении каждая подзадача будет уведомлять
}Внимание
Включение уведомлений о дочерних сессиях значительно увеличит частоту уведомлений. Используйте с осторожностью.
Шаг 2: Настройка звуков уведомлений macOS
Зачем это нужно
Разные звуки для разных типов событий позволяют понять, что произошло, не глядя на уведомление.
Просмотр доступных звуков
macOS предоставляет 14 встроенных звуков:
| Название | Подходящий сценарий | Характер |
|---|---|---|
| Glass | Завершение задачи (по умолчанию) | Чистый |
| Basso | Ошибка (по умолчанию) | Низкий |
| Submarine | Запрос разрешения (по умолчанию) | Мягкий |
| Bottle | Особые события | Лёгкий |
| Ping | Общие напоминания | Простой |
| Pop | Лёгкие события | Живой |
| Purr | Успешные события | Тёплый |
| Blow | Предупреждения | Срочный |
| Funk | Особые метки | Уникальный |
| Frog | Напоминания | Громкий |
| Hero | Важные события | Величественный |
| Morse | Уведомления | Ритмичный |
| Sosumi | Системные подсказки | Классический |
| Tink | Завершение | Лёгкий |
Настройка звуков
Измените раздел sounds в конфигурации:
{
"sounds": {
"idle": "Ping", // завершение задачи
"error": "Blow", // ошибка (более срочный)
"permission": "Pop", // запрос разрешения (более лёгкий)
"question": "Tink" // вопрос (опционально, по умолчанию используется звук permission)
}
}Что вы должны увидеть:
- После изменения разные типы событий воспроизводят соответствующие звуки
- Если
sounds.questionне задан, будет использоваться звукsounds.permission
Подсказка
Звуки работают только на macOS. Windows и Linux используют системные звуки уведомлений по умолчанию.
Шаг 3: Ручное указание типа терминала
Зачем это нужно
Библиотека detect-terminal поддерживает более 37 терминалов, но нестандартные терминалы или кастомные сборки могут не распознаваться.
Проверка определённого терминала
Пока нет возможности напрямую увидеть результат определения, но можно судить по логам:
# OpenCode UI показывает логи запуска плагинаЕсли вы видите что-то вроде "Terminal detection failed" или уведомления не фокусируют окно, возможно, нужно указать терминал вручную.
Ручное указание терминала
Добавьте поле terminal в конфигурацию:
{
"terminal": "wezterm" // используйте название терминала в нижнем регистре
}Поддерживаемые названия терминалов
Распространённые названия терминалов (регистр не важен):
| Терминал | Значение конфигурации |
|---|---|
| Ghostty | "ghostty" |
| Kitty | "kitty" |
| iTerm2 | "iterm" или "iterm2" |
| WezTerm | "wezterm" |
| Alacritty | "alacritty" |
| macOS Terminal | "terminal" или "apple_terminal" |
| Hyper | "hyper" |
| VS Code Terminal | "code" или "code-insiders" |
Что вы должны увидеть:
- После ручного указания определение фокуса macOS и фокусировка по клику работают корректно
- Если указано неверно, плагин молча откатится к автоопределению
Шаг 4: Временное отключение уведомлений
Зачем это нужно
Во время встреч, код-ревью или периодов концентрации вы можете захотеть временно не получать уведомления.
Использование тихих часов
Если у вас есть фиксированное время (например, ночью), когда вы не хотите отвлекаться, настройте тихие часы:
{
"quietHours": {
"enabled": true,
"start": "22:00", // 22:00
"end": "08:00" // 08:00 следующего дня
}
}Поддержка периода через полночь
Тихие часы могут пересекать полночь (например, 22:00-08:00):
{
"quietHours": {
"enabled": true,
"start": "22:00",
"end": "08:00" // 22:00 - 08:00 следующего дня
}
}Что вы должны увидеть:
- В период тихих часов все события не отправляют уведомления
- Вне этого периода уведомления работают нормально
Подсказка
Формат времени должен быть HH:MM (24-часовой формат), например "22:30".
Шаг 5: Баланс стратегии уведомлений
Зачем это нужно
Настройки по умолчанию уже оптимизированы, но вам может потребоваться корректировка под ваш рабочий процесс.
Сводка стратегии по умолчанию
| Параметр | Значение по умолчанию | Эффект |
|---|---|---|
notifyChildSessions | false | Уведомления только о родительских сессиях |
quietHours.enabled | false | Тихие часы не включены |
Подсказка
Определение фокуса (нет уведомлений при активном терминале) жёстко включено и не может быть отключено через конфигурацию.
Рекомендуемые комбинации настроек
Сценарий 1: Минимум отвлечений (по умолчанию)
{
"notifyChildSessions": false
}Сценарий 2: Отслеживание всех задач
{
"notifyChildSessions": true
}Внимание
Это значительно увеличит частоту уведомлений. Подходит для сценариев, требующих детального мониторинга.
Сценарий 3: Ночной тихий режим
{
"notifyChildSessions": false,
"quietHours": {
"enabled": true,
"start": "22:00",
"end": "08:00"
}
}Что вы должны увидеть:
- В зависимости от сценария поведение уведомлений существенно различается
- Постепенно настраивайте, чтобы найти оптимальную конфигурацию
Контрольная точка ✅
После настройки проверьте следующее:
| Проверка | Метод проверки |
|---|---|
| Фильтрация родительских сессий | Запустите задачу ИИ с подзадачами, получите только одно уведомление "Ready for review" |
| Настройка звуков | Вызовите завершение задачи, ошибку, запрос разрешения — услышьте разные звуки |
| Переопределение терминала | На macOS при клике на уведомление окно терминала корректно выходит на передний план |
| Тихие часы | В период тихих часов вызовите событие — уведомление не приходит |
Типичные проблемы
Изменения конфигурации не применяются
Проблема: После изменения файла конфигурации поведение уведомлений не изменилось.
Причина: OpenCode может требовать перезапуска плагина или самого OpenCode.
Решение: Перезапустите OpenCode CLI или OpenCode UI.
Звук не воспроизводится
Проблема: Установлен пользовательский звук, но воспроизводится звук по умолчанию.
Причина:
- Ошибка в написании названия звука
- Вы не на платформе macOS
Решение:
- Проверьте, что название звука есть в списке поддерживаемых (с учётом регистра)
- Убедитесь, что используете macOS
Переопределение терминала не работает
Проблема: Установлено поле terminal, но клик по уведомлению всё ещё не фокусирует окно.
Причина:
- Неверное название терминала
- Имя процесса терминала не соответствует значению конфигурации
Решение:
- Попробуйте название в нижнем регистре
- Посмотрите список Поддерживаемых терминалов
Итоги урока
В этом уроке мы изучили продвинутое использование и лучшие практики opencode-notify:
- Фильтрация родительских сессий: по умолчанию уведомляются только корневые сессии, избегая шума от подзадач
- Настройка звуков: на macOS можно настроить 14 звуков для различения типов событий
- Переопределение терминала: ручное указание типа терминала решает проблемы автоопределения
- Временное отключение: через
quietHoursнастраиваются тихие часы - Баланс стратегии: настройка конфигурации под рабочий процесс, баланс между своевременностью и отвлечением
Основной принцип: меньше шума, больше пользы. Настройки по умолчанию уже оптимизированы, в большинстве случаев изменения не требуются.
Анонс следующего урока
В следующем уроке мы изучим Устранение неполадок.
Вы узнаете:
- Что делать, если уведомления не отображаются
- Как диагностировать проблемы с определением фокуса
- Расшифровка типичных сообщений об ошибках
- Решения проблем, специфичных для платформы
Приложение: справочник по исходному коду
Нажмите, чтобы увидеть расположение исходного кода
Дата обновления: 2026-01-27
| Функция | Путь к файлу | Строки |
|---|---|---|
| Определение родительской сессии | src/notify.ts | 205-214 |
| Схема конфигурации | src/notify.ts | 30-68 |
| Конфигурация по умолчанию | src/notify.ts | 56-68 |
| Список звуков macOS | README.md | 81 |
Ключевые константы:
DEFAULT_CONFIG: значения конфигурации по умолчаниюTERMINAL_PROCESS_NAMES: таблица соответствия названий терминалов именам процессов macOS
Ключевые функции:
isParentSession(): определяет, является ли сессия родительскойloadConfig(): загружает и объединяет пользовательскую конфигурацию