Уведомления о завершении хода 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 и настройки получателей разбираются в диагностике доставки.