diff --git a/agent.py b/agent.py index 5398e19..0246f25 100644 --- a/agent.py +++ b/agent.py @@ -683,26 +683,22 @@ Provide unified summary (max 800 chars) covering all key points.""" def _process_tool_result_hierarchical(self, tool_name: str, result: Any) -> str: """ Intelligently process tool results based on size: - - Small (< 2KB): Pass through directly - - Medium (2-10KB): Truncate with head+tail - - Large (> 10KB): Hierarchical extraction in separate context + - Small (< 5KB): Pass through directly + - Medium (5-20KB): Hierarchical extraction with single-pass summarization + - Large (> 20KB): Hierarchical extraction with chunked processing """ result_str = json.dumps(result) if not isinstance(result, str) else result size = len(result_str) # Small outputs: pass through directly - if size < 2000: + if size < 5000: print(f" [Tool result: {size} chars, passing through]") return result_str - # Medium outputs: truncate with head+tail - elif size < 10000: - print(f" [Tool result: {size} chars, truncating to 2000]") - return self._simple_truncate(result_str, 2000) - - # Large outputs: hierarchical extraction + # Medium and large outputs: hierarchical extraction with chunking else: print(f" [Tool result: {size} chars, extracting key findings...]") + # _extract_key_findings automatically chunks large outputs return self._extract_key_findings(tool_name, result_str) def _prune_messages(self, messages: List[Dict], max_context_tokens: int = 80000) -> List[Dict]: