diff --git a/agent/context_compressor.py b/agent/context_compressor.py index 9f90a96163..887be7f7bf 100644 --- a/agent/context_compressor.py +++ b/agent/context_compressor.py @@ -484,7 +484,18 @@ class ContextCompressor(ContextEngine): for i in range(len(result) - 1, -1, -1): msg = result[i] raw_content = msg.get("content") or "" - content_len = sum(len(p.get("text", "")) for p in raw_content) if isinstance(raw_content, list) else len(raw_content) + content_len = ( + sum( + len(p.get("text", "")) + if isinstance(p, dict) + else len(p) + if isinstance(p, str) + else len(str(p)) + for p in raw_content + ) + if isinstance(raw_content, list) + else len(raw_content) + ) msg_tokens = content_len // _CHARS_PER_TOKEN + 10 for tc in msg.get("tool_calls") or []: if isinstance(tc, dict):