Игорь Градов
Игорь Градов
5 мин
ai

Что такое ИИ-агент без потери ответа: agent-hub переживает сбой Telegram и перезапуск

Разработчик agent-hub добавил в приложение очередь доставки финальных ответов: теперь результат ИИ-агента переживает сбой Telegram и перезапуск программы, и задачу не нужно запускать заново ценой времени и токенов.

Что такое ИИ-агент без потери ответа: agent-hub переживает сбой Telegram и перезапуск
Почему это важно

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

Agent-hub написан на Rust (язык программирования для надёжных системных программ). Он запускает ИИ-агентов прямо на компьютере пользователя, а общаться с ними можно через темы Telegram-группы. В прошлой статье автор рассказывал, как запрос агента превращается в кнопку «Разрешить». Новая статья посвящена очереди доставки ответов, и это готовая схема для русскоязычной аудитории, которая привыкла работать в группах с темами.

Почему ответ ИИ-агента теряется, хотя работа сделана?

Если коротко, что такое ИИ-агент: это нейросеть, которая не просто отвечает текстом, а сама выполняет шаги задачи, например правит файлы и проверяет результат. Агент закончил работу, проверил её и написал ответ, но Telegram в этот момент недоступен. Для агента задача закрыта, а в чат не пришёл ни результат, ни сообщение об ошибке.

Перезапуск задачи здесь не выход. Он тратит время и токены (единицы текста, за которые считают работу модели), а агент может ещё раз изменить файлы. По словам автора, повторный запрос к модели создаёт новый ход с непредсказуемым результатом.

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

Что понадобится для такой схемы?

  • Приложение, которое запускает агентов локально и связывает их с Telegram (в примере это agent-hub).
  • Telegram-группа с темами: ответ возвращается в ту тему, откуда пришёл запрос.
  • Локальный файл для хранения состояния. В agent-hub это topics.results.json, где лежит и последний ответ для команды /last.
  • Готовность к тому, что дубликаты сообщений возможны. Доставку ровно один раз автор не обещает.

Как очередь доставки работает по шагам?

  1. Агент завершает ход, хаб получает финальный текст и сохраняет его в очередь до обращения к Telegram.
  2. В очередь попадают только последовательные текстовые блоки после последнего отображаемого вызова инструмента. Если вызовов не было, сохраняется весь текст хода.
  3. Текст сразу режется на части, и на диск ложатся уже готовые части, а не исходная разметка Markdown.
  4. Отправитель находит готовую запись для текущей группы, резервирует её и сохраняет это состояние на диске.
  5. Текущая часть уходит в исходную тему, затем сохраняется подтверждение или ошибка.
  6. К следующей части отправитель переходит только после сохранения прогресса. Когда подтверждена последняя часть, запись удаляется, но ответ остаётся доступен через /last.

Состояние доставки автор хранит в такой структуре:

pub struct Pending {
    result: SavedResult,
    chunks: Vec<Chunk>,
    next: usize,
    failures: u8,
    revision: u32,
    due: i64,
    state: State,
}

Поле next указывает на следующую неподтверждённую часть, failures считает неудачи, due задаёт время следующей попытки. Поле revision защищает от устаревших действий над изменившейся записью.

Ограничения по времени такие:

  • резервирование записи действует 60 секунд, чтобы после обрыва процесса она не осталась занятой навсегда;
  • запрос к Telegram ограничен 20 секундами;
  • один отправитель посылает не больше одной части в секунду;
  • паузы между попытками при временной ошибке: 5, 15, 30, 60, 120, 300 и 600 секунд, после восьми неудач подряд доставка встаёт до ручного повтора.
Как это выглядит на практике

Ответ агента разбит на три части, каждая помечена номером хода и частью, вида «Ход · часть 2/3». Хаб отправил вторую часть, Telegram её принял, но подтверждение потерялось. Хаб считает отправку неудачной и повторяет часть 2/3. В чате она появится дважды, но с той же меткой, и сразу видно, что это повтор, а не новый ответ агента. Первую часть, подтверждённую раньше, хаб заново не шлёт.

Частые ошибки

Хранить только исходный текст. Если после обновления программы изменится разбивка разметки, сохранённый номер части укажет на другой кусок текста. Ждать, что очередь вернёт всё. Вложения, промежуточные сообщения, вопросы и кнопки разрешений автоматически повторно не доставляются. Переключать группу и искать там старые ответы. Сохранённая группа не меняется вместе с настройками, очередь продолжит работу, только когда исходная группа снова станет текущей. Сокращать паузу, которую назначил сам Telegram. Ручной повтор, удаление ответа и перезапуск не должны её обнулять.

Что делать с этим прямо сейчас, по ролям

Автору Дзена. Если вы поручаете агенту черновики или правку файлов через Telegram, не перезапускайте задачу при пропавшем ответе. Это лишние токены и риск, что агент перепишет уже готовое.

Маркетологу. Любая автоматическая рассылка отчётов агента в чат упирается в ту же проблему. Метка с номером хода и части дешевле, чем разбор, какое сообщение настоящее.

Предпринимателю в РФ и СНГ. Если агенты крутятся на своём компьютере, а связь с Telegram бывает нестабильной, эта схема показывает минимум защиты: сначала запись на диск, потом отправка. Очередь стоит после модели, поэтому от выбора модели она не зависит.

Совет редакции dzen.guru

На мой взгляд, самое ценное в разборе даже не код, а честность: автор прямо пишет, что дубликаты возможны, и делает их узнаваемыми вместо того, чтобы обещать невозможное. Я бы перенёс в свои сценарии три вещи: сохранять результат до отправки, хранить уже нарезанные части и помечать каждую номером. Оговорка: в доступном тексте описание паузы RetryAfter обрывается на фразе о восстановлении после перезапуска, так что эту часть механики стоит дочитать в первоисточнике, прежде чем копировать.

Запускаете ИИ-агентов для своего канала?

В dzen.guru разбираем, как авторам Дзена встроить нейросети в работу без потерянных ответов и лишних трат.

Перейти на dzen.guru
Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Детектор дипфейков встроили в IVA MCU: подмену лица ловят во время созвона, а не после платежа
ai

Детектор дипфейков встроили в IVA MCU: подмену лица ловят во время созвона, а не после платежа

Компании VisionLabs и IVA Technologies встроили детектор дипфейков в российскую платформу видеосвязи IVA MCU, и теперь подмену лица ловят прямо во время…

4 мин
MLSecOps-сканирование находит ИИ-активы в репозитории до релиза: недели ручной работы не нужны
ai

MLSecOps-сканирование находит ИИ-активы в репозитории до релиза: недели ручной работы не нужны

Сканер безопасности ИИ в платформе INFERA AI.SafeCode собирает в один реестр модели, промпты, ИИ-агентов и обучающие данные из репозитория и проверяет их до…

6 мин
InfiniBand отдаёт в работу 52,8% мощности кластера против 34,2% у Ethernet
ai

InfiniBand отдаёт в работу 52,8% мощности кластера против 34,2% у Ethernet

Обучение больших языковых моделей вернуло спрос на InfiniBand, сеть с предсказуемой задержкой, и ниже пошаговый разбор, как выбрать поколение, топологию и…

5 мин