# NousResearch/hermes-agent · QQ Bot WebSocket heartbeat and reconnection issues

## Open now

- 3 issues, 3 PRs open on GitHub.
- #19648: QQ Bot: WebSocket disconnects every ~60s, gateway eventually hangs
- #19821: \[Bug\]: QQ Bot WebSocket silently dies — adapter waits on dead connection for 18+ hours
- #20531: fix(qqbot): WebSocket disconnects every 60–90 seconds — add transport-level heartbeat
- PR #19977: fix(qqbot): reconnect on missed heartbeat ACK
- PR #20534: fix(qqbot): enable websocket transport heartbeat
- PR #47586: fix(qqbot): heartbeat ACK tracking and message timeout watchdog (#21633)

Multiple bug reports and fix attempts addressing QQ Bot WebSocket connections silently dying or disconnecting, with work toward heartbeat tracking, ACK timeouts, and automatic reconnection to detect and recover from dead connections.

## TL;DR

- 9 member(s): 3 open issue(s), 1 closed issue(s), 3 open PR(s), 0 merged PR(s), 2 PR(s) closed without merging.
- No fix has been merged to main; one or more PRs were attempted (see below).
- **Recommended:** review the prior/competing PR(s) below. A fix was attempted but not merged; your case may extend or revive that work.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.18`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Open related issues

- #19648: QQ Bot: WebSocket disconnects every ~60s, gateway eventually hangs
- #19821: \[Bug\]: QQ Bot WebSocket silently dies — adapter waits on dead connection for 18+ hours
- #20531: fix(qqbot): WebSocket disconnects every 60–90 seconds — add transport-level heartbeat

## Closed / duplicate issues

- #21633: \[Bug\]: QQ Bot WebSocket silently dies — no reconnection after heartbeat ACK timeout

## Prior & competing PRs

- **#19977: fix(qqbot): reconnect on missed heartbeat ACK**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `gateway/platforms/qqbot/adapter.py`, `tests/gateway/test_qqbot.py`
- **#20534: fix(qqbot): enable websocket transport heartbeat**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `gateway/platforms/qqbot/adapter.py`, `gateway/platforms/qqbot/constants.py`, `tests/gateway/test_qqbot.py`
- **#22499: fix(qqbot): enable WS-level heartbeat to detect half-open connections**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#20534`, `#21633`
- **#47586: fix(qqbot): heartbeat ACK tracking and message timeout watchdog (#21633)**. open
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#15648`, `#21633`, `#15648`, `#21633`, `#19977`, `#38848`
  - files: `gateway/platforms/qqbot/adapter.py`
- **#116750: fix(qqbot): reconnect after heartbeat ACK timeout**. closed without merge
  - maintainer direction: category `uncategorized`; implication `needs_llm`; refs `#47586`, `#21633`

## Fix status

- No merged fix on record.
- Subsystem: `gateway`
