Skip to content

Продвинутое использование: советы по настройке и лучшие практики

Чему вы научитесь

  • Понимать, почему по умолчанию уведомляются только родительские сессии, что снижает информационный шум
  • Настраивать звуки уведомлений macOS для различения типов событий
  • Вручную указывать тип терминала при проблемах с автоопределением
  • Настраивать временное отключение звука для встреч и периодов концентрации
  • Оптимизировать стратегию уведомлений, балансируя между своевременностью и отвлечением

Ваша текущая проблема

Плагин уведомлений удобен, но настройки по умолчанию могут не подходить для всех рабочих процессов:

  • Хотите отслеживать все подзадачи ИИ, но по умолчанию уведомляются только родительские сессии
  • Используете нестандартный терминал, и автоопределение не работает
  • Хотите временно отключить звук во время встречи, но не хотите каждый раз редактировать конфигурацию
  • Разные типы событий используют одинаковый звук, и вы не можете отличить завершение задачи от ошибки

Когда это пригодится

Когда вы уже освоили базовое использование плагина и хотите оптимизировать уведомления под свой рабочий процесс.


Основная идея

Настройки плагина по умолчанию тщательно продуманы, но вы можете изменить поведение через файл конфигурации. Основной принцип:

Меньше шума, больше пользы

  • Фильтрация родительских сессий: уведомления только о главных задачах, игнорирование внутренних подзадач ИИ
  • Учёт фокуса: нет уведомлений при активном терминале, чтобы избежать дублирования
  • Группировка уведомлений: объединение уведомлений при одновременном завершении нескольких задач

Подсказка

Все параметры конфигурации подробно описаны в Справочнике по конфигурации. Этот урок фокусируется на практических советах и лучших практиках.


🎒 Подготовка

Убедитесь, что вы завершили Быстрый старт и успешно получили первое уведомление.


Пошаговое руководство

Шаг 1: Понимание фильтрации родительских сессий

Зачем это нужно

Сессии OpenCode имеют древовидную структуру: одна родительская сессия может иметь несколько дочерних. По умолчанию плагин уведомляет только о завершении родительских сессий, избегая шума от подзадач.

Просмотр конфигурации

Отредактируйте файл конфигурации:

bash
# macOS/Linux
~/.config/opencode/kdco-notify.json

# Windows
%APPDATA%\opencode\kdco-notify.json
json
{
  "notifyChildSessions": false  // ← по умолчанию false
}

Что вы должны увидеть:

  • notifyChildSessions: false означает уведомления только о корневых сессиях
  • Внутренние вызовы инструментов ИИ не вызывают уведомлений

Когда включать уведомления о дочерних сессиях

Если нужно отслеживать каждую подзадачу (например, при отладке многошаговых процессов), установите значение true:

json
{
  "notifyChildSessions": true  // ← при включении каждая подзадача будет уведомлять
}

Внимание

Включение уведомлений о дочерних сессиях значительно увеличит частоту уведомлений. Используйте с осторожностью.


Шаг 2: Настройка звуков уведомлений macOS

Зачем это нужно

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

Просмотр доступных звуков

macOS предоставляет 14 встроенных звуков:

НазваниеПодходящий сценарийХарактер
GlassЗавершение задачи (по умолчанию)Чистый
BassoОшибка (по умолчанию)Низкий
SubmarineЗапрос разрешения (по умолчанию)Мягкий
BottleОсобые событияЛёгкий
PingОбщие напоминанияПростой
PopЛёгкие событияЖивой
PurrУспешные событияТёплый
BlowПредупрежденияСрочный
FunkОсобые меткиУникальный
FrogНапоминанияГромкий
HeroВажные событияВеличественный
MorseУведомленияРитмичный
SosumiСистемные подсказкиКлассический
TinkЗавершениеЛёгкий

Настройка звуков

Измените раздел sounds в конфигурации:

json
{
  "sounds": {
    "idle": "Ping",        // завершение задачи
    "error": "Blow",      // ошибка (более срочный)
    "permission": "Pop",   // запрос разрешения (более лёгкий)
    "question": "Tink"    // вопрос (опционально, по умолчанию используется звук permission)
  }
}

Что вы должны увидеть:

  • После изменения разные типы событий воспроизводят соответствующие звуки
  • Если sounds.question не задан, будет использоваться звук sounds.permission

Подсказка

Звуки работают только на macOS. Windows и Linux используют системные звуки уведомлений по умолчанию.


Шаг 3: Ручное указание типа терминала

Зачем это нужно

Библиотека detect-terminal поддерживает более 37 терминалов, но нестандартные терминалы или кастомные сборки могут не распознаваться.

Проверка определённого терминала

Пока нет возможности напрямую увидеть результат определения, но можно судить по логам:

bash
# OpenCode UI показывает логи запуска плагина

Если вы видите что-то вроде "Terminal detection failed" или уведомления не фокусируют окно, возможно, нужно указать терминал вручную.

Ручное указание терминала

Добавьте поле terminal в конфигурацию:

json
{
  "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: Временное отключение уведомлений

Зачем это нужно

Во время встреч, код-ревью или периодов концентрации вы можете захотеть временно не получать уведомления.

Использование тихих часов

Если у вас есть фиксированное время (например, ночью), когда вы не хотите отвлекаться, настройте тихие часы:

json
{
  "quietHours": {
    "enabled": true,
    "start": "22:00",  // 22:00
    "end": "08:00"     // 08:00 следующего дня
  }
}

Поддержка периода через полночь

Тихие часы могут пересекать полночь (например, 22:00-08:00):

json
{
  "quietHours": {
    "enabled": true,
    "start": "22:00",
    "end": "08:00"     // 22:00 - 08:00 следующего дня
  }
}

Что вы должны увидеть:

  • В период тихих часов все события не отправляют уведомления
  • Вне этого периода уведомления работают нормально

Подсказка

Формат времени должен быть HH:MM (24-часовой формат), например "22:30".


Шаг 5: Баланс стратегии уведомлений

Зачем это нужно

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

Сводка стратегии по умолчанию

ПараметрЗначение по умолчаниюЭффект
notifyChildSessionsfalseУведомления только о родительских сессиях
quietHours.enabledfalseТихие часы не включены

Подсказка

Определение фокуса (нет уведомлений при активном терминале) жёстко включено и не может быть отключено через конфигурацию.

Рекомендуемые комбинации настроек

Сценарий 1: Минимум отвлечений (по умолчанию)

json
{
  "notifyChildSessions": false
}

Сценарий 2: Отслеживание всех задач

json
{
  "notifyChildSessions": true
}

Внимание

Это значительно увеличит частоту уведомлений. Подходит для сценариев, требующих детального мониторинга.

Сценарий 3: Ночной тихий режим

json
{
  "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.ts205-214
Схема конфигурацииsrc/notify.ts30-68
Конфигурация по умолчаниюsrc/notify.ts56-68
Список звуков macOSREADME.md81

Ключевые константы:

  • DEFAULT_CONFIG: значения конфигурации по умолчанию
  • TERMINAL_PROCESS_NAMES: таблица соответствия названий терминалов именам процессов macOS

Ключевые функции:

  • isParentSession(): определяет, является ли сессия родительской
  • loadConfig(): загружает и объединяет пользовательскую конфигурацию