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

Уведомления о завершении хода OpenAI Codex

OpenAI Codex может вызывать программу после завершения хода агента через параметр notify. Скрипт ниже отправляет последний ответ Codex в Депешер, чтобы вы могли отойти от терминала во время работы агента. Механизм и формат события описаны в официальной документации Codex.

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

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

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

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

Сохраните файл notify-depesher.py, например в ~/.codex. Пример отправляет только последний ответ, а не всю историю диалога:

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.loads(sys.argv[1])
if event.get("type") != "agent-turn-complete":
    raise SystemExit(0)

message = event.get("last-assistant-message") or "Codex завершил ход"
send_notification(message)

Укажите notify в конфигурации

Добавьте параметр на верхнем уровне ~/.codex/config.toml, до секций вида [имя]. Если notify уже существует, измените имеющуюся запись:

toml
notify = ["python3", "/home/user/.codex/notify-depesher.py"]

Замените путь абсолютным путём к своему скрипту. На Windows укажите доступный Python и путь к файлу, используя в TOML прямые слеши, например C:/Users/YourName/.codex/notify-depesher.py.

Проверьте настройку

Сначала вызовите обработчик вручную. Пример команды для Bash:

bash
python3 /home/user/.codex/notify-depesher.py   '{"type":"agent-turn-complete","last-assistant-message":"Проверка уведомления Codex"}'

Проверьте историю входящего канала и сообщение у получателя. Затем запустите новую сессию Codex и дайте короткое задание. После ответа должно прийти уведомление.

Что означает это уведомление

agent-turn-complete означает завершение хода, а не доказательство успешности всех действий агента. Оцените результат по тексту ответа. Запросы разрешений не покрываются этим обработчиком; встроенные уведомления терминала tui.notifications настраиваются отдельно от notify.

Если ручной запуск работает, а Codex не отправляет сообщение, проверьте расположение notify в TOML, путь к Python и скрипту. Ошибки HTTP и настройки получателей разбираются в диагностике доставки.