Fix compacted tool history for resumed sessions

This commit is contained in:
wuyang6
2026-06-24 14:18:15 +08:00
parent 45792c8fd5
commit 3637e2c73a
4 changed files with 172 additions and 7 deletions
+7 -5
View File
@@ -37,7 +37,7 @@ from .agent_prompting import (
build_system_prompt_parts,
render_system_prompt,
)
from .agent_session import AgentSessionState
from .agent_session import AgentSessionState, sanitize_model_message_sequence
from .agent_slash_commands import preprocess_slash_command
from .agent_tools import (
AgentTool,
@@ -2468,7 +2468,9 @@ class LocalCodingAgent:
if compact_end <= prefix_count:
return False
candidates = session.messages[prefix_count:compact_end]
preserved_tail = list(session.messages[compact_end:])
preserved_tail = sanitize_model_message_sequence(
list(session.messages[compact_end:])
)
if not candidates:
return False
compacted_tokens = sum(
@@ -2492,13 +2494,13 @@ class LocalCodingAgent:
turn_index=turn_index,
estimated_tokens_before=usage_total,
estimated_tokens_removed=compacted_tokens,
preserved_tail_count=tail_count,
preserved_tail_count=len(preserved_tail),
preserved_tail=preserved_tail,
)
session.messages = (
session.messages[:prefix_count]
+ [compact_message]
+ session.messages[compact_end:]
+ preserved_tail
)
stream_events.append(
{
@@ -2507,7 +2509,7 @@ class LocalCodingAgent:
'compacted_message_count': len(candidates),
'estimated_tokens_before': usage_total,
'estimated_tokens_removed': compacted_tokens,
'preserved_tail_count': tail_count,
'preserved_tail_count': len(preserved_tail),
'preserved_tail_ids': [
message.message_id for message in preserved_tail if message.message_id
],