MCPcopy Create free account
hub / github.com/BAI-LAB/MemoryOS / evict_lfu

Method evict_lfu

memoryos-pypi/mid_term.py:69–99  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

67 # self.save() # Avoid saving on every minor update; save at higher level operations
68
69 def evict_lfu(self):
70 if not self.access_frequency or not self.sessions:
71 return
72
73 lfu_sid = min(self.access_frequency, key=self.access_frequency.get)
74 print(f"MidTermMemory: LFU eviction. Session {lfu_sid} has lowest access frequency.")
75
76 if lfu_sid not in self.sessions:
77 del self.access_frequency[lfu_sid] # Clean up access frequency if session already gone
78 self.rebuild_heap()
79 return
80
81 session_to_delete = self.sessions.pop(lfu_sid) # Remove from sessions
82 del self.access_frequency[lfu_sid] # Remove from LFU tracking
83
84 # Clean up page connections if this session's pages were linked
85 for page in session_to_delete.get("details", []):
86 prev_page_id = page.get("pre_page")
87 next_page_id = page.get("next_page")
88 # If a page from this session was linked to an external page, nullify the external link
89 if prev_page_id and not self.get_page_by_id(prev_page_id): # Check if prev page is still in memory
90 # This case should ideally not happen if connections are within sessions or handled carefully
91 pass
92 if next_page_id and not self.get_page_by_id(next_page_id):
93 pass
94 # More robustly, one might need to search all other sessions if inter-session linking was allowed
95 # For now, assuming internal consistency or that MemoryOS class manages higher-level links
96
97 self.rebuild_heap()
98 self.save()
99 print(f"MidTermMemory: Evicted session {lfu_sid}.")
100
101 def add_session(self, summary, details, summary_keywords=None):
102 session_id = generate_id("session")

Callers 1

add_sessionMethod · 0.95

Calls 3

rebuild_heapMethod · 0.95
get_page_by_idMethod · 0.95
saveMethod · 0.95

Tested by

no test coverage detected