Skip to content

Commit df6eef0

Browse files
committed
fix: fix some bugs in #8226
1 parent f01dc47 commit df6eef0

2 files changed

Lines changed: 7 additions & 29 deletions

File tree

astrbot/core/agent/runners/tool_loop_agent_runner.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ async def reset(
241241
self.tool_result_overflow_dir = tool_result_overflow_dir
242242
self.read_tool = read_tool
243243
self._tool_result_token_counter = EstimateTokenCounter()
244-
self.request_context_manager_config = ContextConfig(
244+
self.context_config = ContextConfig(
245245
# <=0 disables token-based guarding.
246246
max_context_tokens=provider.provider_config.get("max_context_tokens", 0),
247247
# Enforce max turns before token-based guarding.
@@ -253,9 +253,7 @@ async def reset(
253253
custom_token_counter=self.custom_token_counter,
254254
custom_compressor=self.custom_compressor,
255255
)
256-
self.request_context_manager = ContextManager(
257-
self.request_context_manager_config
258-
)
256+
self.context_manager = ContextManager(self.context_config)
259257

260258
self.provider = provider
261259
self.fallback_providers: list[Provider] = []
@@ -458,11 +456,8 @@ async def _iter_llm_responses(
458456
self, *, include_model: bool = True
459457
) -> T.AsyncGenerator[LLMResponse, None]:
460458
"""Yields chunks *and* a final LLMResponse."""
461-
messages_for_provider = getattr(
462-
self, "_provider_messages", self.run_context.messages
463-
)
464459
payload = {
465-
"contexts": self._sanitize_contexts_for_provider(messages_for_provider),
460+
"contexts": self._sanitize_contexts_for_provider(self.run_context.messages),
466461
"func_tool": self._func_tool_for_provider(),
467462
"session_id": self.req.session_id,
468463
"extra_user_content_parts": self.req.extra_user_content_parts, # list[ContentPart]
@@ -583,7 +578,8 @@ def _sanitize_contexts_for_provider(
583578
self,
584579
contexts: list[Message] | list[dict[str, T.Any]],
585580
) -> list[Message] | list[dict[str, T.Any]]:
586-
if not self._should_fix_modalities_for_provider():
581+
modalities = self.provider.provider_config.get("modalities", None)
582+
if not modalities: # Unconfigured (None or empty list) defaults to support all modalities
587583
return contexts
588584
sanitized_contexts, stats = sanitize_contexts_by_modalities(
589585
contexts,
@@ -592,12 +588,6 @@ def _sanitize_contexts_for_provider(
592588
log_context_sanitize_stats(stats)
593589
return sanitized_contexts
594590

595-
def _should_fix_modalities_for_provider(self) -> bool:
596-
modalities = self.provider.provider_config.get("modalities", None)
597-
return (
598-
isinstance(modalities, list) and modalities
599-
) # Empty list is treated as unconfigured
600-
601591
def _func_tool_for_provider(self) -> ToolSet | None:
602592
if not self.req.func_tool:
603593
return None
@@ -714,7 +704,7 @@ async def step(self):
714704
# memory layer.
715705
token_usage = self.req.conversation.token_usage if self.req.conversation else 0
716706
self._simple_print_message_role("[BefCompact]")
717-
self._provider_messages = await self.request_context_manager.process(
707+
self.run_context.messages = await self.context_manager.process(
718708
self.run_context.messages, trusted_token_usage=token_usage
719709
)
720710
self._simple_print_message_role("[AftCompact]")

astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ async def initialize(self, ctx: PipelineContext) -> None:
9898
"llm_compress_instruction", ""
9999
)
100100
self.llm_compress_keep_recent: int = settings.get(
101-
"llm_compress_keep_recent", 10
101+
"llm_compress_keep_recent", 5
102102
)
103103
self.llm_compress_provider_id: str = settings.get(
104104
"llm_compress_provider_id", ""
@@ -482,18 +482,6 @@ async def _save_to_history(
482482
continue
483483
if message.role in ["assistant", "user"] and message._no_save:
484484
continue
485-
# Truncate long tool results before persisting (8192 chars)
486-
if (
487-
message.role == "tool"
488-
and isinstance(message.content, str)
489-
and len(message.content) > 8192
490-
):
491-
message = Message(
492-
role="tool",
493-
tool_call_id=message.tool_call_id,
494-
content=message.content[:8192]
495-
+ f"\n...[truncated {len(message.content) - 8192} chars]",
496-
)
497485
messages_to_save.append(message)
498486

499487
checkpoint_id = event.get_extra("llm_checkpoint_id")

0 commit comments

Comments
 (0)