atlasbot: merge signal and keyword tokens

This commit is contained in:
Brad Stein 2026-02-03 11:03:58 -03:00
parent a77e041d7c
commit b69230973a

View File

@ -327,6 +327,7 @@ class AnswerEngine:
) )
if isinstance(signals, list): if isinstance(signals, list):
signal_tokens = [str(item) for item in signals if item] signal_tokens = [str(item) for item in signals if item]
all_tokens = _merge_tokens(signal_tokens, keyword_tokens)
if observer: if observer:
observer("retrieve", "scanning chunks") observer("retrieve", "scanning chunks")
candidate_lines: list[str] = [] candidate_lines: list[str] = []
@ -362,11 +363,7 @@ class AnswerEngine:
if not metric_facts: if not metric_facts:
if observer: if observer:
observer("retrieve", "fallback metric selection") observer("retrieve", "fallback metric selection")
fallback_candidates = _filter_lines_by_keywords( fallback_candidates = _filter_lines_by_keywords(summary_lines, all_tokens, max_lines=200)
summary_lines,
signal_tokens or keyword_tokens,
max_lines=200,
)
if fallback_candidates: if fallback_candidates:
metric_facts = await _select_fact_lines( metric_facts = await _select_fact_lines(
call_llm, call_llm,
@ -380,7 +377,7 @@ class AnswerEngine:
if metric_facts: if metric_facts:
metric_facts = _ensure_token_coverage( metric_facts = _ensure_token_coverage(
metric_facts, metric_facts,
signal_tokens or keyword_tokens, all_tokens,
summary_lines, summary_lines,
max_add=plan.max_subquestions, max_add=plan.max_subquestions,
) )
@ -393,7 +390,7 @@ class AnswerEngine:
if key_facts: if key_facts:
key_facts = _ensure_token_coverage( key_facts = _ensure_token_coverage(
key_facts, key_facts,
signal_tokens or keyword_tokens, all_tokens,
summary_lines, summary_lines,
max_add=plan.max_subquestions, max_add=plan.max_subquestions,
) )
@ -1499,6 +1496,16 @@ def _has_keyword_overlap(lines: list[str], keywords: list[str]) -> bool:
return False return False
def _merge_tokens(primary: list[str], secondary: list[str]) -> list[str]:
merged: list[str] = []
for token in primary + secondary:
if not token:
continue
if token not in merged:
merged.append(token)
return merged
def _ensure_token_coverage( def _ensure_token_coverage(
lines: list[str], lines: list[str],
tokens: list[str], tokens: list[str],