mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-23 16:36:23 +00:00
Once a thread has an active session, a later reply that explicitly @mentions the bot did not re-fetch Slack thread context, so the agent missed messages added to the thread after the initial hydrate (e.g. other bots/integrations replying in multi-agent workflows). The explicit mention is a fresh intent signal and now triggers a refresh. Mechanics: - SessionEntry gains a small persisted metadata dict, with SessionStore.get/set_session_metadata accessors (survives gateway restarts via the routing index). - The adapter stores a per-thread consumption watermark (slack_thread_watermark:<channel>:<thread>) recording the last thread ts the session consumed. - On explicit mention in an active thread, _fetch_thread_context runs with force_refresh=True (bypassing the TTL cache) and after_ts=<the watermark>, so only NOT-yet-seen messages are injected — as part of the new turn via channel_context. Prior conversation history is never rewritten, preserving prompt caching. - _fetch_thread_context caches raw conversations.replies payloads so watermark-scoped re-formatting needs no extra API call; formatting is split into _format_thread_context. - Thread session keys are built once in _build_thread_session_key (shared by the wake gate and the watermark accessors), still via build_session_key(). Fixes #23918. Supersedes #62299 (keyword-triggered refresh limited to 'investigate' prompts — the mention signal is the general fix). Salvaged from #23927 by @heathley, rebased onto the plugin adapter layout and rerouted through channel_context instead of text-prepend. |
||
|---|---|---|
| .. | ||
| browser | ||
| context_engine | ||
| cron_providers | ||
| dashboard_auth | ||
| disk-cleanup | ||
| google_meet | ||
| hermes-achievements | ||
| image_gen | ||
| kanban | ||
| memory | ||
| model-providers | ||
| observability | ||
| platforms | ||
| security-guidance | ||
| spotify | ||
| teams_pipeline | ||
| video_gen | ||
| web | ||
| __init__.py | ||
| plugin_utils.py | ||