@@ -182,24 +182,6 @@ def __init__(
182182
183183 logger .info (f"Session created: { self .session_id } for user { self .user } " )
184184
185- async def _get_latest_archive_last_msg_time (self ) -> Optional [float ]:
186- """获取上一次归档的最后一条消息的时间戳(毫秒),用于过滤需要提取记忆的消息。"""
187- # 使用 compression_index - 1 获取上一次归档的索引
188- if self ._compression .compression_index <= 1 :
189- return None
190- # 获取上一次归档的目录
191- archive_uri = (
192- f"{ self ._session_uri } /history/archive_{ self ._compression .compression_index - 1 :03d} "
193- )
194- messages = await self ._read_archive_messages (archive_uri )
195- if messages and messages [- 1 ].created_at :
196- # 解析 ISO 时间戳为毫秒
197- from dateutil import parser
198-
199- dt = parser .parse (messages [- 1 ].created_at )
200- return dt .timestamp () * 1000
201- return None
202-
203185 async def load (self ):
204186 """Load session data from storage."""
205187 if self ._loaded :
@@ -468,11 +450,6 @@ async def commit_async(self) -> Dict[str, Any]:
468450 await self ._save_meta ()
469451
470452 self ._compression .original_count += len (messages_to_archive )
471- # 从最新归档中获取上一次归档的时间戳(用于过滤需要提取记忆的消息)
472- previous_archive_time = await self ._get_latest_archive_last_msg_time ()
473- logger .info (
474- f"commit_async: previous_archive_time from archive={ previous_archive_time } , compression_index={ self ._compression .compression_index } "
475- )
476453 logger .info (
477454 f"Archived: { len (messages_to_archive )} messages → "
478455 f"history/archive_{ self ._compression .compression_index :03d} /"
@@ -490,38 +467,14 @@ async def commit_async(self) -> Dict[str, Any]:
490467 owner_user_id = self .ctx .user .user_id ,
491468 )
492469
493- # 只传递上一次归档之后的新消息给 memory extraction
494- # 使用 previous_archive_time 过滤(在设置新时间之前)
495- messages_for_extraction = messages_to_archive
496- logger .info (
497- f"Memory extraction filter: previous_archive_time={ previous_archive_time } , "
498- f"messages_count={ len (messages_to_archive )} "
499- )
500- if previous_archive_time :
501- archive_time_str = datetime .fromtimestamp (
502- previous_archive_time / 1000 , timezone .utc
503- ).isoformat ()
504- # 打印前几条消息的 created_at 用于调试
505- if messages_to_archive :
506- logger .info (
507- f"Debug: first msg created_at={ messages_to_archive [0 ].created_at } , "
508- f"archive_time_str={ archive_time_str } "
509- )
510- messages_for_extraction = [
511- m for m in messages_to_archive if m .created_at and m .created_at > archive_time_str
512- ]
513- logger .info (
514- f"Memory extraction: { len (messages_to_archive )} total -> { len (messages_for_extraction )} new (after { previous_archive_time } )"
515- )
516-
517470 asyncio .create_task (
518471 self ._run_memory_extraction (
519472 task_id = task .task_id ,
520473 archive_uri = archive_uri ,
521- messages = messages_for_extraction ,
474+ messages = messages_to_archive ,
522475 usage_records = usage_snapshot ,
523- first_message_id = messages_for_extraction [0 ].id if messages_for_extraction else "" ,
524- last_message_id = messages_for_extraction [- 1 ].id if messages_for_extraction else "" ,
476+ first_message_id = messages_to_archive [0 ].id if messages_to_archive else "" ,
477+ last_message_id = messages_to_archive [- 1 ].id if messages_to_archive else "" ,
525478 )
526479 )
527480
@@ -790,21 +743,6 @@ async def get_session_context(self, token_budget: int = 128_000) -> Dict[str, An
790743 context = await self ._collect_session_context_components ()
791744 merged_messages = context ["messages" ]
792745
793- # 过滤:只返回上一次归档之后的最新消息(从最新归档获取时间戳)
794- previous_time = await self ._get_latest_archive_last_msg_time ()
795- if previous_time :
796- original_count = len (merged_messages )
797- archive_time_str = datetime .fromtimestamp (
798- previous_time / 1000 , timezone .utc
799- ).isoformat ()
800- merged_messages = [
801- m for m in merged_messages if m .created_at and m .created_at > archive_time_str
802- ]
803- logger .info (
804- f"[get_session_context] filtered messages: { original_count } -> { len (merged_messages )} , "
805- f"after archive time={ previous_time } "
806- )
807-
808746 message_tokens = sum (m .estimated_tokens for m in merged_messages )
809747
810748 # 精简日志:只打印关键信息
@@ -823,7 +761,7 @@ async def get_session_context(self, token_budget: int = 128_000) -> Dict[str, An
823761 if include_latest_overview :
824762 remaining_budget -= latest_archive_tokens
825763
826- # 不再返回 pre_archive_abstracts(只保留 latest_archive_overview)
764+ # pre_archive_abstracts: 保留字段返回空数组,保持 API 向下兼容
827765 included_pre_archive_abstracts : List [Dict [str , str ]] = []
828766 pre_archive_tokens = 0
829767
@@ -837,7 +775,7 @@ async def get_session_context(self, token_budget: int = 128_000) -> Dict[str, An
837775 "latest_archive_overview" : (
838776 latest_archive ["overview" ] if include_latest_overview else ""
839777 ),
840- # 不再返回 pre_archive_abstracts
778+ "pre_archive_abstracts" : [], # 保持 API 向后兼容,返回空数组
841779 "messages" : [m .to_dict () for m in merged_messages ],
842780 "estimatedTokens" : message_tokens + archive_tokens ,
843781 "stats" : {
0 commit comments