{"content":"fix: replace the canned first-sentence pool with the LLM's own words (da809ba3, branch fix/first-sentence-human-tone)\n\nOwner feedback on the merged first-sentence work: the instant opening had become a rotating 4-phrase pool — session 2c70849f shows '好的,这就处理。' three times in eight minutes, worst on follow-up turns. A canned line is worse than no line: the first sentence must be the bot's OWN words about THIS message.\n\nRework:\n- The phrase pools are deleted. The deterministic same-tick opening is now reserved for worker delivery notices only — text that carries real information (WHO delivered, what gets reviewed next) and is status rather than conversation. Every generic turn returns '' from the deterministic path.\n- The one-shot LLM call (same title-class call: thinking off, effort off, primary + fallback brain, ~1-3s) now CREATES the first bubble for generic turns. It is dropped entirely when the model's own visible text beat it, a newer turn started, or the output failed the genre/language guards — the activity indicator ('马上就好…') covers the wait, and no bubble beats a canned or wrong one.\n- The ack prompt pins the human voice: the bot's own words about this message, never a canned service template; a greeting gets a greeting back ('在吗' gets '在的'); wording varies naturally.\n- The refine-era machinery (placeholder id, refined flag, model-text-seen flag) is removed — one code path creates the bubble.\n\nVerification: compile clean; 4 affected suites green (turnAckReply incl. a 'no phrase pool survives anywhere' source contract, coworkAssistantOwnerUpdate, turnAckPhrases, prompt gate). Content quality evidence: the same prompt family already produced '晚上好,收到,这条就简单回你一句。' live on session fd23405b — the new prompt only hardens that direction. Live app validation lands after merge (the dev machine was thrashing on repeated installs today; unit + source contracts cover the wiring).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}