Skip to Content
BlogFeature Updates09-03 Product Update

Qwen Code Weekly: Pick How the AI Talks to You, DingTalk Bot Sends Files, Web Shell Gets a Built-in Terminal

Qwen Team
2026-09-03

Qwen Code shipped two stable releases this week — v0.22.3 and v0.23.0 — with 320+ PRs merged.

Pick how the AI talks to you. Four built-in output styles — Concise, Proactive, Explanatory, and Learning — pick one, or switch anytime mid-conversation.

The DingTalk bot sends files now. Reports and documents the AI writes go straight into the chat as attachments — open them right from your phone.

Web Shell gets a built-in terminal. Run commands right next to the conversation. Each tab is independent — they don’t get in each other’s way.

✨ New Features

Output Styles: Pick How the AI Talks

Different people want different things from AI replies: some want short answers straight to the point, others want the AI to talk while it works and teach them along the way. This week, output styles became configurable, with four built-in options:

  • Concise: conclusion first — no preamble, no process description
  • Proactive: gets started right away; when unsure, it states its assumptions and keeps going instead of asking you again and again
  • Explanatory: explains the surrounding code while it edits
  • Learning: teaches as it works, leaving small decisions for you to make yourself

Three ways to pick: set general.outputStyle in settings.json for a permanent default, pass --output-style at launch for a single session, or switch anytime with /output-style — the next reply already uses the new style.

What you can do:

  • Switch to Concise when you only want results — the AI jumps straight to the conclusion
  • Switch to Explanatory or Learning when you’re learning a codebase — the AI explains as it edits
  • Change styles mid-conversation — /output-style switches anytime

See PRs #9565 , #10283 , #10683 

The output style picker

Goal: The AI Drafts, You Just Confirm

Last week, /goal-draft let the AI write the goal for you. This week, once the draft is done, the AI shows you the full goal in a confirmation dialog — confirm it and the Goal starts running immediately.

For tasks that need several rounds of work and have clear completion criteria, the AI decides on its own that the task is worth seeing through, drafts a goal, and asks you. If you don’t like this behavior, you can turn it off entirely in settings. Right now this works in interactive terminal sessions; Web Shell support is on the way.

Last week, Goal got a token budget. This week, the budget size is up to you: change model.goalTokenBudget in settings — bigger or smaller, whatever you need. Set it to -1 for no cap.

What you can do:

  • The AI writes the goal; you confirm and it gets to work
  • For long tasks with clear completion criteria, the AI proposes seeing them through
  • Raise or lower the budget — full control

See PRs #10171 , #10543 

Goal confirmation dialog

Code Review: Fix Rounds Only Re-review Changes, and Effort Sticks

Fix rounds only re-review what changed. In the review-fix-review loop, each later round only reviews files that changed. Files reviewed but untouched keep the previous round’s verdict — saves tokens and time.

Effort sticks. Once you explicitly set review depth with --effort, running /review in the same project next time picks up that same depth automatically.

Long runs report progress. When an autofix round runs long, the status comment on the PR updates roughly every 10 minutes with runtime and last-activity time — you can tell at a glance whether it’s still working.

Repeat issues get flagged. If a serious issue in the same file comes back after a fix, the review verdict explicitly flags the chain so you know it’s time to try a different approach.

What you can do:

  • Iterate locally — each round only re-reviews changed files, so several rounds in a row barely cost tokens
  • Run /review --effort high once in a project, and plain /review afterwards uses the same depth
  • Autofix runs on a PR for hours — the status comment updates every 10 minutes, so you always know it’s alive

See PRs #9659 , #9883 , #9771 , #10010 

The DingTalk Bot Sends Files Now

The Channel bot in DingTalk could only send text and images before. Reports and documents the AI wrote ended up pasted into messages — if you wanted the actual file, you had to go back to your computer. Now the bot sends files as attachments: the AI finishes a report and sends the file straight into the DingTalk chat, ready to open and download from your phone. When the bot messages you on its own, it can attach files too.

What you can do:

  • Reports and documents the AI writes go to DingTalk as attachments
  • Open, view, and download them right from your phone
  • Proactive updates from the bot can carry files too

See PR #10893 

The bot sends a file as an attachment in a DingTalk chat

Web Shell: Built-in Terminal, Better Session and Workspace Management

Open a terminal next to the chat. Working in the Web Shell, you often want to run a few commands yourself: spin up a server to check the result, verify a build. Now the right panel opens a terminal right next to the conversation. Each tab is its own terminal, opening in the current workspace’s directory — keep a long-running server in one tab and type commands in another; they don’t touch each other.

Web Shell built-in terminal

Start tasks without a project. New tasks can now live outside any workspace — ask a quick question or handle something unrelated to a specific project. These sessions have their own list, with rename, export, and archive all supported.

Find sessions by what you talked about. Forgot the session title? Search the conversation itself. Each matching session shows a snippet of the message that matched.

Scheduled tasks get a clean context. When a scheduled task runs repeatedly, you can choose to start a fresh session each run — each run’s context stays independent. Sessions from the same task group together automatically, so the list stays tidy.

All workspaces at a glance. A new workspace overview panel lists every workspace on one page: how many sessions are running, MCP connection status, current branch, and uncommitted changes. You can start a new task directly from any row.

Workspace overview panel

A better session overview. The session overview page is now a table with sorting, filtering, and pagination. Narrow windows scroll horizontally while key columns stay pinned. Find it in the row of small icons at the bottom of the sidebar — the grid icon, with a “Session Overview” tooltip on hover.

Phone pairing moved to the top right. A small QR icon in the top right of the conversation opens a pairing code — scan it with your phone to connect to this session on your computer and hand the AI tasks from your phone (this feature is called Local Control). If the feature is off, clicking it takes you straight to the settings page to turn it on.

See Git status before you act. Update Project, Commit, and Push now show status hints: how many commits you’re behind or ahead, and how many uncommitted changes you have. Updating a project with uncommitted changes? Stash them first, or discard them — your choice.

What you can do:

  • Run commands right next to the conversation
  • Search what you talked about to find old sessions
  • See the state of every workspace at a glance

See PRs #9984 , #10514 , #10612 , #10233 , #10611 , #10589 , #10115 , #10432 , #10397 , #10390 

📊 More New Features

Workflows are manageable mid-run. Running workflows now support viewing progress, pause, resume, cancel, and re-run — cancel takes effect immediately. See PRs #10411 , #10468 

Memory splits into project and personal. When you ask the AI to remember something, you can choose the current project or your personal global memory. The two are strictly separated — nothing leaks between them. See PR #9895 

Session–PR links get more complete. Last week, PRs created from the Web Shell Git panel linked back to the session. This week fills in the gaps: PR status gets colored icons — green for open, purple for merged, red for closed; searching by issue number finds the matching session; and PRs the AI creates by running gh pr create in the chat get recorded too. See PRs #9729 , #10258 , #10425 , #9739 

Mem0 external memory is officially ready. Want to connect Qwen Code to the Mem0 memory service? Install the official extension package, configure it, and you’re set. See PRs #10653 , #10634 

Sessions on one machine can message each other by name. When several sessions split the work, one session can find another by name and send it a message directly. See PR #10158 

Custom emojis for task status. In the DingTalk Channel, the emojis shown while a task runs and after it finishes can now be swapped for ones you like. See PR #10610 

Provider config applies immediately. Edit modelProviders in settings.json and the current session picks up the new config right away. See PRs #10582 , #10269 

👏 Experience Improvements

A unified plus menu in the Web Shell input box. Attachments, files, extensions, MCP services, and skills all live in one plus menu — click + to add any of them. See PR #10379 

Bold text renders again, session names show in full. Bold text in AI replies is back, and session names in the sidebar are fully visible. See PR #10157 

All tool summaries collapse. Tool summary rows can now collapse; sub-tools stay collapsed, and MCP Apps render separately from other aggregated content. See PR #10231 

Copy terminal errors with one click. When something goes wrong in the Web Shell terminal, one click copies the error. See PR #10001 

Goals show up in the resume list. In the list and search for resuming sessions, Goal sessions show the goal itself. See PR #10295 

Long turns stay expanded. Long turns loaded through pagination stay expanded — collapse them manually when you’re done reading. See PR #10086 

More ways to install extensions. Extensions can now be installed from a local path, and from internal corporate Git repositories too. See PRs #10131 , #10156 

Artifact updates show instantly. When an artifact’s content changes, its timestamp and size update immediately — the preview always shows the latest version. See PR #9929 

🔧 Important Fixes

FixWhat it means for youPR
Chinese input is visible on WindowsTyping with Microsoft Pinyin in Windows Terminal, candidate text no longer gets hidden behind the cursor#9803 
Web Shell blank screens get an error messageWhen the page fails to load, you see a recoverable error prompt#10215 
Oversized requests auto-compress and retryWhen the gateway returns 413, the context compresses automatically and retries — the session keeps going#10408 
LM Studio conversations work againFixed a model parameter compatibility issue — LM Studio can start new conversations normally#10275 
AUTO mode tightens writes outside the workspaceWriting files outside the workspace always requires manual confirmation#8744 
Claude models get streaming timeout protectionStuck output now times out and stops instead of hanging#9945 
DeepSeek uses the model’s default samplingFixed the issue that forced temperature to zero — output now matches the model’s own behavior#9879 
MCP connections are more stableFixed connections getting stuck during HTTP probing#10091 
Better vision model supportqwen3.8-flash and qwen3.8-plus handle images and video natively; glm-4.6v and similar models are auto-detected as vision models#10195 , #10278 
qwen3.8-max thinking control is stableThinking intensity settings stay in sync before and after session execution#10244 
Qwen3 hybrid thinking output worksReplies mixing two thinking formats used to error out or come out garbled — now both thinking and answers display correctly#9607 
Reinstall failures no longer lose skills on WindowsSkill installation now backs up before replacing#10189 
Pinned sessions stay in their groupPinned sessions keep showing in their original group#10416 
DingTalk task cards recover after network dropsAfter the network drops and comes back, task cards no longer stick at “Running” — phones that reconnect see the latest progress#10357 
Multi-image DingTalk messages keep their orderMultiple images in a rich-text message reach the AI in order#9922 
Session names survive /clearManually renamed sessions keep their name after clearing#9260 

👥 Contributors

ContributorContributionsPR Links
@yiliang114 A batch of session and stability fixes: 413 auto-compress retry, streaming timeout protection for Claude models, provider hot reload, Qwen3 hybrid thinking stream support, VS Code extension wired into the Web Shell#10408 , #9945 , #10582 , #9607 
@wenshao Review system hardening across the board, Web Shell workspace and session panels, PR-to-issue search, branch selector status hints#10589 , #10612 , #10425 , #10397 
@qqqys Channel ask-and-do plus DingTalk file sending, output style entry point, Goal self-proposal and budget settings, scheduled task sessions#10713 , #10893 , #10683 , #10171 
@doudouOUC Channel named tasks and parallelism control, Web Shell standalone chats, daemon session API, Mem0 extension#10198 , #10574 , #10514 , #10653 
@chiga0 OpenTUI terminal rendering engine migration, Channel init timeout handling#10134 , #10739 , #10404 
@qwen-code-dev-bot CI stability and test reliability fixes#10329 , #10572 , #10443 
@AaronZ345 Multiple fixes: DeepSeek sampling parameters, Web Shell input box recovery, Java SDK error display#9879 , #10232 , #9924 
@ytahdn Multiple Web Shell improvements: built-in terminal, session overview table, input box plus menu#9984 , #10115 , #10379 
@LaZzyMan qwen-live voice service, Computer Use stability hardening#10367 , #10319 
@callmeYe Extension and skill management, qwen3.8-max thinking control fix, private repo extension installs#10131 , #10244 , #10156 
@DragonnZhang Agent execution mode display, SDK dependency cleanup#9955 , #10039 
@harjothkhara Web Shell blank screen recovery, MCP connection stability, duplicate session name check#10215 , #10091 , #10032 
@dreamWB Web Shell artifact snapshots, session origin display settings#10747 , #10079 
@tomsen02 Debug logs isolated per session, directory trust check fix#9930 , #10470 
🆕 @bluefateludi 🎉 First contribution: Chinese input visibility on Windows, /review comment scope check#9803 , #9801 
@destire-mio Mouse click support in @-completion tabs, invalid settings cleanup#8395 , #8754 
🆕 @Sumire-no-kai 🎉 First contribution: cross-session message target disambiguation, workflow feedback classification#10083 , #10361 
@xianjianlf2 Distinguishing compaction failure causes, parallel dev startup conflict fix#9119 , #8456 
@BenGuanRan Multi-image DingTalk rich-text messages delivered in order#9922 
@DennisYu07 Added SWE-bench results to the README#10808 
🆕 @Dmatut7 🎉 First contribution: docs on evidence-based reasoning#8702 
🆕 @imrehg 🎉 First contribution: npm script compatibility fix#8725 
🆕 @KXHXK 🎉 First contribution: keyless auth auto-detection for Vertex AI#9045 
🆕 @liujiayi771 🎉 First contribution: terminal hardware cursor alignment#10417 
🆕 @lwind233 🎉 First contribution: large message support in the Python SDK#9337 
🆕 @MingyaWang 🎉 First contribution: image viewing compatibility with older sharp versions#10633 
🆕 @mredbishop 🎉 First contribution: fix for LM Studio conversation startup failures#10275 
@PratikWayase AUTO mode no longer auto-approves writes outside the workspace#8744 
@rbalachandar Clearer model switch prompts after provider updates#9023 
🆕 @shoemoney 🎉 First contribution: fix for relative path support in the Web Shell#9817 
@TianYuan1024 Test metric corrections#10735 
@tlysanhuo /review remembers review effort#9883 
🆕 @tonydzi 🎉 First contribution: fix for question host in stream-json mode#9414 
🆕 @Wkewen 🎉 First contribution: copy button for Web Shell terminal errors#10001 
@yu-xin-c Clearer error messages for streaming timeouts#9896 
@zhou2024NAU Path safety check for Windows screenshots#9847 
@zjgzx1988 Artifact timestamp and size update instantly#9929 
@zjunothing Rendering optimization for repeated images#8789 

Upgrade: Run npm i @qwen-code/qwen-code@latest -g to upgrade to the latest version.

If you have questions or feedback, feel free to open an issue on GitHub Issues !

Last updated on