mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
e94b4b58ed
The discuss driver's RC+TR composition had three compounding bugs that caused old tasks to be re-answered after idle timeouts and made the LLM blind to its own prior tool usage: - DecodeTurnResponseEntry only kept visible text via TextContent(), so assistant steps carrying only tool_call parts (the first half of every tool round) were dropped entirely. Rewritten to render tool_call and tool_result parts as <tool_call>/<tool_result> tags, covering both Vercel-style content parts and legacy OpenAI ToolCalls/role=tool envelopes. Reasoning parts remain stripped to avoid re-injection. - loadTurnResponses hard-capped TRs at 24h while RC is replayed in full from the events table, producing asymmetric context (user messages from day 1 visible, matching bot replies missing). The cap is removed; any size-bound trimming belongs in compaction, not here. - lastProcessedMs lived only in memory and was set to time.Now() at turn end. After the 10-minute idle timeout, the goroutine exited and the next turn started with cursor=0, treating the entire history as new traffic. Now initialised from the latest TR's requested_at on cold start, and advanced to max(consumed RC.ReceivedAtMs) per turn so that messages arriving mid-generation trigger a follow-up round instead of being wrongly marked processed.