← 返回更新日志

Qwen Code v0.21.0

2026-07-24 · GitHub 原文
<!-- qwen-release-notes:v1 --> ## 亮点 _详见下方的完整变更列表。_ ## 破坏性变更 暂无已知的破坏性变更。 ## 完整变更列表 ### 新功能 - feat(web-shell):在 Composer 工具栏中添加带有添加/切换下拉菜单的工作区选择按钮 ([#7390](https://github.com/QwenLM/qwen-code/pull/7390)) by @water-in-stone - feat(web-shell):在详情面板中显示子代理会话 ([#7380](https://github.com/QwenLM/qwen-code/pull/7380)) by @ytahdn - feat(web-shell):添加渲染后的文件预览 ([#7467](https://github.com/QwenLM/qwen-code/pull/7467)) by @ytahdn - feat(core):添加记忆召回投递遥测 ([#7393](https://github.com/QwenLM/qwen-code/pull/7393)) by @ZijianZhang989 - feat(core):保持已完成的后台代理常驻 ([#7426](https://github.com/QwenLM/qwen-code/pull/7426)) by @DragonnZhang - feat(serve):支持强制 MCP 重连 ([#7488](https://github.com/QwenLM/qwen-code/pull/7488)) by @BZ-D - feat(prompts):允许通过 QWEN_SYSTEM_IDENTITY_MD 覆盖核心身份 ([#7478](https://github.com/QwenLM/qwen-code/pull/7478)) by @zjgzx1988 - feat(autofix):若 PR 连续 N 次推送失败则停止 ([#7482](https://github.com/QwenLM/qwen-code/pull/7482)) by @wenshao - feat(core):恢复后台代理名单 ([#7459](https://github.com/QwenLM/qwen-code/pull/7459)) by @DragonnZhang - feat(cli):通过设置支持自定义技能目录 ([#7395](https://github.com/QwenLM/qwen-code/pull/7395)) by @qwen-code-dev-bot - feat(cli):复制 VP 选区时保留语义文本 ([#7286](https://github.com/QwenLM/qwen-code/pull/7286)) by @chiga0 - feat(web-shell):添加选择性 Shadow DOM 隔离 ([#7551](https://github.com/QwenLM/qwen-code/pull/7551)) by @ytahdn - feat(web-shell):添加用于自定义会话头部的 renderChatHeader 插槽 ([#7553](https://github.com/QwenLM/qwen-code/pull/7553)) by @yuanyuanAli - feat(serve):添加工作区级生成 ([#7552](https://github.com/QwenLM/qwen-code/pull/7552)) by @ytahdn - feat(serve):持久化工作区频道配置 ([#7514](https://github.com/QwenLM/qwen-code/pull/7514)) by @qqqys - feat(core):传播受信任的守护进程调用上下文 ([#7279](https://github.com/QwenLM/qwen-code/pull/7279)) by @callmeYe - feat(cli):当 PR 描述为中文时,双语发布审阅内容 ([#7564](https://github.com/QwenLM/qwen-code/pull/7564)) by @wenshao - feat(autofix):自动重试一次因基础设施问题失败的检查 ([#7562](https://github.com/QwenLM/qwen-code/pull/7562)) by @wenshao - feat(core):使 GenAI 遥测与 ARMS 对齐 ([#7536](https://github.com/QwenLM/qwen-code/pull/7536)) by @doudouOUC - feat(web-shell):添加工作区代理管理 ([#7572](https://github.com/QwenLM/qwen-code/pull/7572)) by @ytahdn - feat(autofix):当门禁拒绝落后于 main 的修复时,更新过时的基础分支 ([#7595](https://github.com/QwenLM/qwen-code/pull/7595)) by @wenshao - feat(sdk-java):添加守护进程传输 ([#7463](https://github.com/QwenLM/qwen-code/pull/7463)) by @doudouOUC - feat(autofix):自动更新仅因过时且已修复的基础分支而变红的 PR ([#7554](https://github.com/QwenLM/qwen-code/pull/7554)) by @wenshao - feat(autofix):自动恢复停留在过时基础分支上的 PR ([#7602](https://github.com/QwenLM/qwen-code/pull/7602)) by @wenshao - feat(core):添加 Goal v3 状态协议 ([#7517](https://github.com/QwenLM/qwen-code/pull/7517)) by @qqqys - feat(daemon):添加显式频道投递 ([#7388](https://github.com/QwenLM/qwen-code/pull/7388)) by @BenGuanRan - feat(serve):将频道生命周期限定在工作区运行时范围内 ([#7577](https://github.com/QwenLM/qwen-code/pull/7577)) by @qqqys - feat(cli):添加使用统计信息的环境覆盖 ([#7579](https://github.com/QwenLM/qwen-code/pull/7579)) by @tanzhenxin - feat(core):将 OAuth 登录 URL 作为单个 OSC 8 超链接输出 ([#7255](https://github.com/QwenLM/qwen-code/pull/7255)) by @chinesepowered - feat(web-shell):为新会话创建添加 Git 模式选择器 ([#7471](https://github.com/QwenLM/qwen-code/pull/7471)) by @wenshao - feat(cli):在 /learn 命令中支持原生视频输入 ([#7497](https://github.com/QwenLM/qwen-code/pull/7497)) by @LaZzyMan - feat(core):使 GenAI 请求遥测与 ARMS 对齐 ([#7635](https://github.com/QwenLM/qwen-code/pull/7635)) by @doudouOUC - feat(cli):通过 @ 引用之前的会话并添加补全标签页 ([#7302](https://github.com/QwenLM/qwen-code/pull/7302)) by @LaZzyMan - feat(review):运行时任务名称跟随会话输出语言 ([#7653](https://github.com/QwenLM/qwen-code/pull/7653)) by @wenshao - feat(channels):在守护进程工作器中运行循环 ([#7641](https://github.com/QwenLM/qwen-code/pull/7641)) by @qqqys - feat(core):添加可配置的图片生成模型 ([#7607](https://github.com/QwenLM/qwen-code/pull/7607)) by @qqqys - feat(core):添加有界的 Goal 证据验证 ([#7639](https://github.com/QwenLM/qwen-code/pull/7639)) by @qqqys ### 错误修复 - fix(autofix): 在头部状态判定前保持红色检查可见 ([#7438](https://github.com/QwenLM/qwen-code/pull/7438)) by @wenshao - fix: 当 AgentTool 设置 isolation:worktree 时,将空的 working_dir 规范化为 unset ([#7403](https://github.com/QwenLM/qwen-code/pull/7403)) by @mvanhorn - fix(core): 通告已完成任务的恢复 ([#7454](https://github.com/QwenLM/qwen-code/pull/7454)) by @DragonnZhang - fix(cli): 缩小更新检查错误分类范围 ([#7431](https://github.com/QwenLM/qwen-code/pull/7431)) by @yiliang114 - fix(web-shell): 隔离组件样式与宿主 CSS ([#7466](https://github.com/QwenLM/qwen-code/pull/7466)) by @ytahdn - fix(web-shell): 优化嵌入式 Shell 交互体验 ([#7477](https://github.com/QwenLM/qwen-code/pull/7477)) by @ytahdn - fix(release): 将 mobile-mcp 排除在核心版本升级之外 ([#7474](https://github.com/QwenLM/qwen-code/pull/7474)) by @yiliang114 - fix(ci): 将实际模型名称注入到分类签名中 ([#7475](https://github.com/QwenLM/qwen-code/pull/7475)) by @yiliang114 - fix(core): 使步进日字段与 Vixie cron 语义对齐 ([#7464](https://github.com/QwenLM/qwen-code/pull/7464)) by @destire-mio - fix(acp-bridge): 关闭来自 PR #7400 自审的 prompt-terminal 后续跟进 ([#7453](https://github.com/QwenLM/qwen-code/pull/7453)) by @doudouOUC - fix(core): 从 Agent 派生的子进程环境中移除 Qwen 内部守护进程密钥 ([#7256](https://github.com/QwenLM/qwen-code/pull/7256)) by @chinesepowered - fix(cli): 在 Shift+Enter 时插入换行符,并停止流式思考块闪烁 ([#7397](https://github.com/QwenLM/qwen-code/pull/7397)) by @chiga0 - fix(web-shell): 打开单例子 Agent 详情 ([#7495](https://github.com/QwenLM/qwen-code/pull/7495)) by @ytahdn - fix(web-shell): 避免冗余的 Git 状态请求 ([#7496](https://github.com/QwenLM/qwen-code/pull/7496)) by @ytahdn - fix(agent): 忽略空的 working_dir 占位符 ([#7343](https://github.com/QwenLM/qwen-code/pull/7343)) by @Truraly - fix(cli): 让出单槽位后台 Agent 的执行权 ([#7258](https://github.com/QwenLM/qwen-code/pull/7258)) by @hogeheer499-commits - fix(core): 为 qwen3.8-max 和 kimi-k3 模型添加图像模态支持 ([#7491](https://github.com/QwenLM/qwen-code/pull/7491)) by @yiliang114 - fix(dingtalk): 保留非机器人提及的上下文 ([#7473](https://github.com/QwenLM/qwen-code/pull/7473)) by @qwen-code-dev-bot - fix(core): 强化会话删除期间的用量回收机制 ([#7425](https://github.com/QwenLM/qwen-code/pull/7425)) by @zjunothing - fix(core): 使分离子 Agent 可被发现 ([#7460](https://github.com/QwenLM/qwen-code/pull/7460)) by @DragonnZhang - fix(ci): autofix 路由在非触发标签事件上检查现有标签 ([#7481](https://github.com/QwenLM/qwen-code/pull/7481)) by @yiliang114 - fix(vscode): 使用文件选择器的图像路径进行视觉输入 ([#7493](https://github.com/QwenLM/qwen-code/pull/7493)) by @yiliang114 - fix(cli): 打开实际的 serve 回退端口 ([#7501](https://github.com/QwenLM/qwen-code/pull/7501)) by @yiliang114 - fix(ci): 防止单个失败场景导致整个可视化预览失败 ([#7511](https://github.com/QwenLM/qwen-code/pull/7511)) by @wenshao - fix(cli): 以作者的单位而非代码块 ID 报告审查覆盖缺口 ([#7550](https://github.com/QwenLM/qwen-code/pull/7550)) by @wenshao - fix(autofix): 重试跳过的 Prepare 步骤,而非让 PR 终端卡住 ([#7490](https://github.com/QwenLM/qwen-code/pull/7490)) by @wenshao - fix(cli): 在发布的审查正文中排除角色代号和简短路径 ([#7560](https://github.com/QwenLM/qwen-code/pull/7560)) by @wenshao - fix(autofix): 重试 Agent 超时情况,而非跳过其反馈继续推进 ([#7563](https://github.com/QwenLM/qwen-code/pull/7563)) by @wenshao - fix(web-shell): 在制品打开请求中暴露 managedId ([#7570](https://github.com/QwenLM/qwen-code/pull/7570)) by @ytahdn - fix(sdk-python): 在 validate_session_id 中要求规范格式 ([#7532](https://github.com/QwenLM/qwen-code/pull/7532)) by @chinesepowered - fix(web-shell): 同步后台 Agent 状态 ([#7561](https://github.com/QwenLM/qwen-code/pull/7561)) by @ytahdn - fix(feishu): 在媒体下载清理阶段等待流取消完成 ([#7465](https://github.com/QwenLM/qwen-code/pull/7465)) by @chinesepowered - fix(autofix): 使审查地址报告评论完全支持双语 ([#7569](https://github.com/QwenLM/qwen-code/pull/7569)) by @wenshao - fix(serve): 通过 epoch 令牌检测守护进程重启期间的过期 SSE 游标;保留回合归属并在回放中暴露压缩失败 ([#7458](https://github.com/QwenLM/qwen-code/pull/7458)) by @doudouOUC - fix(serve): 避免 TOCTOU 竞态条件导致实时会话从列表响应中丢失 ([#7556](https://github.com/QwenLM/qwen-code/pull/7556)) by @yiliang114 with @Copilot - fix(cli): 防止 task_stop 后触发监控通知 ([#7573](https://github.com/QwenLM/qwen-code/pull/7573)) by @yiliang114 - fix(cli): 使用 npm view 进行更新检查,替代 update-notifier (#7515) ([#7528](https://github.com/QwenLM/qwen-code/pull/7528)) by @dtometzki - fix(core): 避免生成空的转录历史记录页 ([#7582](https://github.com/QwenLM/qwen-code/pull/7582)) by @ytahdn - fix(cli): 暴露未处理的拒绝和渲染错误,而非静默吞没 ([#7406](https://github.com/QwenLM/qwen-code/pull/7406)) by @chiga0 - fix(web-shell): 隔离斜杠命令插件页面 ([#7581](https://github.com/QwenLM/qwen-code/pull/7581)) by @ytahdn - fix(sdk-python): 将 max_tool_calls 和 max_subagent_depth 验证为整数 ([#7548](https://github.com/QwenLM/qwen-code/pull/7548)) by @chinesepowered - fix(cli): 修正排队消息的显示样式和排序 ([#7381](https://github.com/QwenLM/qwen-code/pull/7381)) by @chiga0 - fix(core): 持久化仅工具调用的子 Agent 轮次用量 ([#7557](https://github.com/QwenLM/qwen-code/pull/7557)) by @DragonnZhang - fix(core): 当提供商需要思考时重试请求 ([#7534](https://github.com/QwenLM/qwen-code/pull/7534)) by @yiliang114 - fix(core): 在 FileReadCache 中记录自动记忆索引读取 ([#7468](https://github.com/QwenLM/qwen-code/pull/7468)) by @han-dreamer - fix(web-shell): 基于 ID 初始化工作区选择器 ([#7518](https://github.com/QwenLM/qwen-code/pull/7518)) by @patrick-andstar - fix(core): 拒绝嵌套的后台请求 ([#7593](https://github.com/QwenLM/qwen-code/pull/7593)) by @patrick-andstar - fix(web-shell): 防止 React 测量详情引发内存溢出 (OOM) ([#7596](https://github.com/QwenLM/qwen-code/pull/7596)) by @ytahdn - fix(core): jsonl write([]) 应生成空文件,而非残留换行符 ([#7533](https://github.com/QwenLM/qwen-code/pull/7533)) by @chinesepowered - fix(core): 从 hook 和工具发现子环境变量中剥离守护进程密钥 ([#7527](https://github.com/QwenLM/qwen-code/pull/7527)) by @chinesepowered - fix(core): 保留已禁用的推理力度配置 ([#7541](https://github.com/QwenLM/qwen-code/pull/7541)) by @WladmirJunior - fix(web-shell): 在触控设备上渲染纯文本 textarea 编辑器 ([#7587](https://github.com/QwenLM/qwen-code/pull/7587)) by @ComplexSimply - fix(core): 在 splitCommands 中将单引号内的反斜杠视为字面量 ([#7526](https://github.com/QwenLM/qwen-code/pull/7526)) by @chinesepowered - fix(cli): 停止将 version-manager 的 npm 垫片误认为 npm-cli.js ([#7545](https://github.com/QwenLM/qwen-code/pull/7545)) by @nerdalytics - fix(core,cli): 将队友主导回合与代理上下文隔离 ([#7576](https://github.com/QwenLM/qwen-code/pull/7576)) by @yiliang114 - fix(sdk-java): 允许终端续传启动下一个提示 ([#7615](https://github.com/QwenLM/qwen-code/pull/7615)) by @wenshao - fix(channels): 将 Telegram 回复路由至论坛主题 ([#7612](https://github.com/QwenLM/qwen-code/pull/7612)) by @hogeheer499-commits - fix(acp): 对其他认证方式隐藏已停用的 OAuth 模型 ([#7522](https://github.com/QwenLM/qwen-code/pull/7522)) by @hogeheer499-commits - fix(channels): 保存频道记忆时停止丢弃多任务消息 ([#7608](https://github.com/QwenLM/qwen-code/pull/7608)) by @zjunothing - fix(channels): 忽略空闲状态下的 ACP 取消错误 ([#7598](https://github.com/QwenLM/qwen-code/pull/7598)) by @patrick-andstar - fix(cli): 优化大段粘贴性能并添加进度指示器 ([#6506](https://github.com/QwenLM/qwen-code/pull/6506)) by @LaZzyMan - fix(mcp): 为 Streamable HTTP 传输使用专用的 undici fetch ([#7195](https://github.com/QwenLM/qwen-code/pull/7195)) by @zjunothing - fix(daemon): 处理 epoch cursor 审查的后续跟进事项 ([#7619](https://github.com/QwenLM/qwen-code/pull/7619)) by @doudouOUC - fix(sdk-java): 增强守护进程传输的可靠性 ([#7603](https://github.com/QwenLM/qwen-code/pull/7603)) by @doudouOUC - fix(acp-bridge): 会话事件管道的资源加固 (DAEMON-009/010/011) ([#7622](https://github.com/QwenLM/qwen-code/pull/7622)) by @doudouOUC - fix(cli): 清理孤立的管理型 npm 更新工件 ([#7539](https://github.com/QwenLM/qwen-code/pull/7539)) by @patrick-andstar - fix(web-shell): 遵循锁定工作区会话的操作限制 ([#7629](https://github.com/QwenLM/qwen-code/pull/7629)) by @dreamWB - fix(core): 在空 OpenAI 流帧后保留使用情况统计 ([#7650](https://github.com/QwenLM/qwen-code/pull/7650)) by @doudouOUC - fix(triage): 使无人值守 PR 审查静态化——通过 API 读取 CI 状态,绝不执行 PR 代码 ([#7646](https://github.com/QwenLM/qwen-code/pull/7646)) by @wenshao - fix(triage): 切实限制 CI 审查代理的工具权限 ([#7647](https://github.com/QwenLM/qwen-code/pull/7647)) by @wenshao - fix(cli): 将所有 TUI 图标列对齐为统一的 2 列宽度 ([#7633](https://github.com/QwenLM/qwen-code/pull/7633)) by @chiga0 - fix(web-shell): 悬停时显示完整会话名称 ([#7662](https://github.com/QwenLM/qwen-code/pull/7662)) by @wenshao - fix(web-shell): 选择分支/worktree 时保持 git 模式弹出层打开 ([#7668](https://github.com/QwenLM/qwen-code/pull/7668)) by @wenshao ### 性能 - perf(startup): 通过包内动态导入延迟加载 undici ([#7455](https://github.com/QwenLM/qwen-code/pull/7455)) by @doudouOUC - perf(web-shell): 优化长会话渲染性能 ([#7408](https://github.com/QwenLM/qwen-code/pull/7408)) by @ytahdn - perf(startup): 首次使用时延迟加载 Google GenAI SDK ([#7512](https://github.com/QwenLM/qwen-code/pull/7512)) by @doudouOUC - perf(cli): 延迟 ACP 遥测初始化 ([#7558](https://github.com/QwenLM/qwen-code/pull/7558)) by @doudouOUC - perf(cli): 将编译缓存传播至 ACP 子进程 ([#7594](https://github.com/QwenLM/qwen-code/pull/7594)) by @doudouOUC ### 文档 - docs(core): 将 JSDoc @param 名称与实际函数签名对齐 ([#7492](https://github.com/QwenLM/qwen-code/pull/7492)) by @ovochouovo - docs(autofix): 要求提供证据的预提交验证,而非仅标记“已验证” ([#7486](https://github.com/QwenLM/qwen-code/pull/7486)) by @wenshao - docs: 更新子代理生命周期指南 ([#7624](https://github.com/QwenLM/qwen-code/pull/7624)) by @wenshao - docs(autofix): 在处理审查反馈时贯彻“简洁优先”原则 ([#7643](https://github.com/QwenLM/qwen-code/pull/7643)) by @wenshao - docs(autofix): 让代理上报维护者的决定,而非自行裁决 ([#7636](https://github.com/QwenLM/qwen-code/pull/7636)) by @wenshao - docs(triage): 根据变更规模调整 PR 验证策略,增加实际运行深度 ([#7648](https://github.com/QwenLM/qwen-code/pull/7648)) by @wenshao ### 内部变更 - test(telemetry): 覆盖守护进程指标初始化顺序测试,并补充 metricReader 不对称性说明 ([#7456](https://github.com/QwenLM/qwen-code/pull/7456)) by @doudouOUC - test(core): 覆盖无工件时的 Shell 截断测试 ([#7470](https://github.com/QwenLM/qwen-code/pull/7470)) by @doudouOUC - test(core): 为 agent.ts 实际调用的注册表方法添加桩代码 ([#7538](https://github.com/QwenLM/qwen-code/pull/7538)) by @chinesepowered - test(autofix): 将 infra-signature 列表统一至工作流作为单一数据源 ([#7565](https://github.com/QwenLM/qwen-code/pull/7565)) by @wenshao - test: 修复 tool-control E2E 测试中 write_file 内容断言的不稳定问题 ([#7613](https://github.com/QwenLM/qwen-code/pull/7613)) by @yiliang114 with @Copilot - test(sdk-java): 在慢速测试中扩大 SSE 空闲看门狗的超时容差 ([#7617](https://github.com/QwenLM/qwen-code/pull/7617)) by @wenshao - test(core): 在冲突删除测试中固定存档副本使用的挽救逻辑 ([#7604](https://github.com/QwenLM/qwen-code/pull/7604)) by @zjunothing - test(triage): 为 triage 工作流添加回归防护,并将 git 清理操作改为白名单机制 ([#7660](https://github.com/QwenLM/qwen-code/pull/7660)) by @wenshao ## 新贡献者 - @ovochouovo 在 [#7492](https://github.com/QwenLM/qwen-code/pull/7492) 中首次贡献 - @Truraly 在 [#7343](https://github.com/QwenLM/qwen-code/pull/7343) 中首次贡献 - @zjgzx1988 在 [#7478](https://github.com/QwenLM/qwen-code/pull/7478) 中首次贡献 - @hogeheer499-commits 在 [#7258](https://github.com/QwenLM/qwen-code/pull/7258) 中首次贡献 - @dtometzki 在 [#7528](https://github.com/QwenLM/qwen-code/pull/7528) 中首次贡献 - @patrick-andstar 在 [#7518](https://github.com/QwenLM/qwen-code/pull/7518) 中首次贡献 - @WladmirJunior 在 [#7541](https://github.com/QwenLM/qwen-code/pull/7541) 中首次贡献 - @nerdalytics 在 [#7545](https://github.com/QwenLM/qwen-code/pull/7545) 中首次贡献 **完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.20.1...v0.21.0