fix(chat): feed title model raw turns instead of post-build_context messages
_generate_title was receiving the full messages list from build_context, which prepends RAG snippets, RSS excerpts, URL content, and briefing article dumps INTO the user-role message string. The role=="user" filter inside _generate_title then handed that composite blob (capped at 300 chars) to gemma3:4b as "the user's message", so the background model was titling conversations based on article excerpts instead of what the user actually typed — producing wildly wrong titles like "Briefing Profile Preferences & Schedule" for a plain calendar query. See #109. Pass the raw history + user_content + assistant reply instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -527,9 +527,22 @@ async def run_generation(
|
||||
should_gen_title = not conv_title or (msg_count > 0 and msg_count % 10 == 0)
|
||||
|
||||
if should_gen_title:
|
||||
title_messages = messages + [
|
||||
{"role": "assistant", "content": buf.content_so_far}
|
||||
# Feed the title model the *raw* conversation turns only — never
|
||||
# the post-build_context ``messages`` list. ``build_context``
|
||||
# prepends RAG snippets, RSS excerpts, URL content, and briefing
|
||||
# article dumps INTO the user message string itself, so filtering
|
||||
# by role="user" downstream still surfaces that noise as the
|
||||
# "user's message". That pollution caused wildly-wrong titles
|
||||
# (bug #109) — the small background model was staring at article
|
||||
# excerpts instead of what the user actually typed. Pass the
|
||||
# original history + the raw user_content + the assistant reply.
|
||||
title_messages: list[dict] = [
|
||||
{"role": m["role"], "content": m.get("content") or ""}
|
||||
for m in history
|
||||
if m.get("role") in ("user", "assistant")
|
||||
]
|
||||
title_messages.append({"role": "user", "content": user_content})
|
||||
title_messages.append({"role": "assistant", "content": buf.content_so_far})
|
||||
|
||||
async def _bg_title() -> None:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user