<!-- 使用 release/v0.19.0 分支中 .github/release.yml 的配置生成发布说明 -->
## 更新内容
* chore(release): v0.18.5 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5558
* ci(release): 稳定版本发布后自动发布 VSCode 插件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5572
* fix(cli): 渲染完整的恢复预览历史记录 by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5565
* fix(cli): 在换行输入区域填充背景色 by @lcheng321 in https://github.com/QwenLM/qwen-code/pull/5568
* fix(cli): 在检测到循环时使非交互式运行失败 by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5564
* fix(core): 尊重零 OpenAI 日志文件限制设置 by @russeell in https://github.com/QwenLM/qwen-code/pull/5569
* fix(core): 在当前认证下保留基础快速模型 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5553
* feat(lint): 使用 ESLint 强制文件名使用短横线命名法 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4797
* [codex] 修复短横线命名法检查的旧版文件名白名单 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5578
* refactor(cli): 将 serve 相关文件重命名为短横线命名法 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5592
* feat(extensions): 支持归档安装源 by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4909
* fix(cli): 在斜杠补全排名中优先使用命令名而非别名 by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/5577
* test(integration): 为无 AK 守护进程测试添加模拟 OpenAI 服务器 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5560
* refactor(core): 在预设中用 customHeaders 替换 OpenRouter/Requesty 提供商类 by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5539
* feat(voice): 支持原生捕获、流式传输和偏置的语音听写 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5502
* feat: 支持可恢复的后台子代理及子代理转录 TTL by @qqqys in https://github.com/QwenLM/qwen-code/pull/5556
* feat(core): 新增 Artifact 工具用于发布交互式 HTML 页面 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5557
* feat(cli): 在每次助手回复前添加可选的 [HH:MM:SS] 时间戳 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5001
* fix(core): 用户手动进入计划模式时要求确认 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5595
* fix(core): 连续调用相同工具时启用常驻防护 (#5019) by @wenshao in https://github.com/QwenLM/qwen-code/pull/5573
* fix(ci): 增强 tmux 分类报告机制 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5548
* fix(voice): 暴露原生录音器降级方案,避免缺失预编译时静默失败 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5605
* fix(core): 防止 DashScope 上的 GLM 丢弃 web_fetch 内容 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5599
* 修复原生语音录音器在停止错误后的重试问题 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5609
* [codex] ci(triage): 确认斜杠分类请求 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5594
* [codex] 支持 Artifact 自动打开设置 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5617
* feat(tui): 移除工具组边框并折叠已完成的工具结果 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5003
* feat(workflows): 完成动态工作流移植——支持恢复、已保存工作流、关键词触发、通知 (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5600
* feat(web-shell): 支持守护进程会话分支 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5613
* fix(core): 后端感知的 Artifact 发布确认与取消处理 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5615
* test(integration): 在 PR 上运行无 AK 冒烟测试 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5607
* fix(cli): 使悬挂的重放工具调用失败 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5624
* fix(voice): 将原生音频插件打包到独立归档中 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5628
* ci: 将仓库内 PR 的 Linux 测试路由至自托管运行器 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5620
* ci(release): 将发布失败任务排队以进行自动修复 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5551
* feat(cli): 在 /mcp 对话框中浏览 MCP 服务器资源 by @wenshao in https://github.com/QwenLM/qwen-code/pull/5635
* refactor(cli): 完成 serve 短横线命名法文件重命名 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5604
* feat(core): DashScope 提供商默认开启 preserve_thinking by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5637
* ci(audio-capture): 在 arm64 上交叉编译 darwin-x64 预编译文件,移除 macos-13 运行器 by @qqqys in https://github.com/QwenLM/qwen-code/pull/5643
* ci: 增强自托管运行器路由(#5620 审查后续) by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5644
* fix(cli): 增强 ACP 会话列表分页参数 by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5618
* docs(mcp): 修正 mcp add scope 默认值 by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5593
* feat(tui): 新增思考块查看器,支持 Alt+T 展开/折叠 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5627
* fix(cli): 严格解析 serve 速率限制环境变量 by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5612
* fix(core): 严格解析 API 超时环境变量 by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5602
* fix(serve): 验证 readText 行数限制 by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5639
* fix(core): 转义 emacs ediff 路径中的反斜杠和引号 by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5630
* fix(cli): 当通过 QWEN_MODEL 设置模型时,检测 USE_OPENAI 认证 by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5647
* test(integration): 在容器沙箱环境下跳过 qwen serve 流式测试套件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5655
* refactor(core): 提取 Protocol 枚举并将模型身份与认证类型解耦 by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/5089
* fix(webui): 停止在用户主动删除时自动重建会话 by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5633
* fix(cli): 保持 settings v5 迁移幂等 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5676
* fix(test): 在 ACP set_config_option 测试中恢复 openai 模型选择 by @wenshao in https://github.com/QwenLM/qwen-code/pull/5721
* fix(test): 通过 QWEN_HOME 隔离 ACP 集成代理以解决并行设置竞争条件 by @wenshao in https://github.com/QwenLM/qwen-code/pull/5724
* fix(test): 使 ACP set_config_option 测试使用确定的 openai 提供商模型 by @wenshao in https://github.com/QwenLM/qwen-code/pull/5728
* fix(core): 在默认的 getAllConfiguredModels 列表中保留活动运行时模型 by @wenshao in https://github.com/QwenLM/qwen-code/pull/5729
* feat(desktop): 在可调整大小的侧边栏中显示文件预览,而非全屏 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5730
* fix(core): 移除导致统计重复计数的冗余 reportSuggestionUsage by @huww98 in https://github.com/QwenLM/qwen-code/pull/5684
* fix(core): 验证 ask_user_question 答案索引 by @russeell in https://github.com/QwenLM/qwen-code/pull/5622
* feat(core): 支持可配置的代理忽略文件 by @shenyankm in https://github.com/QwenLM/qwen-code/pull/4653
* fix(daemon): 刷新工作区提供商默认值 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5638
* feat(core): 添加 fastOnly/voiceOnly 标志以从主模型列表中隐藏模型 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/5632
## 新贡献者
* @lcheng321 在 https://github.com/QwenLM/qwen-code/pull/5568 中首次贡献
* @russeell 在 https://github.com/QwenLM/qwen-code/pull/5569 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.18.5...v0.19.0
<!-- Release notes generated using configuration in .github/release.yml at release/v0.19.0 -->
## What's Changed
* chore(release): v0.18.5 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/5558
* ci(release): Auto-publish VSCode companion after stable releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5572
* fix(cli): render full resume preview history by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5565
* fix(cli): fill content area background on wrapped input lines by @lcheng321 in https://github.com/QwenLM/qwen-code/pull/5568
* fix(cli): fail non-interactive runs on loop detection by @cyphercodes in https://github.com/QwenLM/qwen-code/pull/5564
* fix(core): respect zero OpenAI log file limit by @russeell in https://github.com/QwenLM/qwen-code/pull/5569
* fix(core): keep bare fast model on current auth by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5553
* feat(lint): enforce kebab-case filenames with ESLint by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/4797
* [codex] Fix legacy filename allowlist for kebab-case lint by @qqqys in https://github.com/QwenLM/qwen-code/pull/5578
* refactor(cli): Rename serve files to kebab-case by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5592
* feat(extensions): support archive install sources by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4909
* fix(cli): prefer command name over alias in slash completion ranking by @Alex-ai-future in https://github.com/QwenLM/qwen-code/pull/5577
* test(integration): add fake OpenAI server for no-AK daemon tests by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5560
* refactor(core): replace OpenRouter/Requesty provider classes with customHeaders in preset by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/5539
* feat(voice): voice dictation with native capture, streaming, and biasing by @qqqys in https://github.com/QwenLM/qwen-code/pull/5502
* feat: revivable background sub-agents and subagent transcript TTL by @qqqys in https://github.com/QwenLM/qwen-code/pull/5556
* feat(core): add Artifact tool to publish interactive HTML pages by @qqqys in https://github.com/QwenLM/qwen-code/pull/5557
* feat(cli): add optional [HH:MM:SS] timestamp before each assistant turn by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/5001
* fix(core): require confirmation when user manually enters plan mode by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5595
* fix(core): always-on guard for consecutive identical tool calls (#5019) by @wenshao in https://github.com/QwenLM/qwen-code/pull/5573
* fix(ci): harden tmux triage reporting by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5548
* fix(voice): surface native recorder fallback so missing prebuilds aren't silent by @qqqys in https://github.com/QwenLM/qwen-code/pull/5605
* fix(core): prevent GLM on DashScope from dropping web_fetch content by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5599
* Fix native voice recorder retry after stop errors by @qqqys in https://github.com/QwenLM/qwen-code/pull/5609
* [codex] ci(triage): acknowledge slash triage requests by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5594
* [codex] Support artifact auto-open setting by @qqqys in https://github.com/QwenLM/qwen-code/pull/5617
* feat(tui): remove tool group borders and collapse completed tool results by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5003
* feat(workflows): finish Dynamic Workflows port — resume, saved workflows, keyword trigger, notifications (#4721) by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/5600
* feat(web-shell): support daemon session branching by @ytahdn in https://github.com/QwenLM/qwen-code/pull/5613
* fix(core): backend-aware artifact publish confirmation + cancel handling by @qqqys in https://github.com/QwenLM/qwen-code/pull/5615
* test(integration): run no-AK smoke tests on PRs by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5607
* fix(cli): Fail dangling replayed tool calls by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5624
* fix(voice): bundle native audio addon into standalone archives by @qqqys in https://github.com/QwenLM/qwen-code/pull/5628
* ci: route in-repo PRs' Linux test to self-hosted runner by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5620
* ci(release): queue release failures for autofix by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5551
* feat(cli): browse MCP server resources in the /mcp dialog by @wenshao in https://github.com/QwenLM/qwen-code/pull/5635
* refactor(cli): Finish serve kebab-case filenames by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5604
* feat(core): default-on preserve_thinking for DashScope provider by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/5637
* ci(audio-capture): cross-compile darwin-x64 prebuild on arm64, drop macos-13 runner by @qqqys in https://github.com/QwenLM/qwen-code/pull/5643
* ci: harden self-hosted runner routing (follow-up to #5620 review) by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5644
* fix(cli): harden ACP session list pagination params by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5618
* docs(mcp): correct mcp add scope default by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5593
* feat(tui): add thinking block viewer with Alt+T expand/collapse by @chiga0 in https://github.com/QwenLM/qwen-code/pull/5627
* fix(cli): parse serve rate limit env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5612
* fix(core): parse API timeout env strictly by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5602
* fix(serve): validate readText line limits by @tt-a1i in https://github.com/QwenLM/qwen-code/pull/5639
* fix(core): escape backslashes and quotes in emacs ediff paths by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5630
* fix(cli): detect USE_OPENAI auth when the model is set via QWEN_MODEL by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/5647
* test(integration): skip qwen serve streaming suite under container sandbox by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5655
* refactor(core): extract Protocol enum and decouple model identity from auth type by @zzhenyao in https://github.com/QwenLM/qwen-code/pull/5089
* fix(webui): stop auto-recreating session on user-initiated delete by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/5633
* fix(cli): keep settings v5 migration idempotent by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/5676
* fix(test): restore openai model selection in ACP set_config_option test by @wenshao in https://github.com/QwenLM/qwen-code/pull/5721
* fix(test): isolate ACP integration agents via QWEN_HOME to end parallel-settings race by @wenshao in https://github.com/QwenLM/qwen-code/pull/5724
* fix(test): make ACP set_config_option test use a deterministic openai provider model by @wenshao in https://github.com/QwenLM/qwen-code/pull/5728
* fix(core): keep active runtime model in default getAllConfiguredModels listing by @wenshao in https://github.com/QwenLM/qwen-code/pull/5729
* feat(desktop): show file preview in a resizable side panel instead of fullscreen by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/5730
* fix(core): remove redundant reportSuggestionUsage causing double-counted stats by @huww98 in https://github.com/QwenLM/qwen-code/pull/5684
* fix(core): validate ask_user_question answer indexes by @russeell in https://github.com/QwenLM/qwen-code/pull/5622
* feat(core): respect configurable agent ignore files by @shenyankm in https://github.com/QwenLM/qwen-code/pull/4653
* fix(daemon): Refresh workspace provider defaults by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/5638
* feat(core): add fastOnly/voiceOnly flags to hide models from main model list by @callmeYe in https://github.com/QwenLM/qwen-code/pull/5632
## New Contributors
* @lcheng321 made their first contribution in https://github.com/QwenLM/qwen-code/pull/5568
* @russeell made their first contribution in https://github.com/QwenLM/qwen-code/pull/5569
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.18.5...v0.19.0