Qwen Code Weekly: Token-Kosten im Überblick, Spracheingabe, Workflows speichern & wiederverwenden
Qwen Code hat diese Woche fünf Releases veröffentlicht — v0.18.4 bis v0.19.2 (Major-Bump auf v0.19.0) — mit über 140 gemerged PRs in drei Richtungen:
Spracheingabe — einfach sprechen, kein Tippen. Jede Eingabe musste bisher getippt werden — lange Befehle, komplexe Parameter, gemischter Chinesisch-Englisch-Text. Langsam und fehleranfällig. Diese Woche ermöglicht /voice Spracheingabe über das Mikrofon; nach dem Sprechen bereinigt das Fast Model automatisch Füllwörter und Tippfehler.
Workflows jetzt speicherbar und wiederverwendbar. Bisher verschwand ein Workflow nach dem Ausführen. Beim nächsten Mal musste der Prompt neu geschrieben werden, und es gab keine Möglichkeit, einen interrupted Run in der gleichen Session fortzusetzen. Diese Woche schließt Dynamic Workflows diese Lücke: nach einem Run s drücken, um das Script als Slash-Command zu speichern — nächstes Mal einfach /<Name> eingeben. Innerhalb der gleichen Session kann auch ein vorheriger Workflow resumed werden.
UI flächendeckend verschlankt. Terminal-Tool-Call-Boxen stapelten sich zu einer Wand aus abgerundeten Rahmen, Thinking-Blöcke hatten keinen dedizierten Expand-Key, und Extension-/MCP-Server-Management erforderte manuelle Konfig-Edits. Diese Woche: Rahmen entfernt, abgeschlossene Tools auf eine Zeile reduziert, Alt+T verwaltet Thinking, /extensions wird interaktiver Manager, MCP Resources durchsuchbar und @-vervollständigung.
Spracheingabe: Einfach ins Mikrofon sprechen
Jede Eingabe musste bisher getippt werden. Lange Befehle, komplexe Parameter, gemischter Chinesisch-Englisch-Text — langsam und fehleranfällig.
Diese Woche ergänzt /voice Spracheingabe. Zwei Modi: Hold-Modus — Space gedrückt halten zum Sprechen, loslassen zum Stoppen; Tap-Modus — einmal klicken zum Starten, nochmal klicken oder Stille stoppt automatisch. Audio wird über ein natives Mikrofon-Backend (@qwen-code/audio-capture N-API Addon) erfasst; auf Linux auto-fallback auf arecord/SoX; auf macOS Mikrofon-Berechtigung wird angefordert.
Transkription hat zwei Pfade: Batch-Modus (qwen3-asr-flash) nutzt OpenAI-compatible chat/completions + input_audio API; Realtime-Modus (qwen3-asr-flash-realtime, fun-asr-realtime) streamt PCM über WebSocket mit Live-Partialtextanzeige. Nach dem Sprechen bereinigt das Fast Model Füllwörter (“um”, “嗯”) und Tippfehler, behält aber die originale Ausdrucksweise — kein Rewriting. Bei Timeout oder Failure wird der rohe Transkript direkt verwendet. Spracheingabe produziert immer Text.
/model --voice wählt das Transkriptionsmodell; general.voice.{enabled,mode,language} konfiguriert das Verhalten.
Was Sie damit tun können:
/voice hold— Space gedrückt halten zum Sprechen, loslassen stoppt Transkription/voice tap— einmal klicken zum Starten, sprechen oder Stille stoppt/model --voice qwen3-asr-flash-realtime— Echtzeit-Streaming-Transkriptionsmodell wählen/voice status— aktuelle Sprachkonfiguration prüfen- Web Shell: Mikrofon-Button für Spracheingabe (Browser-Aufnahme, Daemon-Transkription)
Siehe PR #5502 , #5794 , #5755
Dynamic Workflows: Nach dem Ausführen speichern, beim nächsten Mal direkt aufrufen
Ein Workflow verschwand bisher nach dem Ausführen. Gleiche Aufgabe erneut? Prompt neu schreiben. Interrupted mid-Session? Keine Möglichkeit zum Fortsetzen.
Diese Woche schließt Dynamic Workflows diese Lücke. Nach Abschluss s drücken, um das Script in .qwen/workflows/<Name>.js zu speichern. Gespeichert = Slash-Command — nächstes Mal einfach /<Name> eingeben. Projekt-Level (nur im aktuellen Projekt) oder User-Level (alle Projekte) beim Speichern wählen; bestehende同名Scripts fordern Overwrite-Confirmation.
In der gleichen Session kann ein vorheriger Workflow resumed werden: resumeFromRunId replays aus JSONL-Logs, resumed am längsten unveränderten Prefix aus Cache, continued am ersten Divergence-Punkt. Jeder abgeschlossene Terminal-Run auto-speichert in <projectDir>/workflows/<runId>.json; /workflows-Panel zeigt History (persistent über Restarts; älteste Entries auto-cleaned).
Zusätzliche Fähigkeiten: Agent Stall Watchdog (Sub-Agent Timeout auto-retry 3x), Nested Calls (workflow('<Name>') innerhalb eines anderen Workflows), “workflow”-Keyword Soft-Redirect zum Workflow-Tool (deaktivierbar mit ui.disableWorkflowKeywordTrigger), Terminal-Bell-Notification bei Completion/Failure.
Was Sie damit tun können:
- Nach Workflow-Abschluss
sdrücken zum Speichern als/<Name>Slash-Command /workflows-Panel zeigt History, persistent über Restarts- Interrupted Workflow in der gleichen Session resumed
- Projekt- oder User-Level Speicherung, Sichtbarkeitsbereich wählen
Siehe PR #5600
UI-Erlebnis flächendeckend optimiert
Diese Woche bekamen Terminal und Web Shell einen konzentrierten Slim-Down — visuelle Noise-Reduktion, Interaktions-Effizienz und Management-Fähigkeiten in einem Rutsch verbessert.
TUI Rahmen-Entfernung + abgeschlossene Tool-Zusammenfassung. Jeder Tool-Call war bisher in abgerundeten Rahmen gewickelt; parallele Calls stapelten sich zu einer Box-Wand. Diese Woche: Rahmen komplett entfernt. Compact-Modus: abgeschlossene Tools auf eine Zeile (Status-Icon + Tool-Name + Dauer); nur aktive und fehlerhafte Calls bleiben expanded. Non-Compact-Modus unbeeinflusst.
Thinking Alt+T + Full-Screen-Viewer. Letzte Woche Thinking collapsible ohne dedizierten Expand-Key — Ctrl+O musste mit compactMode geteilt werden. Diese Woche: Alt+T verwaltet speziell Expand/Collapse aller Thinking-Blöcke. Klick auf eine collapsierte Thinking-Zeile öffnet AlternateScreen Full-Screen-Viewer mit Keyboard-Navigation (↑↓, PgUp/PgDn) + Mouse-Scroll.
/extensions wird interaktiver Manager. Bisher war /extensions eine read-only Flat-List; Installation/Konfiguration nur durch manuelle Settings-Edits. Diese Woche: interaktiver Multi-Tab-Manager — Installed-Tab gruppiert nach Level + per-Extension Action-Menu (enable/disable/favorit/scope ändern/update/uninstall); Discover-Tab sucht und one-click installiert Marketplace-Extensions; Sources-Tab fügt neue Marketplaces hinzu (GitHub Repo, Claude Marketplace, npm Package, lokaler Pfad). CLI hat ebenfalls qwen extensions sources add/list/update/remove Command-Group.
MCP Resources durchsuchbar und @-vervollständigung. MCP-Server-Resources hatten kein Discovery-Mechanism — Nutzer wussten nicht, welche Daten verfügbar. Diese Woche: /mcp-Dialog ergänzt View Resources Action, öffnet Resource-URI-Liste mit Details; @server: auto-vervollständigt Server-Resource-URIs; @ sucht Resources über alle Server. Prompts werden nicht mehr durch überstrenge Capability-Gating über-filtert.
Was Sie damit tun können:
- Compact-Modus: abgeschlossene Tools auf eine Zeile; Alt+T verwaltet Thinking
/extensionsöffnet Manager — suchen, installieren, konfigurieren, Extensions uninstallieren/mcp→ View Resources für MCP-Server-Daten,@server:für Resource-Vervollständigung/extensionsSources-Tab für Claude Marketplace oder GitHub Repo
Siehe PR #5003 , #5627 , #4850 , #5398 , #5544 , #5635 , #5733 , #5774

Artifact: Das Modell gibt Ihnen eine interaktive Web-Seite
Bisher konnte das Modell bei Architektur-Diagrammen oder interaktiven Dashboards nur Text und Tabellen im Terminal ausgeben — formatierte Ausgabe statt echte Charts, die man klicken oder draggen kann.
Diese Woche ergänzt das Artifact-Tool (experimentell, opt-in). Wenn aktiviert, kann das Modell generierten Content als Web-Seite direkt öffnen — Architektur-Diagramme mit klickbaren Nodes für Details, Daten-Tabellen mit Sort/Filter, Code-Walkthroughs mit klickbaren Links. Wie ein Designer-Prototype, der im Browser öffnet.
Alle Inhalte in lokalen Dateien (~/.qwen/artifacts/), geöffnet via file:// URLs — kein Netzwerk-Zugang. Same-File-Re-Run überschreibt die alte Version; andere Datei erstellt neue Seite. Generierter Content muss fully self-contained — keine externen CSS/JS-Referenzen, um unkontrollierbare externe Ressourcen zu vermeiden. Single-Page-Limit: 16 MB.
Aktivierung via Settings: experimental.artifact setzen, oder Environment-Variable QWEN_CODE_ENABLE_ARTIFACT=1. Nicht verfügbar in Non-Interactive und SDK-Modi standardmäßig.
Was Sie damit tun können:
- Modell ein interaktives Architektur-Diagramm generieren lassen — Nodes klicken für Details
- Daten-Dashboard mit Sort/Filter generieren
- Code-Walkthrough-Seite mit klickbarer Navigation generieren
experimental.artifactin Settings aktivieren, oderQWEN_CODE_ENABLE_ARTIFACT=1setzen
Siehe PR #5557
Vision Bridge: Text-Only-Modelle können jetzt Bilder sehen
Bisher wurden @-referenzierte Bilder bei Text-Only-Modellen (wie DeepSeek V4) durch “unsupported-image” ersetzt — das Modell konnte keinen Bildinhalt sehen.
Diese Woche ergänzt Vision Bridge automatische Kompatibilität. Wenn ein Nutzer @ ein Bild referenziert, das Primary-Model bekannt Text-Only ist, und der gleiche Provider ein Image-Capable-Modell hat, borrowed Qwen Code automatisch ein Vision-Modell zur Transkription des Bildinhalts als Text, der dann zum Primary-Modell gesendet wird. Keine Nutzer-Konfiguration nötig — trigger automatisch wenn: Primary ist Text-Only + gleicher Provider hat Vision-Modell + User-Turn enthält Image-Parts. Wenn Primary bereits Image-Input unterstützt, direkt senden ohne Bridge; wenn Primary-Modalities unbekannt oder kein Vision-Modell beim gleichen Provider verfügbar, Bridge nicht trigger, Original-Verhalten erhalten.
Bridge borrowed nur innerhalb des gleichen Providers — kein Cross-Provider-Routing, Credentials leaken nicht zu Drittanbietern.
Was Sie damit tun können:
- Text-Only-Modelle wie DeepSeek V4 nutzen und
@Screenshots referenzieren — automatisch als Text-Beschreibung transkribiert - Keine Konfiguration nötig; trigger automatisch wenn Bedingungen erfüllt
- Vision-Modell innerhalb des gleichen Providers borrowed, kein Cross-Provider-Routing
Siehe PR #5126
/stats: Token-Kosten im Überblick
Bisher konnte man nur schätzen, wie viele Token man verwendet oder wie viel man ausgegeben hat. Ein langer Task konnte zehntausende Token unbemerkt verbrauchen, aber /stats zeigte nur Session-Level-Totals — keine Per-Day, Per-Month oder Per-Model-Breakdowns.
Diese Woche ergänzt /stats persistente Token-Buchhaltung. /stats daily zeigt Tages-Totals, Request-Count und Input/Output/Cached/Thought-Breakdown gruppiert nach Modell und Auth-Type; /stats monthly zeigt Monatssummary; /stats export daily YYYY-MM-DD --format csv oder /stats export monthly YYYY-MM --format json --output <Pfad> exportiert eine Datei mit nur aggregierten Daten — kein Prompt/Response-Text oder Projekt-Pfade. Export-Pfade beschränkt auf Projekt-Working-Directory; Path-Traversal, Symlinks und Windows Alternate-Data-Stream-Pfade werden rejected.
Daten persist in ~/.qwen/stats/ und survive Restarts.
Was Sie damit tun können:
/stats daily— tägliche Token-Kosten gruppiert nach Modell sehen/stats monthly— Monatssummary sehen/stats export— CSV/JSON exportieren mit nur aggregierten Daten, kein privater Content- Daten persist über Restarts
Siehe PR #4564

Weitere neue Funktionen
| Funktion | PR | Auswirkung |
|---|---|---|
| Revivable Subagent + Transcript TTL | #5556 | Abgeschlossene Background-Agents können in der gleichen Session re-aktiviert werden ohne Context-Rebuild; alte Transcripts auto-expiren nach cleanupPeriodDays |
| Desktop Datei-Vorschau Side-Panel | #5730 | Desktop-App Datei-Vorschau nicht mehr Fullscreen; rechts docked resizable Panel, Conversation und File-Tree koexistieren; CJK-Paths und .md Domain-Misidentifikation gefixt |
| desktop-pet Skill | #4808 | /desktop-pet + Charaktername eingeben → Pixel-Pet Spritesheet auto-generieren und aktivieren |
| macOS 26+ Liquid Glass Icon | #5284 | brand-create auto-compiliert Assets.car; macOS 26+ Liquid Glass Icon-Rendering |
| Auto-Mode destruktive Befehle Hard-Block | #5754 | git reset --hard, git clean -fd, terraform destroy etc. haben deterministischen Regex-Pre-Filter in AUTO-Mode, nicht mehr LLM-Classifier-abhängig |
| /history collapse-on-resume | #4085 | History default collapsiert beim Resuming langer Sessions; /history collapse-on-resume speichert Preference; /history expand-now temporär expanded |
| Response-Timestamps [HH:MM:SS] | #5001 | output.showTimestamps Setting zeigt Timestamp vor jeder Assistant-Reply; opt-in, default off |
| Web Shell von qwen serve | #5392 | qwen serve serviert direkt Web Shell UI, keine extra Konfiguration nötig |
| QQ Bot Channel | #5202 | Neuer QQ Bot Channel Adapter; Qwen Code kann QQ-Gruppen verbinden |
| Loop Sekunden-Level Wake-Engine | #5182 | /loop Timing-Precision von Minuten auf Sekunden upgraded; Delay-Range [60, 3600]s; Self-Paced Wakeup zählt nicht gegen MAX_JOBS-Limit |
| Loop Self-Paced Cycle | #5197 | /loop <prompt> (kein Interval) wird Self-Paced Cycle — Modell entscheidet wann Re-Check, kein fixed 10-Minuten-Cron; kurze Intervalle bei schnellem Polling, auto-extends bei Stabilität, stoppt bei Task-Done |
| Workspace Permissions Rules API | #5743 | Daemon und ACP-Clients können Workspace Allow/Ask/Deny-Rules via REST API lesen/schreiben |
| Requesty Provider | #5478 | Neuer Requesty-Model-Provider-Support |
| Workflow P5 Token Budget + Per-Run UI | #5231 | Workflows ergänzen Token-Budget-Control und Per-Run UI-Display |
| DashScope preserve_thinking Default On | #5637 | DashScope Provider default sendet Thinking-Tokens; Modell-Reasoning-Prozess mehr komplett |
| fastOnly/voiceOnly Modell-Tags | #5632 | Modelle können als fastOnly oder voiceOnly getaggt werden, hidden aus der Haupt-Modell-Liste |
| Settings File Change Detection | #4933 | chokidar Watcher detektiert Settings-File-Changes und auto-refreshed Config |
| /extensions Archive Install Source | #4909 | Extensions aus Archive-Files installieren unterstützt |
| MCP Resource Read Tool | #5781 | Modell erhält read_mcp_resource Tool zum autonomen Lesen von MCP-Server Resource-URIs — kein manueller @-Injection nötig |
| Web Shell Session Branching | #5613 | Web Shell unterstützt Session Branching |
| Daemon Idle Detection | #4934 | GET /health?deep=true detektiert Daemon Idle-State |
| Agent Ignore Files Konfigurierbar | #4653 | Agents können File-Ignore-Lists konfigurieren |
| Response Token Rate Display | #5401 | Status-Bar optional zeigt Response Token Rate |
| Hook System toolCallId | #4918 | Hook-System empfängt raw API Call ID |
| i18n Tool Display Names | #5220 | TUI und Web-Shell Tool-Namen lokalisiert |
| kebab-case Filename Lint | #4797 | ESLint enforced kebab-case Filenames |
| ACP Permission Timeout Konfigurierbar | #5260 | Daemon ACP Permission Timeout-Duration konfigurierbar |
| Remote LSP Status Route | #5741 | qwen serve ergänzt Remote LSP Status Query Endpoint |
| Extension Operation Polling | #5753 | Extension-Operations unterstützen Polling-Wait-for-Completion |
🔧 Wichtige Fixes
| Fix | PR | Auswirkung |
|---|---|---|
| Permission-Cancel stoppt Execution sofort | #5258 | Bei Permission-Deny stoppt Agent sofort — kein Skipping past Gate |
| Per-Turn Tool-Call Circuit Breaker | #5279 | Hard-Cap per Turn + optional Loop-Detection prevents infinite Tool-Call-Loops |
| Consecutive Identical Tool Call Always-On Guard | #5573 | Repeated identical Tool-Calls auto-blocked, kein Opt-in nötig |
| Plan Gate Escape Path wenn unavailable | #5430 | Plan Gate Agent-Failure blockiert nicht mehr den gesamten Turn; Nutzer kann weitermachen |
| Manual Plan Mode Entry requires Confirmation | #5595 | Prevents accidental Plan-Mode Toggle |
| Workflow Path-Traversal Protection | #5740 | Validates runId to prevent Path-Traversal causing Directory Mis-Deletion |
| Fork Turn Cap + Permission Escalation | #5737 | Fork Sub-Agents haben Turn-Caps; Permission-Requests escalieren zum Main-Agent zur Confirmation |
| Desktop fixt Markdown-Link Bugs | #5730 | readme.md als Domain misidentifiziert → redirect auf parked page; CJK-Paths /Users/me/项目/笔记.md nicht linkified wegen ASCII-only Regex |
| IME Cursor-Positioning restored | #4993 | IME Composition Input Cursor-Offset Regression from #4779 gefixt |
| systemd-inhibit poppt kein Password-Box mehr breaking TUI | #5318 | --no-ask-password Param prevents systemd Password-Request corrupting Terminal UI |
| auto-memory /quit no longer OOM | #5181 | Exit-time Auto Memory Extraction crashet nicht mehr bei großen Conversations |
| Mid-Turn Image Messages preserved | #5183 | Bilder pasted mid-Model-Reply nicht mehr lost |
| Duplicate Model Name Disambiguation | #5769 | Same Model-Name across Providers nicht mehr conflated; zeigt Provider-Identifier |
| Voice Addon packaged into Standalone Archive | #5628 | @qwen-code/audio-capture N-API Addon included in Standalone tar.gz; Voice Input nicht mehr missing Prebuilt Binaries |
| Stale Prompt Client Rejection | #5784 | Daemon rejects expired Prompt-Clients, prevents Ghost Sessions |
| MCP Claude Server Transport Type Mapping | #5812 | Claude MCP Server sse/stdio/streamable-http Transport-Types korrekt gemapped in Import und .mcp.json |
| Paste Image Path Auto-Promoted to Attachment | #5803 | Terminal-pasted Image File Paths auto-recognized als Attachments, kein manuelles @ nötig |
| Model remembers selected Provider | #5179 | Multiple Providers sharing same Model ID → Selection nicht mehr Provider-lost |
| Thinking Emoji → Unicode Symbol | #5788 | Thinking und Summary Icons switchen von Emoji zu Unicode Text Symbols (💡→⟡) to avoid Terminal Rendering Inconsistencies |
🎉 Contributors
Danke an folgende neue Contributors, die diese Woche ihren ersten PR submitted haben:
- @shiloong — Hook System toolCallId passes raw API Call ID (#4918 )
- @Eric-GoodBoy-Tech — QQ Bot Channel Adapter (#5202 )
- @aspnmy — MCP Server Config (#5311 )
- @xxlaura — desktop-pet Pixel-Art Skill (#4808 )
- @mvanhorn — Windows Home Path Expansion und Desktop Session Ghost Entry Fix (#5253 )
- @CubeLander — Plan Gate AbortSignal Isolation (#5185 )
- @water-in-stone — Settings File Change Detection (#4933 )
- @OrbitZore — systemd-inhibit —no-ask-password (#5318 )
- @Gove2004 — /history collapse-on-resume (#4085 )
- @Zoean-z — trustedFolders Comments Preserved (#4746 )
- @ken-jo — Hooks Dead Field Cleanup (#5423 )
- @Thibaultjaigu — Requesty Provider (#5478 )
- @interconnectedMe — MCP Improvements (#5488 )
- @lcheng321 — Input Box Background Fill Fix (#5568 )
- @russeell — OpenAI Log File Limit Fix (#5569 ) und ask_user_question Answer Index Validation (#5622 )
Danke an folgende Core-Contributors für ihre continued Iteration diese Woche:
- @he-yufeng — BMP/WebP/AVI Image Format Fix, Model Text-Only Tag, Duration Rendering, Emacs Ediff Path Escaping, Strict Env Var Parsing (10+ PRs)
- @wenshao — Circuit Breaker, Consecutive Call Guard, Daemon Mid-Turn Events, Settings v5 Migration Idempotency, Theme Background Fix, Triage Cross-Repo Interception, SDK Bundle Budget (8+ PRs)
- @doudouOUC — Sed File History, Mid-Turn Image Preservation, Model Provider Memory, Permission-Cancel Stop, Daemon Workspace Provider Refresh, Duplicate Model Disambiguation, Stale Client Rejection, MCP OAuth Docs (7+ PRs)
- @yiliang114 — Extension List Spacing, Bare Fast Model Auth, Settings Migration, VSCode Sidebar Chat View (4+ PRs)
- @qqqys — Artifact Confirm + Cancel, Voice Addon Standalone Packaging, Fork Turn Cap + Permission Escalation, /context Token Source Fix (4+ PRs)
- @huww98 — VSCode Per-Session McpServer, Token Plan Model Completion, Stats Double-Count Fix
- @ZijianZhang989 — Window Title Shows Session Name, Auto-Memory /quit OOM Fix
- @kkhomej33-netizen — Streaming Thought Buffer Limit, Interactive Tool Output Memory Reduction
- @Alex-ai-future — @path Dropdown Enter Close, Plan Gate Escape Path, Slash Completion Ranking
- @LaZzyMan — Plan Mode Manual Confirmation, Workflow Path-Traversal Protection
- @DragonnZhang — Telemetry Crash Protection, Extension Secrets Fallback
- @pomelo-nwu — Thinking Emoji→Unicode, Custom Model ID Save/Restore
- @chiga0 — Theme Background Fill Removed from Input Box and User Messages
- @ZevGit — VP Mouse Interaction Stabilization
- @BZ-D — Claude MCP Transport Type Mapping Fix
- @cyphercodes — Resume Preview History Rendering, Loop Detection Non-Interactive Failure
- @BenGuanRan — IME Cursor Positioning Restoration
- @Jerry2003826 — Output Language Effective in Side Queries
- @tanzhenxin — GLM on DashScope No Longer Drops web_fetch Content
Upgrade-Optionen:
- CLI:
npm i @qwen-code/qwen-code@latest -gausführen, um auf die latest Version zu upgraden. - Desktop: Installer für Ihre Plattform von GitHub Releases herunterladen.
Fragen oder Vorschläge? Eröffnen ein Issue auf GitHub Issues !