This commit is contained in:
Timothy Jaeryang Baek
2026-07-13 23:27:54 -04:00
parent e1f96aa20e
commit 959558fd82
2 changed files with 15 additions and 12 deletions
+7 -12
View File
@@ -58,6 +58,9 @@ async def compact_messages_for_request(
return messages, previous_summary, False
boundary = _find_compaction_boundary(messages)
if boundary is None:
return messages, previous_summary, False
compacted_messages = messages[:boundary]
recent_messages = messages[boundary:]
if not compacted_messages or not recent_messages:
@@ -240,19 +243,11 @@ def _exceeds_token_threshold(messages: list[dict], system_prompt: str, summary:
return estimated > threshold
def _find_compaction_boundary(messages: list[dict]) -> int:
def _find_compaction_boundary(messages: list[dict]) -> int | None:
keep_count = max(2, len(messages) * 2 // 5)
split = max(1, len(messages) - keep_count)
while split < len(messages) - 1:
previous = messages[split - 1] if split > 0 else {}
current = messages[split]
if current.get('role') == 'tool' or previous.get('tool_calls') or previous.get('output'):
split += 1
continue
break
return min(split, len(messages) - 2)
target = max(1, len(messages) - keep_count)
boundaries = [idx for idx, message in enumerate(messages) if message.get('role') == 'user'][1:]
return next((idx for idx in reversed(boundaries) if idx <= target), None)
async def _generate_summary(