mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-30 23:05:51 +00:00
feat: make consolidation ratio configurable
This commit is contained in:
parent
3de843a229
commit
80ee4483f8
@ -190,6 +190,7 @@ class AgentLoop:
|
|||||||
channels_config: ChannelsConfig | None = None,
|
channels_config: ChannelsConfig | None = None,
|
||||||
timezone: str | None = None,
|
timezone: str | None = None,
|
||||||
session_ttl_minutes: int = 0,
|
session_ttl_minutes: int = 0,
|
||||||
|
consolidation_ratio: float = 0.5,
|
||||||
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,
|
||||||
@ -269,6 +270,7 @@ class AgentLoop:
|
|||||||
build_messages=self.context.build_messages,
|
build_messages=self.context.build_messages,
|
||||||
get_tool_definitions=self.tools.get_definitions,
|
get_tool_definitions=self.tools.get_definitions,
|
||||||
max_completion_tokens=provider.generation.max_tokens,
|
max_completion_tokens=provider.generation.max_tokens,
|
||||||
|
consolidation_ratio=consolidation_ratio,
|
||||||
)
|
)
|
||||||
self.auto_compact = AutoCompact(
|
self.auto_compact = AutoCompact(
|
||||||
sessions=self.sessions,
|
sessions=self.sessions,
|
||||||
|
|||||||
@ -435,6 +435,7 @@ class Consolidator:
|
|||||||
build_messages: Callable[..., list[dict[str, Any]]],
|
build_messages: Callable[..., list[dict[str, Any]]],
|
||||||
get_tool_definitions: Callable[[], list[dict[str, Any]]],
|
get_tool_definitions: Callable[[], list[dict[str, Any]]],
|
||||||
max_completion_tokens: int = 4096,
|
max_completion_tokens: int = 4096,
|
||||||
|
consolidation_ratio: float = 0.5,
|
||||||
):
|
):
|
||||||
self.store = store
|
self.store = store
|
||||||
self.provider = provider
|
self.provider = provider
|
||||||
@ -442,6 +443,7 @@ class Consolidator:
|
|||||||
self.sessions = sessions
|
self.sessions = sessions
|
||||||
self.context_window_tokens = context_window_tokens
|
self.context_window_tokens = context_window_tokens
|
||||||
self.max_completion_tokens = max_completion_tokens
|
self.max_completion_tokens = max_completion_tokens
|
||||||
|
self.consolidation_ratio = consolidation_ratio
|
||||||
self._build_messages = build_messages
|
self._build_messages = build_messages
|
||||||
self._get_tool_definitions = get_tool_definitions
|
self._get_tool_definitions = get_tool_definitions
|
||||||
self._locks: weakref.WeakValueDictionary[str, asyncio.Lock] = (
|
self._locks: weakref.WeakValueDictionary[str, asyncio.Lock] = (
|
||||||
@ -568,7 +570,7 @@ class Consolidator:
|
|||||||
lock = self.get_lock(session.key)
|
lock = self.get_lock(session.key)
|
||||||
async with lock:
|
async with lock:
|
||||||
budget = self._input_token_budget
|
budget = self._input_token_budget
|
||||||
target = budget // 2
|
target = int(budget * self.consolidation_ratio)
|
||||||
try:
|
try:
|
||||||
estimated, source = self.estimate_session_prompt_tokens(
|
estimated, source = self.estimate_session_prompt_tokens(
|
||||||
session,
|
session,
|
||||||
|
|||||||
@ -597,6 +597,7 @@ def serve(
|
|||||||
unified_session=runtime_config.agents.defaults.unified_session,
|
unified_session=runtime_config.agents.defaults.unified_session,
|
||||||
disabled_skills=runtime_config.agents.defaults.disabled_skills,
|
disabled_skills=runtime_config.agents.defaults.disabled_skills,
|
||||||
session_ttl_minutes=runtime_config.agents.defaults.session_ttl_minutes,
|
session_ttl_minutes=runtime_config.agents.defaults.session_ttl_minutes,
|
||||||
|
consolidation_ratio=runtime_config.agents.defaults.consolidation_ratio,
|
||||||
tools_config=runtime_config.tools,
|
tools_config=runtime_config.tools,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -703,6 +704,7 @@ def _run_gateway(
|
|||||||
unified_session=config.agents.defaults.unified_session,
|
unified_session=config.agents.defaults.unified_session,
|
||||||
disabled_skills=config.agents.defaults.disabled_skills,
|
disabled_skills=config.agents.defaults.disabled_skills,
|
||||||
session_ttl_minutes=config.agents.defaults.session_ttl_minutes,
|
session_ttl_minutes=config.agents.defaults.session_ttl_minutes,
|
||||||
|
consolidation_ratio=config.agents.defaults.consolidation_ratio,
|
||||||
tools_config=config.tools,
|
tools_config=config.tools,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1077,6 +1079,7 @@ def agent(
|
|||||||
unified_session=config.agents.defaults.unified_session,
|
unified_session=config.agents.defaults.unified_session,
|
||||||
disabled_skills=config.agents.defaults.disabled_skills,
|
disabled_skills=config.agents.defaults.disabled_skills,
|
||||||
session_ttl_minutes=config.agents.defaults.session_ttl_minutes,
|
session_ttl_minutes=config.agents.defaults.session_ttl_minutes,
|
||||||
|
consolidation_ratio=config.agents.defaults.consolidation_ratio,
|
||||||
tools_config=config.tools,
|
tools_config=config.tools,
|
||||||
)
|
)
|
||||||
restart_notice = consume_restart_notice_from_env()
|
restart_notice = consume_restart_notice_from_env()
|
||||||
|
|||||||
@ -90,6 +90,13 @@ class AgentDefaults(Base):
|
|||||||
validation_alias=AliasChoices("idleCompactAfterMinutes", "sessionTtlMinutes"),
|
validation_alias=AliasChoices("idleCompactAfterMinutes", "sessionTtlMinutes"),
|
||||||
serialization_alias="idleCompactAfterMinutes",
|
serialization_alias="idleCompactAfterMinutes",
|
||||||
) # Auto-compact idle threshold in minutes (0 = disabled)
|
) # Auto-compact idle threshold in minutes (0 = disabled)
|
||||||
|
consolidation_ratio: float = Field(
|
||||||
|
default=0.5,
|
||||||
|
ge=0.1,
|
||||||
|
le=0.95,
|
||||||
|
validation_alias=AliasChoices("consolidationRatio"),
|
||||||
|
serialization_alias="consolidationRatio",
|
||||||
|
) # Consolidation target ratio (0.5 = 50% of budget retained after compression)
|
||||||
dream: DreamConfig = Field(default_factory=DreamConfig)
|
dream: DreamConfig = Field(default_factory=DreamConfig)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -84,6 +84,7 @@ class Nanobot:
|
|||||||
unified_session=defaults.unified_session,
|
unified_session=defaults.unified_session,
|
||||||
disabled_skills=defaults.disabled_skills,
|
disabled_skills=defaults.disabled_skills,
|
||||||
session_ttl_minutes=defaults.session_ttl_minutes,
|
session_ttl_minutes=defaults.session_ttl_minutes,
|
||||||
|
consolidation_ratio=defaults.consolidation_ratio,
|
||||||
tools_config=config.tools,
|
tools_config=config.tools,
|
||||||
)
|
)
|
||||||
return cls(loop)
|
return cls(loop)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user