fix(context): raise max messages fallback cap

Treat max_messages as a last-resort replay guard now that consolidation and idle auto-compact own normal history reduction. Raising the default avoids frequent sliding-window prefix churn in moderate conversations without adding a new cache-policy knob.
This commit is contained in:
chengyongru
2026-06-29 14:23:55 +08:00
committed by Xubin Ren
parent 7dc45ff94e
commit c8638dee46
4 changed files with 7 additions and 7 deletions
+2 -2
View File
@@ -201,7 +201,7 @@ class AgentLoop:
timezone: str | None = None, timezone: str | None = None,
session_ttl_minutes: int = 0, session_ttl_minutes: int = 0,
consolidation_ratio: float = 0.5, consolidation_ratio: float = 0.5,
max_messages: int = 120, max_messages: int = 500,
hooks: list[AgentHook] | None = None, hooks: list[AgentHook] | None = None,
unified_session: bool = False, unified_session: bool = False,
disabled_skills: list[str] | None = None, disabled_skills: list[str] | None = None,
@@ -292,7 +292,7 @@ class AgentLoop:
llm_wall_timeout_for_session=lambda sk: runner_wall_llm_timeout_s(self.sessions, sk), llm_wall_timeout_for_session=lambda sk: runner_wall_llm_timeout_s(self.sessions, sk),
) )
self._unified_session = unified_session self._unified_session = unified_session
self._max_messages = max_messages if max_messages > 0 else 120 self._max_messages = max_messages if max_messages > 0 else 500
self._running = False self._running = False
self._mcp_servers = mcp_servers or {} self._mcp_servers = mcp_servers or {}
self._mcp_stacks: dict[str, AsyncExitStack] = {} self._mcp_stacks: dict[str, AsyncExitStack] = {}
+2 -2
View File
@@ -155,9 +155,9 @@ class AgentDefaults(Base):
serialization_alias="idleCompactAfterMinutes", serialization_alias="idleCompactAfterMinutes",
) # Auto-compact idle threshold in minutes (0 = disabled) ) # Auto-compact idle threshold in minutes (0 = disabled)
max_messages: int = Field( max_messages: int = Field(
default=120, default=500,
ge=0, ge=0,
) # Max messages to replay from session history (0 = use default 120, respects token budget) ) # Last-resort max messages to replay from session history (0 = use default 500)
consolidation_ratio: float = Field( consolidation_ratio: float = Field(
default=0.5, default=0.5,
ge=0.1, ge=0.1,
+2 -2
View File
@@ -132,7 +132,7 @@ class Session:
def get_history( def get_history(
self, self,
max_messages: int = 120, max_messages: int = 500,
*, *,
max_tokens: int = 0, max_tokens: int = 0,
extend_to_user: bool = False, extend_to_user: bool = False,
@@ -143,7 +143,7 @@ class Session:
token budget from the tail (``max_tokens``) when provided. token budget from the tail (``max_tokens``) when provided.
""" """
unconsolidated = self.messages[self.last_consolidated:] unconsolidated = self.messages[self.last_consolidated:]
max_messages = max_messages if max_messages > 0 else 120 max_messages = max_messages if max_messages > 0 else 500
start_idx = recent_message_start_index( start_idx = recent_message_start_index(
unconsolidated, unconsolidated,
max_messages, max_messages,
+1 -1
View File
@@ -13,7 +13,7 @@ from nanobot.bus.queue import MessageBus
from nanobot.providers.base import LLMResponse from nanobot.providers.base import LLMResponse
from nanobot.session.manager import Session from nanobot.session.manager import Session
DEFAULT_MAX_MESSAGES = 120 DEFAULT_MAX_MESSAGES = 500
def _make_loop(tmp_path: Path, max_messages: int = DEFAULT_MAX_MESSAGES) -> AgentLoop: def _make_loop(tmp_path: Path, max_messages: int = DEFAULT_MAX_MESSAGES) -> AgentLoop: