Skip to content

Bug report #1652

Description

@Alex-Van26

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

  1. Create a group chat room (e.g., "油管项目组")
  2. Add 2+ agents (e.g., yt-prod, yt-analytics, yt-content, yt-ops)
  3. Send a message in the room
  4. 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

  1. The IPC bridge workers (hermes_bridge.py --worker-profile <name>) connect successfully
  2. Context estimates show proper processing (build → final phases)
  3. The final LLM response is generated but never routed back through the WebSocket to the browser
  4. After prolonged operation, all agents disconnect from rooms simultaneously
  5. Room data is stored in memory (not persisted to SQLite) → restart loses room state
  6. The room's triggerTokens (100000) is never exceeded despite context growth

Suggested Fix Areas

  1. Response delivery pipeline after "phase: final" — trace why the response is generated but not sent
  2. WebSocket message routing from bridge worker back to browser client
  3. Agent reconnection logic — should retry more aggressively
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions