mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-24 16:54:43 +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. |
||
|---|---|---|
| .. | ||
| dingtalk | ||
| discord | ||
| feishu | ||
| google_chat | ||
| homeassistant | ||
| irc | ||
| line | ||
| matrix | ||
| mattermost | ||
| ntfy | ||
| photon | ||
| raft | ||
| simplex | ||
| slack | ||
| sms | ||
| teams | ||
| telegram | ||
| wecom | ||