Hermes Web UI Group Chat Bug Report
Summary
Group chat (beta) agents process messages (reach "final" phase) but responses are not delivered back to the chat UI.
Environment
- Hermes Web UI version: 0.6.15 (also tested on 0.6.17)
- Hermes Agent: latest (git install)
- Platform: macOS (ARM64)
- Node.js: v24.16.0
- Browser: (user tested on standard browsers)
- LLM Provider: DeepSeek (deepseek-v4-flash)
Steps to Reproduce
- Create a group chat room (e.g., "油管项目组")
- Add 2+ agents (e.g., yt-prod, yt-analytics, yt-content, yt-ops)
- Send a message in the room
- Observe that agents process the message (visible in server.log) but responses are never delivered to the chat UI
Expected Behavior
Agents' responses should appear in the group chat room after processing.
Actual Behavior
- Agents successfully join the room:
[AgentClients] 视频制作 joined room: mqiccohkv4fmsq
- Agents process context and reach "final" phase:
"phase":"final","source":"cache","msg":"[GroupChat] full context estimate"
- But the final response is never delivered to the chat UI
- No error messages are logged after "phase: final"
- After some time (hours), agents get "Not in room" errors:
[AgentClients] 视频制作: error handling message: Not in room
- Bridge worker sockets exist but responses don't flow through
Log Evidence
Normal flow (agents connected):
[AgentClients] 视频制作 joined room: mqiccohkv4fmsq
[GroupChat] full context estimate → phase: build → decision: skip
[GroupChat] full context estimate → phase: final
→ *** NO RESPONSE DELIVERED *** ←
After degradation (hours later):
[AgentClients] 视频制作: error handling message: Not in room
[AgentClients] 视频制作: failed to send error message: Not in room
Key Observations
- The IPC bridge workers (
hermes_bridge.py --worker-profile <name>) connect successfully
- Context estimates show proper processing (build → final phases)
- The final LLM response is generated but never routed back through the WebSocket to the browser
- After prolonged operation, all agents disconnect from rooms simultaneously
- Room data is stored in memory (not persisted to SQLite) → restart loses room state
- The room's
triggerTokens (100000) is never exceeded despite context growth
Suggested Fix Areas
- Response delivery pipeline after "phase: final" — trace why the response is generated but not sent
- WebSocket message routing from bridge worker back to browser client
- Agent reconnection logic — should retry more aggressively
- Room state persistence — currently memory-only, should write to SQLite for crash recovery
How to Reproduce Easily
# Create a room with 2+ agents, send a message, watch server.log
tail -f ~/.hermes-web-ui/logs/server.log | grep -E "joined room|final|error|Not in room"
Contact
Submitter: 老范 (Alex) — Hermes Agent user from China
Hermes Web UI Group Chat Bug Report
Summary
Group chat (beta) agents process messages (reach "final" phase) but responses are not delivered back to the chat UI.
Environment
Steps to Reproduce
Expected Behavior
Agents' responses should appear in the group chat room after processing.
Actual Behavior
[AgentClients] 视频制作 joined room: mqiccohkv4fmsq"phase":"final","source":"cache","msg":"[GroupChat] full context estimate"[AgentClients] 视频制作: error handling message: Not in roomLog Evidence
Normal flow (agents connected):
After degradation (hours later):
Key Observations
hermes_bridge.py --worker-profile <name>) connect successfullytriggerTokens(100000) is never exceeded despite context growthSuggested Fix Areas
How to Reproduce Easily
Contact
Submitter: 老范 (Alex) — Hermes Agent user from China