Claude Input Notify: Никога не пропускайте нотификация от Claude Code

Работата с Claude Code в терминала понякога може да доведе до пропуснати нотификации за въвеждане, особено когато работите по няколко задачи едновременно или имате отворени множество прозорци. Затова създадох claude-input-notify.sh - прост, но ефективен shell скрипт, който създава визуални известия винаги когато Claude Code се нуждае от вашето внимание.

Проблемът

При използване на Claude Code има моменти, когато той спира и чака въвеждане от потребителя - иска потвърждение, допълнителна информация или следващи стъпки. Ако работите в друг прозорец или сте фокусирани върху различна задача, може да пропуснете тези prompts, оставяйки Claude да чака безкрайно и нарушавайки работния ви процес.

Решението

Скриптът claude-input-notify.sh използва системата от hooks на Claude Code и автоматично показва визуално известие винаги когато Claude Code изисква въвеждане от потребителя. Така винаги ще знаете кога Claude се нуждае от вашата намеса.

Claude Input Notification Dialog

Основни характеристики

Интелигентно откриване на терминал

Скриптът използва множество методи за намиране на вашия активен терминален прозорец:

  • Търси прозорци по име на процес (gnome-terminal, konsole, xterm и др.)
  • Преминава към последно фокусирания прозорец, ако е необходимо
  • Поддържа различни терминални емулатори

Система за визуални известия

  • Показва чист, модерен диалог с логото на Claude Code
  • Показва ясни съобщения за това какво се случва
  • Предоставя бутон “OK” за бързо връщане към терминала
  • Опционален бутон “Cancel” за отхвърляне без действие
  • Може да се затвори и с клавиша ESC (същото като Cancel)
  • Показва персонализирани съобщения от Claude Code, когато са налични

Опции за разработчици

  • Debug режим (DEBUG_MODE=1 променлива на средата): Показва подробна информация за откриване на прозорци
  • Тестов режим (TEST_MODE=1 променлива на средата): Задейства тестово известие за проверка на настройката
  • Подробен изход: Помага при отстраняване на проблеми

Инсталиране и настройка

  1. Първо, уверете се, че имате необходимите зависимости:
sudo apt install xdotool wmctrl yad jq
  1. Изтеглете скрипта и логото от моето: own-debian-configs хранилище:
# Изтегляне на скрипта за известия
wget https://raw.githubusercontent.com/idachev/own-debian-configs/master/claude-input-notify.sh -O ~/bin/claude-input-notify.sh
chmod +x ~/bin/claude-input-notify.sh

# Изтегляне на логото на Claude (опционално, но препоръчително за по-добра визуализация)
wget https://raw.githubusercontent.com/idachev/own-debian-configs/master/claude-logo.png -O ~/bin/claude-logo.png
  1. Конфигурирайте Claude да използва скрипта за известия автоматично чрез редактиране на ~/.claude/settings.json:
{
  "hooks": {
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "~/bin/claude-input-notify.sh"
          }
        ]
      }
    ]
  }
}

Тази конфигурация с hooks гарантира, че скриптът за известия се изпълнява автоматично винаги когато Claude Code се нуждае от въвеждане от потребителя - не е необходимо ръчно пренасочване!

Как работи

Когато е конфигуриран като Claude hook, скриптът се задейства автоматично винаги когато Claude Code се нуждае от потребителско въвеждане. Процесът е следният:

  1. Claude Code открива, че се нуждае от потребителско въвеждане и задейства Notification hook
  2. Скриптът чете всяко JSON съобщение от stdin за показване на персонализирани известия
  3. Идентифицира терминалния прозорец, където работи Claude Code
  4. Създава диалог за известие чрез yad (Yet Another Dialog)
  5. Когато щракнете “OK”, автоматично фокусира терминалния прозорец
  6. ESC или Cancel просто затварят известието без да променят фокуса
  7. Връща ви точно там, където трябва да продължите взаимодействието

Разширено използване

Debug режим

За отстраняване на проблеми с откриването на прозорци, изпълнете скрипта ръчно с debug променлива на средата:

DEBUG_MODE=1 ~/bin/claude-input-notify.sh

Тестване на известието

За да проверите дали всичко работи:

TEST_MODE=1 ~/bin/claude-input-notify.sh

Техническа имплементация

Скриптът използва няколко Linux инструмента:

  • xdotool: За манипулиране на прозорци и управление на фокуса
  • wmctrl: Като резервен вариант за операции с прозорци
  • yad: За създаване на GTK+ диалога
  • pgrep/ps: За откриване на процеси
  • jq: Опционален JSON парсър за извличане на персонализирани съобщения от Claude Code hooks

Скриптът чете JSON данни от stdin когато е задействан от Claude Code hooks, което му позволява да извлича и показва персонализирани съобщения. Ако jq не е наличен, се връща към основно извличане с regex.

Известието може да използва или външен файл с логото на Claude (claude-logo.png), ако е наличен, или да се върне към вградено base64-кодирано лого. Това прави скрипта гъвкав - работи веднага, но изглежда още по-добре с персонализирания файл с лого.

Предимства

  • Никога не пропускайте prompts: Бъдете наясно кога Claude се нуждае от вашето въвеждане
  • Подобрен работен процес: Безпроблемно превключване между задачи без да губите следа
  • Визуална обратна връзка: Ясни, невъзможни за пропускане нотификации
  • Лесна интеграция: Работи с всяка терминална настройка
  • Леко: Минимално използване на ресурси, работи само когато е необходимо

Къде да го намерите

Пълното решение, включително скрипта и файла с логото, е налично в моето GitHub хранилище:

Заключение

Този прост инструмент значително подобри моя работен процес при работа с Claude Code. Чрез използването на вградената система за hooks на Claude, той се интегрира безпроблемно без да изисква сложна настройка или процеси работещи на заден план. Това е един от онези малки инструменти, които решават специфичен проблем елегантно.

Ако често използвате Claude Code в терминала, опитайте claude-input-notify.sh. Комбиниран с конфигурацията на hooks на Claude, той предоставя безпроблемен начин да останете ангажирани с вашия AI асистент, гарантирайки, че никога повече няма да оставите Claude да чака за вашето въвеждане!