Pure-media messages are answered before the user's follow-up text arrives — consider holding them for the next text (with an ack)
Environment
- Hermes v0.21.5 (git checkout); feishu / qqbot / weixin gateways.
Symptom
A user sends a screenshot and then immediately types their actual question. The media is processed on its own schedule (feishu auto-flushes a media batch after a fixed delay; qqbot/weixin dispatch immediately), so the agent answers the image first — "what is this?" — and the question then arrives as a separate, context-less turn. While typing, the user also gets no acknowledgment that the screenshot was received.
Root cause / design note
The inbound paths treat media as independent of the text that explains it: feishu has separate text and media batch pipelines that never merge cross-message, and there is no "hold media and merge it into the next text" mode anywhere.
Proposed fix
A per-chat pending-media pool for the three IM adapters: a message whose only content is media (no raw text / voice transcript / quoted block) is cached and acked with " 收到"; the chat's next text flushes the cache into itself — images as real attachments (so image routing decides native vs text), documents as "[Media: …]" refs. Voice stays exempt so central STT keeps working. PR to follow.
Source: NousResearch/hermes-agent