Skip to content

fix(telegram): quiet operational chatter — cluster 1 (noise/UX) salvage#33151

Merged
teknium1 merged 5 commits into
mainfrom
hermes/hermes-be5653aa
May 27, 2026
Merged

fix(telegram): quiet operational chatter — cluster 1 (noise/UX) salvage#33151
teknium1 merged 5 commits into
mainfrom
hermes/hermes-be5653aa

Conversation

@teknium1

@teknium1 teknium1 commented May 27, 2026

Copy link
Copy Markdown
Contributor

Quiet down three sources of Telegram chat noise so the gateway stops bleeding operational chatter into user-facing chats.

Salvage of three external Telegram UX PRs (cluster 1: noise/chatter) on current main with original authorship preserved.

Changes

  • fix(gateway): hide telegram compaction status noise @sir-ad (fix(gateway): hide telegram compaction status noise #31941)
    Suppresses the "🗜️ Compacting context — summarizing earlier conversation…" status from being delivered to Telegram by adding it to _TELEGRAM_NOISY_STATUS_RE. Em-dash + ASCII-hyphen collapsed into one [—-] alternative (1 regex line instead of 2).

  • fix: ignore Telegram start pings @rdasilva1016-ui (fix: ignore Telegram /start platform pings #31098)
    Telegram auto-sends /start when a user opens the bot / follows a deep link. Hermes was treating it as an unknown command and dumping /help (or worse, interrupting an active agent). Registers start as a gateway_only CommandDef and intercepts on both the running-agent fast-path and the cold-path. Silent no-op.

  • gateway: quiet Telegram operational chatter @houenyang-momo (gateway: quiet Telegram operational chatter #31034)
    Reframes Telegram defaults as final-answer-first for mobile chat:

    • tool_progress: newoff
    • interim_assistant_messages: TrueFalse (new platform key)
    • long_running_notifications: TrueFalse (new global+platform key)
    • busy_ack_detail: TrueFalse (new platform key)
      All opt-back-in via display.platforms.telegram.<key>: true. Other tier-high platforms (Discord, etc.) keep their current chatty defaults.
  • refactor(gateway): drop try/except wrappers around resolve_display_setting — follow-up on top of gateway: quiet Telegram operational chatter #31034.
    Both new display-resolution sites it added (busy_ack_detail + long_running_notifications) wrapped resolve_display_setting() in try/except Exception. The existing 4 call sites in this file don't — the function is safe by contract. Match the established pattern. -16 LOC, no behaviour change.

Validation

tests/gateway/test_display_config.py            ✓
tests/gateway/test_busy_session_ack.py          ✓
tests/gateway/test_run_progress_topics.py       ✓
tests/gateway/test_run_cleanup_progress.py      ✓
tests/gateway/test_telegram_noise_filter.py     ✓
tests/gateway/test_gateway_command_help.py      ✓
tests/gateway/test_session_race_guard.py        ✓
                                              113/113 passing

Closes

Infographic

cluster-1-quiet-telegram

sir-ad and others added 5 commits May 27, 2026 02:24
…tting

The two new display-resolution sites added by #31034 (busy_ack_detail
and long_running_notifications) wrapped resolve_display_setting() in
try/except Exception. The existing 4 call sites in this file don't —
the function is safe by contract. Match the established pattern and
drop the redundant guards. -16 LOC, no behaviour change.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-be5653aa vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 9493 on HEAD, 9493 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5013 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists comp/gateway Gateway runner, session dispatch, delivery platform/telegram Telegram bot adapter comp/cli CLI entry point, hermes_cli/, setup wizard labels May 27, 2026
@teknium1 teknium1 merged commit 4feb181 into main May 27, 2026
26 of 27 checks passed
@teknium1 teknium1 deleted the hermes/hermes-be5653aa branch May 27, 2026 09:41
teknium1 added a commit that referenced this pull request May 27, 2026
…eartbeat in place (#33187)

#33151 flipped THREE Telegram display defaults to false:
  - tool_progress: new -> off            (kept: per-tool stream is too chatty)
  - interim_assistant_messages: T -> F   (REVERTED here)
  - long_running_notifications: T -> F   (REVERTED here)
  - busy_ack_detail: T -> F              (kept: verbose iteration counter)

The two reverts were wrong. interim_assistant_messages = the model's REAL
words mid-turn ("I'll inspect the repo first.", "Let me check both files
in parallel"). That is signal, not noise. Suppressing it left Telegram
users staring at "typing..." for the entire turn duration with no
feedback. long_running_notifications = the periodic heartbeat. Silent
agent for 30 minutes is worse than one bubble updating every 3 minutes.

Changes:
  - gateway/display_config.py: Telegram tier-1 inbox keeps both defaults
    on (only tool_progress and busy_ack_detail stay off).
  - gateway/run.py _notify_long_running(): edit a single heartbeat
    message in place (where the adapter supports it) instead of posting
    a new "Still working..." bubble each interval. Telegram, Discord,
    Slack, Matrix all qualify. Falls back to send-new when edit fails.
  - gateway/run.py: tighten heartbeat text. "⏳ Still working... (12 min
    elapsed — iteration 21/60, running: terminal)" -> "⏳ Working — 12
    min, terminal". Verbose iteration detail moves behind busy_ack_detail
    (one knob now controls both busy acks AND heartbeat verbosity).
  - tests/, cli-config.yaml.example, website/docs/user-guide/messaging:
    updated to reflect the corrected story.
mathias3 pushed a commit to mathias3/hermes-agent that referenced this pull request May 28, 2026
…eartbeat in place (NousResearch#33187)

NousResearch#33151 flipped THREE Telegram display defaults to false:
  - tool_progress: new -> off            (kept: per-tool stream is too chatty)
  - interim_assistant_messages: T -> F   (REVERTED here)
  - long_running_notifications: T -> F   (REVERTED here)
  - busy_ack_detail: T -> F              (kept: verbose iteration counter)

The two reverts were wrong. interim_assistant_messages = the model's REAL
words mid-turn ("I'll inspect the repo first.", "Let me check both files
in parallel"). That is signal, not noise. Suppressing it left Telegram
users staring at "typing..." for the entire turn duration with no
feedback. long_running_notifications = the periodic heartbeat. Silent
agent for 30 minutes is worse than one bubble updating every 3 minutes.

Changes:
  - gateway/display_config.py: Telegram tier-1 inbox keeps both defaults
    on (only tool_progress and busy_ack_detail stay off).
  - gateway/run.py _notify_long_running(): edit a single heartbeat
    message in place (where the adapter supports it) instead of posting
    a new "Still working..." bubble each interval. Telegram, Discord,
    Slack, Matrix all qualify. Falls back to send-new when edit fails.
  - gateway/run.py: tighten heartbeat text. "⏳ Still working... (12 min
    elapsed — iteration 21/60, running: terminal)" -> "⏳ Working — 12
    min, terminal". Verbose iteration detail moves behind busy_ack_detail
    (one knob now controls both busy acks AND heartbeat verbosity).
  - tests/, cli-config.yaml.example, website/docs/user-guide/messaging:
    updated to reflect the corrected story.
Bryce-huang pushed a commit to wbkunlun/hermes-agent that referenced this pull request May 29, 2026
…eartbeat in place (NousResearch#33187)

NousResearch#33151 flipped THREE Telegram display defaults to false:
  - tool_progress: new -> off            (kept: per-tool stream is too chatty)
  - interim_assistant_messages: T -> F   (REVERTED here)
  - long_running_notifications: T -> F   (REVERTED here)
  - busy_ack_detail: T -> F              (kept: verbose iteration counter)

The two reverts were wrong. interim_assistant_messages = the model's REAL
words mid-turn ("I'll inspect the repo first.", "Let me check both files
in parallel"). That is signal, not noise. Suppressing it left Telegram
users staring at "typing..." for the entire turn duration with no
feedback. long_running_notifications = the periodic heartbeat. Silent
agent for 30 minutes is worse than one bubble updating every 3 minutes.

Changes:
  - gateway/display_config.py: Telegram tier-1 inbox keeps both defaults
    on (only tool_progress and busy_ack_detail stay off).
  - gateway/run.py _notify_long_running(): edit a single heartbeat
    message in place (where the adapter supports it) instead of posting
    a new "Still working..." bubble each interval. Telegram, Discord,
    Slack, Matrix all qualify. Falls back to send-new when edit fails.
  - gateway/run.py: tighten heartbeat text. "⏳ Still working... (12 min
    elapsed — iteration 21/60, running: terminal)" -> "⏳ Working — 12
    min, terminal". Verbose iteration detail moves behind busy_ack_detail
    (one knob now controls both busy acks AND heartbeat verbosity).
  - tests/, cli-config.yaml.example, website/docs/user-guide/messaging:
    updated to reflect the corrected story.
#AI commit#
@cwagner22

Copy link
Copy Markdown

Hi, I've been having problems for days with agents losing context, and it turns out the compaction was failing so the whole context was removed every time. I don't understand why we are filtering compaction error? And even compaction notices are important to realize that the agent will lose context...

mosaiq-systems pushed a commit to mosaiq-systems/hermes-agent that referenced this pull request May 29, 2026
…eartbeat in place (NousResearch#33187)

NousResearch#33151 flipped THREE Telegram display defaults to false:
  - tool_progress: new -> off            (kept: per-tool stream is too chatty)
  - interim_assistant_messages: T -> F   (REVERTED here)
  - long_running_notifications: T -> F   (REVERTED here)
  - busy_ack_detail: T -> F              (kept: verbose iteration counter)

The two reverts were wrong. interim_assistant_messages = the model's REAL
words mid-turn ("I'll inspect the repo first.", "Let me check both files
in parallel"). That is signal, not noise. Suppressing it left Telegram
users staring at "typing..." for the entire turn duration with no
feedback. long_running_notifications = the periodic heartbeat. Silent
agent for 30 minutes is worse than one bubble updating every 3 minutes.

Changes:
  - gateway/display_config.py: Telegram tier-1 inbox keeps both defaults
    on (only tool_progress and busy_ack_detail stay off).
  - gateway/run.py _notify_long_running(): edit a single heartbeat
    message in place (where the adapter supports it) instead of posting
    a new "Still working..." bubble each interval. Telegram, Discord,
    Slack, Matrix all qualify. Falls back to send-new when edit fails.
  - gateway/run.py: tighten heartbeat text. "⏳ Still working... (12 min
    elapsed — iteration 21/60, running: terminal)" -> "⏳ Working — 12
    min, terminal". Verbose iteration detail moves behind busy_ack_detail
    (one knob now controls both busy acks AND heartbeat verbosity).
  - tests/, cli-config.yaml.example, website/docs/user-guide/messaging:
    updated to reflect the corrected story.
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
…eartbeat in place (NousResearch#33187)

NousResearch#33151 flipped THREE Telegram display defaults to false:
  - tool_progress: new -> off            (kept: per-tool stream is too chatty)
  - interim_assistant_messages: T -> F   (REVERTED here)
  - long_running_notifications: T -> F   (REVERTED here)
  - busy_ack_detail: T -> F              (kept: verbose iteration counter)

The two reverts were wrong. interim_assistant_messages = the model's REAL
words mid-turn ("I'll inspect the repo first.", "Let me check both files
in parallel"). That is signal, not noise. Suppressing it left Telegram
users staring at "typing..." for the entire turn duration with no
feedback. long_running_notifications = the periodic heartbeat. Silent
agent for 30 minutes is worse than one bubble updating every 3 minutes.

Changes:
  - gateway/display_config.py: Telegram tier-1 inbox keeps both defaults
    on (only tool_progress and busy_ack_detail stay off).
  - gateway/run.py _notify_long_running(): edit a single heartbeat
    message in place (where the adapter supports it) instead of posting
    a new "Still working..." bubble each interval. Telegram, Discord,
    Slack, Matrix all qualify. Falls back to send-new when edit fails.
  - gateway/run.py: tighten heartbeat text. "⏳ Still working... (12 min
    elapsed — iteration 21/60, running: terminal)" -> "⏳ Working — 12
    min, terminal". Verbose iteration detail moves behind busy_ack_detail
    (one knob now controls both busy acks AND heartbeat verbosity).
  - tests/, cli-config.yaml.example, website/docs/user-guide/messaging:
    updated to reflect the corrected story.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/gateway Gateway runner, session dispatch, delivery P2 Medium — degraded but workaround exists platform/telegram Telegram bot adapter type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants