From c97eddccb4ef3e99f884af16a4f50cf5aa974fdc Mon Sep 17 00:00:00 2001 From: qin-ctx Date: Thu, 14 May 2026 21:32:22 +0800 Subject: [PATCH] fix(storage): detect overview language from child summaries --- openviking/storage/queuefs/semantic_processor.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openviking/storage/queuefs/semantic_processor.py b/openviking/storage/queuefs/semantic_processor.py index 7b8f70c430..e5b7a22271 100644 --- a/openviking/storage/queuefs/semantic_processor.py +++ b/openviking/storage/queuefs/semantic_processor.py @@ -1179,8 +1179,6 @@ async def _generate_overview( file_summaries_lines.append(f"[{idx}] {item['name']}: {item['summary']}") file_summaries_str = "\n".join(file_summaries_lines) if file_summaries_lines else "None" - output_language = resolve_output_language(file_summaries_str, config=config) - # Build subdirectory summary string children_abstracts_str = ( "\n".join(f"- {item['name']}/: {item['abstract']}" for item in children_abstracts) @@ -1188,6 +1186,15 @@ async def _generate_overview( else "None" ) + language_source_parts = [] + if file_summaries: + language_source_parts.append(file_summaries_str) + if children_abstracts: + language_source_parts.append(children_abstracts_str) + if not language_source_parts: + language_source_parts.append(dir_uri.split("/")[-1]) + output_language = resolve_output_language("\n".join(language_source_parts), config=config) + # Budget guard: check if prompt would be oversized estimated_size = len(file_summaries_str) + len(children_abstracts_str) over_budget = estimated_size > semantic.max_overview_prompt_chars