feat(tts): System-Flag speak (ja/nein) pro Antwort statt <voice>-Tag-Hack
Stefans Idee: die QUELLE entscheidet ueber Vorlesen, nicht der Reply-Inhalt. Fast-Path (reiner Steuerbefehl) = speak=False (stumm); ARIA-Antworten (local/claude) = speak=True (vorlesen ok — eine Ansage ist sogar nett). - agent.chat() gibt jetzt (reply, answered_by, speak) zurueck; main.py ChatOut.speak; background.py-Aufrufer angepasst. - bridge: liest speak aus /chat, reicht es an _process_core_response; bei speak=False wird TTS uebersprungen — VOR jeder <voice>-Logik. Robust: unabhaengig davon, ob die Skill-fast_pattern-Reply ein <voice></voice> enthaelt (das verlor ARIA beim semantischen Skill-Rebuild — genau der Bug). App braucht keinen Change: kein xtts_request -> kein Audio -> stumm. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+5
-1
@@ -633,6 +633,9 @@ class ChatOut(BaseModel):
|
||||
# Welcher Backend die Antwort erzeugt hat: "local" (Qwen), "claude",
|
||||
# "fast-path" (Skill/Regex). Fuer den Quell-Badge in Diagnostic.
|
||||
answered_by: str = "claude"
|
||||
# Soll die Antwort vorgelesen werden? Fast-Path (reiner Steuerbefehl) = False;
|
||||
# ARIA-Antworten (local/claude) = True. System-Flag statt <voice>-Tag.
|
||||
speak: bool = True
|
||||
# Echo der project_id die dieser Turn hatte. Bridge nutzt sie damit die
|
||||
# ausgehende Chat-Bubble sauber getaggt in der richtigen Thread-Bahn der
|
||||
# UI landet.
|
||||
@@ -716,7 +719,7 @@ async def chat(body: ChatIn, background: BackgroundTasks):
|
||||
# Sync-Aufruf im Executor damit wir den Event-Loop nicht blocken —
|
||||
# chat() macht HTTP-Calls (Proxy) die 30-60s dauern koennen.
|
||||
loop = asyncio.get_running_loop()
|
||||
reply, answered_by = await loop.run_in_executor(
|
||||
reply, answered_by, speak = await loop.run_in_executor(
|
||||
None,
|
||||
lambda: a.chat(
|
||||
body.message, source=body.source, project_id=pid,
|
||||
@@ -739,6 +742,7 @@ async def chat(body: ChatIn, background: BackgroundTasks):
|
||||
events=a.pop_events(),
|
||||
project_id=pid,
|
||||
answered_by=answered_by,
|
||||
speak=speak,
|
||||
)
|
||||
finally:
|
||||
_project_pending[pid] = [
|
||||
|
||||
Reference in New Issue
Block a user