From 2ecf0fd8352657feff8c2bdc21b3613fb4fe079b Mon Sep 17 00:00:00 2001 From: Zekey Huang Date: Sun, 9 Aug 2026 21:34:12 -0400 Subject: [PATCH 1/3] Add warning when optimize_query is used with non-semantic search modes. - Logs warning if optimize_query=True but search_mode is KEYWORD or HYBRID - addresses issue #252 (option 4) --- V0/agent_memory_server/long_term_memory.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/V0/agent_memory_server/long_term_memory.py b/V0/agent_memory_server/long_term_memory.py index 7aa7b259..149c5aab 100644 --- a/V0/agent_memory_server/long_term_memory.py +++ b/V0/agent_memory_server/long_term_memory.py @@ -1434,6 +1434,12 @@ async def search_long_term_memories( # preserve the literal text for lexical matching. search_query = text optimized_applied = False + + if optimize_query and search_mode != SearchModeEnum.SEMANTIC: + # log a message? + logger.warning(f"optimize_query=True is only supported for semantic search, but search_mode='{search_mode.value}'") + + if optimize_query and text and search_mode == SearchModeEnum.SEMANTIC: search_query = await optimize_query_for_vector_search(text) optimized_applied = True From 13c1454b0accbf68111cd1c772f440286f9938cc Mon Sep 17 00:00:00 2001 From: Zekey Huang Date: Tue, 11 Aug 2026 14:14:49 -0400 Subject: [PATCH 2/3] Clean up partition summaries when deleting summary views. When SummaryView is deleted, remove all associated computed partition summaries using SCAN to find matching keys. Fix #229 --- V0/agent_memory_server/summary_views.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/V0/agent_memory_server/summary_views.py b/V0/agent_memory_server/summary_views.py index 6adf5f20..3cc973cb 100644 --- a/V0/agent_memory_server/summary_views.py +++ b/V0/agent_memory_server/summary_views.py @@ -150,11 +150,26 @@ async def delete_summary_view(view_id: str) -> None: Stored partition summaries are left as-is for now; they can be cleaned up in a later pass if needed. """ + cursor = 0 redis = await get_redis_conn() await redis.delete(_config_key(view_id)) await redis.srem(_SUMMARY_VIEW_INDEX_KEY, view_id) + pattern = _summary_key(view_id, "*") + + while True: + cursor, keys = await redis.scan(cursor=cursor, match=pattern, count=100) + + for key in keys: + await redis.delete(key) + + if cursor == 0: + break + + + + async def save_partition_result(result: SummaryViewPartitionResult) -> None: """Persist a single partition result for a SummaryView.""" From 7452f2e03b14299a70f04790ceeca5b4fc9807cf Mon Sep 17 00:00:00 2001 From: Zekey Huang Date: Tue, 11 Aug 2026 14:16:13 -0400 Subject: [PATCH 3/3] --amend --no-edit --- V0/agent_memory_server/summary_views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/V0/agent_memory_server/summary_views.py b/V0/agent_memory_server/summary_views.py index 3cc973cb..6c612934 100644 --- a/V0/agent_memory_server/summary_views.py +++ b/V0/agent_memory_server/summary_views.py @@ -167,10 +167,6 @@ async def delete_summary_view(view_id: str) -> None: if cursor == 0: break - - - - async def save_partition_result(result: SummaryViewPartitionResult) -> None: """Persist a single partition result for a SummaryView."""