fix(agent): persist user message on every turn, not just happy path
User messages were only saved inside _update_memory at the end of a successful directive. The clarification and access-denied branches returned early without ever calling it, so when a clarification turn asked 'what do you mean?' and the user replied, the original question was missing from context — the bot looked at a transcript of nothing but its own clarifying questions and asked yet another. Save the user message at the top of handle_message so every branch includes it. Drop the now-duplicate write from _update_memory.
This commit is contained in:
@@ -80,6 +80,11 @@ class MasterAgent:
|
|||||||
t0 = time.monotonic()
|
t0 = time.monotonic()
|
||||||
await self._log_directive_start(directive_id, user_id, channel_id, message)
|
await self._log_directive_start(directive_id, user_id, channel_id, message)
|
||||||
try:
|
try:
|
||||||
|
# Persist the user message FIRST so it's part of context on every
|
||||||
|
# branch (clarification, access-denied, happy path). Without this,
|
||||||
|
# clarification turns lose the original question and the bot can't
|
||||||
|
# connect follow-up replies to the in-flight conversation.
|
||||||
|
await self._memory.append_message(user_id, 'user', message, directive_id)
|
||||||
context = await self._build_context(user_id, message)
|
context = await self._build_context(user_id, message)
|
||||||
intent = await self._classify_intent(context, message)
|
intent = await self._classify_intent(context, message)
|
||||||
if intent.needs_clarification:
|
if intent.needs_clarification:
|
||||||
@@ -226,7 +231,8 @@ class MasterAgent:
|
|||||||
return resp.content
|
return resp.content
|
||||||
|
|
||||||
async def _update_memory(self, user_id, message, response, reports, directive_id):
|
async def _update_memory(self, user_id, message, response, reports, directive_id):
|
||||||
await self._memory.append_message(user_id, 'user', message, directive_id)
|
# User message is persisted at the top of handle_message — only save
|
||||||
|
# the assistant reply here.
|
||||||
await self._memory.append_message(user_id, 'assistant', response, directive_id)
|
await self._memory.append_message(user_id, 'assistant', response, directive_id)
|
||||||
for report in reports:
|
for report in reports:
|
||||||
if report.data:
|
if report.data:
|
||||||
|
|||||||
Reference in New Issue
Block a user