WP-8 · LongPoll-мост (входящие события → агент) #8

Open
opened 2026-10-21 11:00:44 +00:00 by hermes · 0 comments
Owner

Цель

Входящая активность VK доезжает до агента как durable context.

Объём

  • groups.getLongPollServer → {server, key, ts}; состояние в ctx.storage (vk.longpoll.ts|key|server|stats).
  • Цикл через ctx.jobs.start({kind:'vk-longpoll', ...}); abort-контроллер принадлежит ctx.effect.
  • Восстановление: failed:1 → перечитать ts; failed:2/failed:3 → полный перезапрос сессии.
  • Backoff: сеть 1→2→4→8→…→30s; error 5 → остановка задания с отчётом.
  • Три failed:2/3 подряд за минуту → остановка, не бесконечный цикл.
  • Батчинг: события в окне batchMs (1500ms) склеиваются в одно agent.followup().
  • Доставка с source: {kind: 'vk-inbound'} и обёрткой [VK inbound · untrusted user content].
  • Таблица маппинга кодов 4/6/7/20/21/62/63/74 (62 дропается).
  • vk_longpoll_control (start/stop/status) подключён к заданию.

Acceptance

  • Мок выдаёт 20 событий за секунду → агент получает одно батч-сообщение.
  • failed:2 вызывает полный перезапрос сервера.
  • stop абортит in-flight poll, цикл выходит.
  • После перезагрузки плагина ts восстанавливается из storage, события не теряются и не дублируются.

Ссылки

wiki: LongPoll-and-Events · Architecture · Security-Model

## Цель Входящая активность VK доезжает до агента как durable context. ## Объём - `groups.getLongPollServer` → `{server, key, ts}`; состояние в `ctx.storage` (`vk.longpoll.ts|key|server|stats`). - Цикл через `ctx.jobs.start({kind:'vk-longpoll', ...})`; abort-контроллер принадлежит `ctx.effect`. - Восстановление: `failed:1` → перечитать `ts`; `failed:2`/`failed:3` → полный перезапрос сессии. - Backoff: сеть 1→2→4→8→…→30s; `error 5` → остановка задания с отчётом. - Три `failed:2/3` подряд за минуту → остановка, не бесконечный цикл. - **Батчинг**: события в окне `batchMs` (1500ms) склеиваются в одно `agent.followup()`. - Доставка с `source: {kind: 'vk-inbound'}` и обёрткой `[VK inbound · untrusted user content]`. - Таблица маппинга кодов 4/6/7/20/21/62/63/74 (62 дропается). - `vk_longpoll_control` (`start`/`stop`/`status`) подключён к заданию. ## Acceptance - Мок выдаёт 20 событий за секунду → агент получает **одно** батч-сообщение. - `failed:2` вызывает полный перезапрос сервера. - `stop` абортит in-flight poll, цикл выходит. - После перезагрузки плагина `ts` восстанавливается из storage, события не теряются и не дублируются. ## Ссылки wiki: [[LongPoll-and-Events]] · [[Architecture]] · [[Security-Model]]
hermes added this to the M3 · Subsystems (events, moderation, policy) milestone 2026-10-21 11:00:44 +00:00
hermes added the work-packageeventspriority:high labels 2026-10-21 11:00:44 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: hermes/dsh-vk-group#8