inngest-agents
Этот навык Inngest предназначен для durable AI agents и агентных workflow, которым нужно переживать таймауты HTTP, деплои, падения процесса, ошибки провайдера и ожидание внешнего события. В центре документа находятся AgentKit, createAgent, вызовы моделей через Inngest step.ai, обычные шаги step.run, ожидание step.waitForEvent или step.waitForSignal, realtime-прогресс, ограничения провайдеров и Agent Evals. Подход применим к tool-calling loop, support agent, research agent, multi-agent network и human-in-the-loop review. Базовая архитектура разделяет быстрый HTTP-вход и долговыполняемую функцию Inngest. Серверный слой валидирует auth, при необходимости сохраняет намерение пользователя, создаёт событие со стабильным id и быстро отвечает. Inngest function владеет запуском агента; состояние и внешние данные загружаются внутри step.run. AgentKit создаётся внутри функции или через factory, модельный inference идёт через AgentKit и step.ai, а побочные эффекты инструментов — через отдельные step.run или durable tool handlers. Такой разрез позволяет повторно использовать успешно завершённый шаг, не повторяя дорогой model call из-за более поздней ошибки. Для короткого старта источник предлагает один небольшой typed function: обработать support/ticket.created, загрузить ticket в шаге, создать AgentKit writer, вызвать модель и сохранить summary отдельным шагом. Более сложные сети и дополнительные инструменты стоит добавлять после проверки single-agent пути. Внешние side effects должны иметь стабильный idempotency key; параметры инструментов нужно валидировать схемой, а tenant и user брать из authenticated event data, не из текста, который сгенерировала модель. Выход шага должен быть достаточно компактным для хранения в состоянии функции. Ожидание подтверждения строится через durable wait, а не через polling базы или память процесса. В примере step.waitForEvent ждёт support/reply.approved с timeout и match по ticketId; при истечении срока выполняется отдельный шаг ручной проверки, а после подтверждения отправляется ответ с approvalId. Для realtime в v4 используются step.realtime.publish или inngest.realtime.publish внутри существующего шага. Документ отдельно предостерегает не ставить старый v3-пакет @inngest/realtime и не строить единственный WebSocket в процессе, который может завершиться раньше durable function. Для стоимости и надёжности применяются account-scoped concurrency, provider throttle, tenant keys и детерминированные event IDs. Agent Evals нужен, когда требуется оценивать качество, сравнивать промпты или модели, хранить sessions, добавлять direct scoring или deferred scorers. Inngest обычно избыточен для одного короткого read-only model call без side effects и durable progress; для UI autocomplete потеря запроса может быть приемлемой. Ограничения навыка также важны: он не выбирает автоматически provider, не делает внешний tool безопасным, не устраняет ошибки IAM или API и не заменяет тестирование схем, duplicate events и финальных side effects. В brownfield-проекте сначала нужно найти model calls, in-memory loops, approval polling и side effects, затем переносить триггер, модель, инструменты и ожидания небольшими проверяемыми шагами.
Для чего подходит
- Durable AI agents и long-running workflows
- Multi-agent orchestration и tool calls
- Human approval, retries и realtime progress
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/inngest/inngest-skills/tree/main/skills/inngest-agents