fix(translate): Übersetzung scheitert — llama-server ignoriert enable_thinking (Top-Level), Modell denkt Minuten, Route bricht nach 300 s mit HTTP 500; Fehlertext geht verloren #182
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#182
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Befund (2026-10-26, gemessen)
Die Übersetzung eines Handbuchs (Skill
translate, 7 Chunks à 4000 Zeichen, Agent-LLM = lokaler llama-server, Qwen3.8-Flash-Next Q8) scheitert an Chunk 1/7, dreimal hintereinander mit wechselnder Meldung:/tmp/translate-worker-<pid>.log)The read operation timed out×3<urlopen error [SSL: WRONG_VERSION_NUMBER] …>×3HTTP Error 500: ErrorDer Agent hat das als „Modell zu langsam“ gedeutet und im installierten Skill das Chunk-Limit auf 1800 s erhöht und eine Fehlerbild-Liste in die installierte
SKILL.mdgeschrieben. Das ist nicht die Ursache (und ein Limit von 1800 s wirkt nicht: der Server bricht nach 300 s selbst ab).Ursache (bewiesen)
VaultMaintenanceViewModel.callOpenAICompatschaltet das Denken des Modells per Top-Level-Feldenable_thinking: falseund/no_thinkab. Der llama-server (Chat-Template von Qwen3.8 kenntenable_thinking) liest den Schalter aber nur auschat_template_kwargs: {"enable_thinking": false}. Direkter Gegenversuch gegenhttp://127.0.0.1:18200/v1/chat/completions, derselbe Satz,max_tokens: 80:enable_thinking): 4,3 s,finish_reason: length, 366 Zeichenreasoning_content, Antwort leer — das Modell denkt und kommt in 80 Token nicht zur Antwort.chat_template_kwargs: 1,0 s, 15 Token, Antwort sofort („Die Karte ermöglicht es dir, schnell über das Schiff zu reisen.“).Jeder Chunk denkt also mehrere Minuten (der Fünfzig-Zeichen-Test brauchte 51 s), überschreitet die 300 s der Route (
dataWithReliableTimeout) und endet als HTTP 500. Der Linux-Server (vault_llm.py) schickt für lokale Backends gar keinen Denk-Schalter.Zweiter Fehler: das Skript zeigt bei HTTP-Fehlern nur
HTTP Error 500: Errorund verschluckt den Antworttext des Servers ({"error": "…"}) — deshalb stand die wahre Meldung nirgends.Umfang
chat_template_kwargs: {enable_thinking: false}zusätzlich zum bisherigen Schalter, nur für lokale Backends (openaicompat,lmstudio) — OpenAI/OpenRouter lehnen unbekannte Felder teils ab.vault_llm.py): derselbe Schalter fürlmstudio/openaicompat/mlxvlm.translate(Quelle in iris/iris-plugins): HTTP-Fehler mit Antworttext, Resume setzt Status zurück (der Agent hat den Fehler im installierten Skill gefunden: nach einem Neustart meldete der Reporter sofort den alten Fehler), Limit und Chunk-Größe per Umgebung einstellbar.Nicht geklärt
SSL: WRONG_VERSION_NUMBERum 15:40: die Iris-App lief seit 14:54 unverändert, der Port sprach laut Log TLS. Ein Verdacht ohne Beleg; sollte es wiederkommen, Worker-Log und den Zustand von127.0.0.1:8765im selben Moment sichern.PR #183 gemergt: fix(translate): Denk-Schalter für lokale Modelle über chat_template_kwargs — Übersetzung lief ins 300-s-Limit (iris/Iris#182)
#183
Commits:
Stand: Mac-Server (zu #182)
VaultMaintenanceViewModel.callOpenAICompatsendet füropenaicompatundlmstudiozusätzlichchat_template_kwargs: {enable_thinking: false}. Der bisherige Top-Level-Schalter bleibt (andere Server lesen ihn), OpenAI/OpenRouter bekommen das neue Feld nicht.Geprüft:
Iris(Debug, eigenes DerivedData) baut. Die Wirkung ist am laufenden llama-server gemessen, nicht über die App: gleiche Anfrage,max_tokens 80— mit Top-Level-Feld 4,3 s,finish_reason length, 366 Zeichenreasoning_content, Antwort leer; mitchat_template_kwargs1,0 s, 15 Token, Antwort sofort. Nicht geprüft: die Übersetzung selbst in der neu gebauten App (Iris muss neu gebaut und gestartet werden, dann den Job neu starten);lmstudio/vLLMnicht gegen einen echten Server.PR #100 gemergt: fix(translate): chat_template_kwargs enable_thinking für lokale Backends in vault_llm (iris/Iris#182)
iris/iris-linux-server#100
Commits:
Stand: Linux-Server (zu iris/Iris#182)
vault_llm.py: fürlmstudio/openaicompat/mlxvlmschicktcall_llmjetztchat_template_kwargs: {enable_thinking: false}(vorher gar kein Denk-Schalter). Wortgleiche Begründung zur Mac-App. Geprüft: Syntax; nicht geprüft: kein Lauf des Servers, keine Tests, nicht auf iris-server ausgerollt.PR #286 gemergt: fix(translate): echter Fehlertext bei HTTP-Fehlern, Resume setzt Status zurück, Limits einstellbar, Version 1.0.6 (iris/Iris#182)
iris/iris-plugins#286
Commits:
Stand: Skill translate 1.0.6 (zu iris/Iris#182)
HTTP-Fehler zeigen den Grund aus
{"error": …}des Servers stattHTTP Error 500: Error(mit Ersatz, wenn der Text kein JSON ist); Resume setzt Status aufrunningund leert den Fehler (Fehler aus dem installierten Skill übernommen, dort vom Agenten gefunden);TRANSLATE_MAX_CHUNK_CHARSundTRANSLATE_CHUNK_TIMEOUT_SECONDS(Standard 300 s = Limit der Route). SKILL.md: Abschnitt „Fehlerbilder“ mit der richtigen Diagnose (Zeitüberschreitung bei kleinen Chunks = das Modell denkt, nicht „zu langsam“). Nicht übernommen: das 1800-s-Limit und der Fehlerbild-Abschnitt des Agenten aus der installierten Kopie (falsche Diagnose).Geprüft: Syntax; das Verhalten der Fehlertext-Behandlung gegen ein simuliertes
HTTPError(mit/ohne JSON-Body);publish-plugins.sh --dry-rungrün. Nicht geprüft: ein echter Übersetzungslauf; kein Test-Verzeichnis im Plugin. Veröffentlicht nach der Standardregel.Stand: veröffentlicht
translate 1.0.6 ist in der Registry (nach dem Pull geprüft): HTTP-Fehler nennen den echten Grund, ein neu gestarteter Job meldet nicht mehr sofort den alten Fehler, Chunk-Größe und Zeitlimit sind einstellbar. Die eigentliche Ursache (llama-server ignorierte den Denk-Schalter) ist in der Mac-App (PR in iris/Iris, noch nicht in deiner laufenden Iris) und im Linux-Server (
vault_llm.py, nicht ausgerollt) behoben.Zum Wiederholen der Übersetzung: Iris neu bauen und starten, den laufenden Übersetzungsjob (Worker-PID siehe
pgrep -f 'translate_document.py _worker') beenden und neu starten. Nicht geprüft: ein echter Übersetzungslauf nach dem Fix.