Skip to main content

tts-error-reporting

Convention for reporting errors from multiprocessing TTS workers to the main process frontend. Use this skill when modifying, adding, or debugging TTS workers in tts_client.py to ensure connection errors, quotas, and API limits correctly display Toast notifications to the user rather than failing silently.

Zur Installation springen

Quellinformationen

Repository
Project-N-E-K-O/N.E.K.O
Letzte Quellaktivität
26. Februar 2026 um 10:57
Erkannte Sprache von SKILL.md
Englisch
Sterne
2.947
Forks
324

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
tts-error-reporting
description
Convention for reporting errors from multiprocessing TTS workers to the main process frontend. Use this skill when modifying, adding, or debugging TTS workers in tts_client.py to ensure connection errors, quotas, and API limits correctly display Toast notifications to the user rather than failing silently.
# TTS Error Reporting Protocol To ensure users are properly notified when a TTS service encounters an error (such as quota exhaustion, API issues, or connection failures), TTS workers running in separate processes must propagate errors back to the main process (`core.py`). ## Core Rule: Use `response_queue.put(("__error__", error_msg))` When a TTS worker (e.g. `step_realtime_tts_worker`, `qwen_realtime_tts_worker`, etc.) catches an error, it **MUST NOT** only log the error using `logger.error()`. It **MUST ALSO** send the error message back to the main process through its `response_queue` using the explicit tuple format `("__error__", error_msg)`. This ensures that `core.py`'s `tts_response_handler` can intercept the error and translate it into a frontend WebSocket message (`type: 'status'`), triggering a user-friendly Toast notification (e.g., "💥 免费TTS限额已耗尽"). ### Example Implementation ```python # Bad Pattern (Fails silently for user) except Exception as e: logger.error(f"TTS Worker Error: {e}") # Worker dies or hangs, user stuck on "Preparing..." # Good Pattern (Structured JSON error for i18n frontend toasts) import json except Exception as e: logger.error(f"TTS Worker Error: {e}") # Map to specific error codes known to i18n error_payload = json.dumps({"code": "API_QUOTA_TIME", "details": str(e)}) response_queue.put(("__error__", error_payload)) # Acceptable Fallback (Fallback 1008 error if code unknown) except Exception as e: logger.error(f"TTS Worker Error: {e}") error_payload = json.dumps({"code": "API_1008_FALLBACK", "msg": str(e)}) response_queue.put(("__error__", error_payload)) ``` ### WebSocket Stream Callbacks Example ```python import json def on_error(self, message: str): logger.error(f"TTS Error: {message}") error_payload = json.dumps({"code": "API_1008_FALLBACK", "msg": message}) self.response_queue.put(("__error__", error_payload)) ``` ## Checklist for Adding a New TTS Worker Whenever you add a new TTS API worker in `tts_client.py`: 1. Ensure the worker signature accepts a `response_queue`. 2. Locate all network initialization blocks, `try/except` loops, and `on_error` WebSocket callbacks. 3. In every local exception block where the worker might fail or drop the connection, add `response_queue.put(("__error__", error_message_string))`. 4. Ensure string encoding handles JSON cleanly if propagating raw API errors.
Auf GitHub ansehen