Самописные уведомления от Claude Code в Telegram. claude code.. claude code. llm.. claude code. llm. python.. claude code. llm. python. telegram.. claude code. llm. python. telegram. Тестирование IT-систем.. claude code. llm. python. telegram. Тестирование IT-систем. Тестирование веб-сервисов.. claude code. llm. python. telegram. Тестирование IT-систем. Тестирование веб-сервисов. Тестирование мобильных приложений.

Проблематика

Пока работал над флоу в статье, заметил, что некоторое количество просадок в производительности при работе с агентом вне режима авто-пилота возникает из-за тихих ожиданий. Например, ты не смотришь в IDE, читаешь что-то, а Claude Code сидит тебя ждет. Особенно это надоедает, когда агенту нужно какое-то разрешение.

Я люблю и практикую ChatOps. Поэтому решение пришло само: пусть агент мне пишет в телеге, когда я ему нужен.

Исследование

Сначала думал сунуть curl с коллбэком API телеги в CLAUDE.md, но:

  • Не секьюрно

  • Вряд ли будет работать. Или будет работать не всегда.

Еще думал обернуть нужное действие в skill, но тогда эта история неудобно масштабируема, громоздка и опять же, вряд ли заработает с конкретными событиями в цикле агента.

Пошел гуглить. Сначала попалась либа claude-code-telegram. Но для моей задачи это овер-скоуп.

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

Из этого поста я узнал про механизм hooks в .claude/settings.json.

Суть Hooks

На разных событиях агента можно завязать вызов bash-коллбэков. Вот полный список событий и их условий, переведенный на русский:

| Event              | Когда это срабатывает                                          |
| ------------------ | -------------------------------------------------------------- |
| SessionStart       | Когда сессия начинается или возобновляется                     |
| UserPromptSubmit   | Когда вы отправляете запрос, до того как Claude его обработает |
| PreToolUse         | До выполнения вызова инструмента. Может заблокировать его      |
| PermissionRequest  | Когда появляется диалог с запросом разрешения                  |
| PostToolUse        | После успешного выполнения вызова инструмента                  |
| PostToolUseFailure | После неудачного выполнения вызова инструмента                 |
| Notification       | Когда Claude Code отправляет уведомление                       |
| SubagentStart      | Когда порождается подагент                                     |
| SubagentStop       | Когда подагент завершает работу                                |
| Stop               | Когда Claude завершает ответ                                   |
| TeammateIdle       | Когда участник команды агентов собирается стать неактивным     |
| TaskCompleted      | Когда задача помечается как завершённая                        |
| PreCompact         | Перед сжатием контекста                                        |
| SessionEnd         | Когда сессия завершается                                       |
Самописные уведомления от Claude Code в Telegram - 1

Дока и возможности хуков монструозные и далеко не ограничены вызовом curl.

Решение

Подвесить отправку мне в личку сообщений при событиях завершения задачи и запроса разерешний. Шаги:

  1. Делаем себе бота в ТГ с помощью Bot Father

  2. Копируем токен

  3. Ищем бота и вызываем /start

  4. Вызываем

    curl --location 'https://api.telegram.org/bot<your_bot_token>/getUpdates'
    Самописные уведомления от Claude Code в Telegram - 2
  5. Из ответа берем ваш chat_id

  6. Собираете curl на отправку мне сообщения по API подставив токен и `chat_id`. Код написан в строку и экранирован, чтобы дальше его вставить в JSON:

    curl --location 'https://api.telegram.org/bot<your_bot_token>/sendMessage' --header 'Content-Type: application/json' --data '{"chat_id": "<chat_id>", "text": "Claude ждет пермишшен."}
    Самописные уведомления от Claude Code в Telegram - 3
  7. Открываем файл ~/.claude/settings.json

  8. Добавляем коллбэки с вашим текстом сообщений на Stop (завершение задачи) и PermissionRequest(запрос разрешения):

    {
      "hooks": {
        "Stop": [
          {
            "hooks": [
              {
                "type": "command",
                "command": "curl --location 'https://api.telegram.org/bot<my_bot_token>/sendMessage' --header 'Content-Type: application/json' --data '{"chat_id": "<my_chat_id>", "text": "✅ Задача завершена"}'"
              }
            ]
          }
        ],
        "PermissionRequest": [
          {
            "hooks": [
              {
                "type": "command",
                "command": "curl --location 'https://api.telegram.org/bot<my_bot_token>/sendMessage' --header 'Content-Type: application/json' --data '{"my_chat_id": <my_chat_id>", "text": "⚠️ Требуется твое действие"}'"
              },
              {
                "type": "agent",
                "prompt": "Проверь результат выполнения задачи. Запомни его как <last_message> не длиннее 200 слов. Затем выполни 'curl --location 'https://api.telegram.org/bot<bot_token>/sendMessage' --header 'Content-Type: application/json' --data '{"chat_id": "<my_chat_id>", "text": "<last_message>"}'"
              }
            ]
          }
        ]
      }
    }
    Самописные уведомления от Claude Code в Telegram - 4

    command вызывает баш-скрипт, отправлющий сообщение вам в личку. Так вы моментально поймете, что задача завершена или требует внимания.

    agent вызывает суб-агента, который следом через пару секунд присылает вам отчет по проделанной работе. При этом взаимодействие с основным агентом не блокируется. В промпте я зашил сейф-гард на <= 200 слов, чтобы не получить отлуп от API телеги на длину сообщения.

  9. Тестируем. Просим агента что-то сделать и мониторим телеграм:

    Самописные уведомления от Claude Code в Telegram - 5
  10. Вы получите сообщение от агента с призывом к действию.

    Итог
  11. Когда агент завершит задачу, вы увидите, что начинают отрабатывать Stop хуки.

    Самописные уведомления от Claude Code в Telegram - 7
  12. Следом вы получите два сообщения

  • Задача завершена

  • Краткую выжимку о проделанной работе

Самописные уведомления от Claude Code в Telegram - 8

Итог

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

Обязательно посмотрите полную доку о хуках от Anthropic, что я указал в статье. Там тонна информации: на события можно вешать промпты, запреты инструментов, обработку ошибок, мониторинг и тд. Пользуйтесь!

Автор: myshkin_does_it

Источник

Rambler's Top100