From 814102e9219d7e53c9d23c9fe6be87f983e7e79b Mon Sep 17 00:00:00 2001 From: AllfatherHatt Date: Fri, 21 Feb 2025 00:30:35 +0100 Subject: [PATCH] Trying to add memory retention --- reginaldCog/reginald.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/reginaldCog/reginald.py b/reginaldCog/reginald.py index 1b9834b..e61e96a 100644 --- a/reginaldCog/reginald.py +++ b/reginaldCog/reginald.py @@ -97,24 +97,29 @@ class ReginaldCog(commands.Cog): memory.append({"user": user_name, "content": prompt}) memory.append({"user": "Reginald", "content": response_text}) - if len(memory) > self.short_term_memory_limit: - summary = await self.summarize_memory(memory) - if channel_id not in mid_memory: - mid_memory[channel_id] = [] + if len(memory) > self.short_term_memory_limit: + summary = await self.summarize_memory(memory) - mid_memory[channel_id].append({ - "timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), - "topics": self.extract_topics_from_summary(summary), - "summary": summary - }) + if channel_id not in mid_memory: + mid_memory[channel_id] = [] - if len(mid_memory[channel_id]) > 10: # Keep only last 10 summaries - mid_memory[channel_id].pop(0) + mid_memory[channel_id].append({ + "timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), + "topics": self.extract_topics_from_summary(summary), + "summary": summary + }) - memory = memory[-100:] + if len(mid_memory[channel_id]) > 10: # Keep only last 10 summaries + mid_memory[channel_id].pop(0) - short_memory[channel_id] = memory + # ✅ Only prune short-term memory if a new summary was made + retention_ratio = 0.25 # Keep 25% of messages for immediate continuity + keep_count = max(1, int(len(memory) * retention_ratio)) # Keep at least 1 message + memory = memory[-keep_count:] # Remove oldest 75%, keep recent + + + short_memory[channel_id] = memory await ctx.send(response_text[:2000])