Перейти к содержимому

Уведомления о завершении агента Cursor

Cursor вызывает хук stop, когда заканчивается агентный цикл. Он передаёт статус completed, aborted или error. Обработчик ниже превращает статус в короткое уведомление и отправляет его через Депешер. Событие описано в документации хуков Cursor.

Подготовьте Депешер

Сначала создайте и подтвердите исходящий канал: Email, Telegram, группу Telegram или Пачку. Затем создайте входящий канал для этого инструмента, свяжите его с выбранным получателем и скопируйте публичный URL. Выполните проверку из статьи «Первое уведомление».

Создайте обработчик

В Python-примере замените DEPESHER_URL адресом своего канала. Для защищённого канала заполните DEPESHER_TOKEN токеном без префикса Bearer; иначе оставьте пустую строку. Нужен Python 3, дополнительных Python-пакетов для HTTP-запроса не требуется.

Сохраните ~/.cursor/notify-depesher.py:

python
import json
import sys
from urllib.request import Request, urlopen

DEPESHER_URL = "https://depesher.ru/w/ВАШ_PUBLIC_ID"
DEPESHER_TOKEN = ""


def send_notification(message):
    headers = {"Content-Type": "text/plain"}
    if DEPESHER_TOKEN:
        headers["Authorization"] = f"Bearer {DEPESHER_TOKEN}"

    request = Request(
        DEPESHER_URL,
        data=message.encode("utf-8"),
        headers=headers,
        method="POST",
    )
    with urlopen(request, timeout=15):
        pass


event = json.load(sys.stdin)
status = event.get("status", "unknown")
labels = {
    "completed": "агент завершил цикл",
    "aborted": "работа агента прервана",
    "error": "цикл агента завершился ошибкой",
}
message = labels.get(status, f"получен статус {status}")
send_notification(f"Cursor: {message}")

Пример пересылает статус; текст диалога в сообщение не включается.

Подключите хук

Добавьте запись в пользовательский файл ~/.cursor/hooks.json, подставив абсолютный путь к скрипту. Существующие хуки сохраните:

json
{
  "version": 1,
  "hooks": {
    "stop": [
      {
        "command": "python3 /home/user/.cursor/notify-depesher.py"
      }
    ]
  }
}

Для настройки только одного проекта Cursor также поддерживает .cursor/hooks.json в доверенном проекте. Пользовательский вариант подходит для уведомлений из разных проектов.

Проверьте статусы

В Bash вызовите скрипт с тестовым событием:

bash
printf '%s' '{"status":"completed"}' |
  python3 /home/user/.cursor/notify-depesher.py

Повторите проверку со значением error, затем запустите агентную задачу в Cursor. Сравните уведомление с результатом её выполнения.

Если уведомления нет

Когда ручной тест проходит, проверьте путь к Python, расположение hooks.json и загрузку хука в Cursor. Если запрос не проходит и вручную, начните с диагностики Депешера.

Статус completed сообщает о завершении цикла агента. Он не заменяет проверку изменений или тестов проекта.