refactor(memory): keep session summaries structured

This commit is contained in:
chengyongru
2026-08-19 18:40:20 +08:00
committed by chengyongru
parent fa0605abd0
commit b162019271
10 changed files with 172 additions and 118 deletions
+7 -7
View File
@@ -421,7 +421,7 @@ class TestAutoCompact:
entry = loop.auto_compact._summaries.get("cli:test")
assert entry is not None
assert entry[0] == "User said hello."
assert entry.text == "User said hello."
session_after = loop.sessions.get_or_create("cli:test")
assert len(session_after.messages) == 12
assert len(session_after.get_history(max_messages=12)) == (
@@ -909,7 +909,7 @@ class TestProactiveAutoCompact:
assert len(archived_messages) == 10
entry = loop.auto_compact._summaries.get("cli:test")
assert entry is not None
assert entry[0] == "User chatted about old things."
assert entry.text == "User chatted about old things."
await loop.aclose()
@pytest.mark.asyncio
@@ -1227,8 +1227,8 @@ class TestSummaryPersistence:
_, summary = loop.auto_compact.prepare_session(reloaded, "cli:test")
assert summary is not None
assert "User said hello." in summary
assert "Previous conversation summary" in summary
assert summary.text == "User said hello."
assert "Previous conversation summary" in summary.for_prompt()
# _last_summary persists in metadata for restart survival.
assert "_last_summary" in reloaded.metadata
await loop.aclose()
@@ -1256,7 +1256,7 @@ class TestSummaryPersistence:
assert summary is not None
_, summary2 = loop.auto_compact.prepare_session(reloaded, "cli:test")
assert summary2 is not None
assert "Summary." in summary2
assert summary2.text == "Summary."
# _last_summary persists in metadata for restart survival.
assert "_last_summary" in reloaded.metadata
await loop.aclose()
@@ -1306,7 +1306,7 @@ class TestSummaryPersistence:
loop.sessions.get_or_create("cli:test"), "cli:test"
)
assert summary1 is not None
assert "First summary." in summary1
assert summary1.text == "First summary."
assert "cli:test" not in loop.auto_compact._summaries # popped by hot path
# Add new messages and archive again (simulating a later turn)
@@ -1326,7 +1326,7 @@ class TestSummaryPersistence:
reloaded = loop.sessions.get_or_create("cli:test")
_, summary2 = loop.auto_compact.prepare_session(reloaded, "cli:test")
assert summary2 is not None
assert "Second summary." in summary2
assert summary2.text == "Second summary."
await loop.aclose()
@pytest.mark.asyncio