mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-29 18:46:59 +00:00
_fetch_thread_context() caches per-thread Slack history under a 60-second TTL, but expired entries are never removed. On the current adapter this is worse than when first reported: each entry now also retains the raw conversations.replies payloads (messages) for watermark re-formatting, so a busy multi-channel workspace accumulates full message lists forever. _bot_message_ts, _mentioned_threads, and _assistant_threads all enforce a MAX constant with active eviction in the same __init__; _thread_context_cache had the TTL declared but no matching eviction path. Fix: add _THREAD_CACHE_MAX = 2500 and purge expired entries (fetched_at older than _THREAD_CACHE_TTL) whenever a new write pushes the cache past the limit. TTL-based eviction is used instead of LRU because fresh entries are still needed; evicting them would immediately re-trigger a rate-limited conversations.replies call. Adds two unit tests: one verifying stale entries are purged on overflow, one verifying fresh entries survive. Reapplied from #23375 onto the current adapter (moved to plugins/platforms/slack/adapter.py; cache entries now carry raw message payloads and parent_user_id). |
||
|---|---|---|
| .. | ||
| dingtalk | ||
| discord | ||
| feishu | ||
| google_chat | ||
| homeassistant | ||
| irc | ||
| line | ||
| matrix | ||
| mattermost | ||
| ntfy | ||
| photon | ||
| raft | ||
| simplex | ||
| slack | ||
| sms | ||
| teams | ||
| telegram | ||
| wecom | ||