Skip to content

Commit 99b809f

Browse files
author
lixingjia
committed
fix(search): use session summaries in search and cap intent summary length
1 parent cb30ab7 commit 99b809f

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

openviking/retrieve/intent_analyzer.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ class IntentAnalyzer:
2828
3. Generate multiple TypedQueries for memory/resources/skill
2929
"""
3030

31+
# Limit content length (about 10000 tokens)
32+
MAX_COMPRESSION_SUMMARY_CHARS = 30000
33+
3134
def __init__(self, max_recent_messages: int = 5):
3235
"""Initialize intent analyzer."""
3336
self.max_recent_messages = max_recent_messages
@@ -106,7 +109,8 @@ def _build_context_prompt(
106109
) -> str:
107110
"""Build prompt for intent analysis."""
108111
# Format compression info
109-
summary = compression_summary if compression_summary else "None"
112+
summary = self._truncate_text(compression_summary, self.MAX_COMPRESSION_SUMMARY_CHARS)
113+
summary = summary if summary else "None"
110114

111115
# Format recent messages
112116
recent = messages[-self.max_recent_messages :] if messages else []
@@ -128,6 +132,13 @@ def _build_context_prompt(
128132
},
129133
)
130134

135+
@staticmethod
136+
def _truncate_text(text: str, max_chars: int) -> str:
137+
"""Truncate text to avoid oversized prompt context."""
138+
if not text or len(text) <= max_chars:
139+
return text
140+
return text[: max_chars - 15] + "\n...(truncated)"
141+
131142
def _summarize_context(
132143
self,
133144
compression_summary: str,

openviking/storage/viking_fs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,11 @@ async def search(
669669
TypedQuery,
670670
)
671671

672-
session_summary = session_info.get("summary") if session_info else None
672+
summary_list = session_info.get("summaries") if session_info else None
673+
if isinstance(summary_list, list):
674+
session_summary = "\n\n".join(str(item) for item in summary_list if item)
675+
else:
676+
session_summary = ""
673677
recent_messages = session_info.get("recent_messages") if session_info else None
674678

675679
query_plan: Optional[QueryPlan] = None

0 commit comments

Comments
 (0)