fix(memory): prune encoded Dream sessions

This commit is contained in:
chengyongru
2026-07-13 12:07:29 +08:00
committed by Xubin Ren
parent 6d406d93c9
commit 791c7fd505
2 changed files with 49 additions and 17 deletions
+9 -7
View File
@@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Any, Callable, Iterator
from loguru import logger
from nanobot.runtime_context import public_history_messages
from nanobot.session.manager import Session
from nanobot.session.manager import Session, SessionManager
from nanobot.utils.gitstore import GitStore
from nanobot.utils.helpers import (
ensure_dir,
@@ -31,7 +31,6 @@ from nanobot.utils.helpers import (
from nanobot.utils.prompt_templates import render_template
if TYPE_CHECKING:
from nanobot.session.manager import SessionManager
from nanobot.utils.llm_runtime import LLMRuntime
# ---------------------------------------------------------------------------
@@ -705,12 +704,15 @@ class MemoryStore:
def prune_dream_sessions(sessions_dir: Path, *, keep: int = 10) -> None:
"""Remove the oldest Dream session files, keeping only the N most recent.
Only files matching ``dream_*.jsonl`` are considered. Non-dream session
files are never touched.
Only current base64url-encoded Dream session keys are considered.
Non-dream session files are never touched.
"""
dream_files = sorted(
sessions_dir.glob("dream_*.jsonl"), key=lambda p: p.stat().st_mtime,
)
dream_files = []
for path in sessions_dir.glob("*.jsonl"):
decoded_key = SessionManager._decode_storage_key(path.stem)
if decoded_key is not None and decoded_key.startswith("dream:"):
dream_files.append(path)
dream_files.sort(key=lambda p: p.stat().st_mtime)
if len(dream_files) <= keep:
return