<!-- 使用 .github/release.yml 中的配置生成发布说明,位于 release/v0.20.0-nightly.20260721.cda0e0348 -->
## 更新内容
* feat(autofix): 基于标签的接管与发布;修复强制分发的绿色空操作 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7165
* fix(autofix): 将 SKILL.md 暂存至 run-agent.mjs 旁以启动 review-address(P0,#7165 的回归问题) by @wenshao in https://github.com/QwenLM/qwen-code/pull/7225
* fix(ci): 整合 Issue 分类所有权 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7180
* fix(cli): 在活跃循环期间允许目标控制 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7202
* test: 提高 CI 资源争用下不稳定的 I/O 绑定测试的超时上限 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7230
* fix(cli): 在流式输出期间于引导提示旁显示模式指示器 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7219
* fix(scripts): 通过探测 Vite 端口允许多个 dev:daemon 实例 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7212
* feat(autofix): 直接接管维护者分叉的 PR by @wenshao in https://github.com/QwenLM/qwen-code/pull/7213
* feat(daemon): 通告 ACP 预热就绪状态 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7200
* feat(autofix): 在每个 autofix 报告中显示正在运行的模型 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7226
* fix(review): 针对每个未读取块仅提示一次,并归因于其触发原因 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7234
* fix(autofix): 无输出崩溃不得推进审查水位线 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7229
* fix(review): 禁止在 roster 输出和 SKILL.md 中使用隔离参数 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7235
* feat(review): 临时 API 失败重试一次;清晰展示配额信息 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7233
* feat(core): 检查持久化的对话分支 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7185
* fix(cli): 将 npm 更新检查与全局注册表对齐 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7224
* feat(core): 通过安全机制路由 Plan 模式的 shell 命令 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7172
* test(autofix): 端到端测试 SKILL 阶段与 resolve 的契约 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7227
* feat(ci): 为已确认的不稳定测试自动创建修复 Issue by @wenshao in https://github.com/QwenLM/qwen-code/pull/7231
* feat(autofix): 自动管理机器人自身的分叉 PR 而无需标签 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7243
* feat(web-shell): 为并行任务提供 worktree 隔离会话 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7221
* feat(i18n): 更新加泰罗尼亚语翻译 by @jordimas in https://github.com/QwenLM/qwen-code/pull/7253
* fix(test): 修复工具控制 E2E 内容断言的不稳定性 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7261
* fix(sdk): 迭代器退出时中止 SSE 请求以释放 daemon 订阅者 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7257
* fix(core): 强制执行 Plan 模式入口边界 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7248
* test(channels): 添加记忆召回评估基线 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7220
* fix(channels): 在回复中排除离散的 ACP 消息 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7223
* fix(ci): 在 autofix 验证门控中为分叉 PR 创建远程跟踪引用 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7281
* fix(sdk): 错误时清理 SSE 请求并释放资源 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7269
* test(autofix): 将工作流断言与拆分模型变量同步 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7297
* fix(cli): 在操作系统休眠/唤醒或收到 SIGCONT 后重绘 TUI by @wenshao in https://github.com/QwenLM/qwen-code/pull/7265
* fix(mobile-mcp): 恢复 UI 层次结构转储中的边界 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/7321
* fix(test): 稳定 3 个不稳定测试(服务启动、使用统计 TTL、TasksStatusMessage 按键) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7319
* docs(cli): 移除过时的包含目录限制 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7326
* test(feishu): 强制执行 markdown 块限制断言 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7324
* fix(cli): 在权限提示期间保留取消操作 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7295
* feat: 为核心测试模块添加 CODEOWNERS by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/7304
* feat(web-shell): 支持自定义斜杠命令操作 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7267
* fix(core): 在缺失 completion_tokens_details 时估算 reasoning_tokens by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7239
* fix(ci): 收紧 API 错误检测以避免审查文本的误报 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7328
* fix(web-shell): 本地化扩展标签文本 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7337
* fix(test): 稳定 list_directory E2E 测试 — 当模型跳过工具调用时接受文本输出 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7342
* fix(autofix): 解析嵌套路径的所属包;将验证失败的交接报告为未推送 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7330
* fix(review): 在临时 GitHub 错误(5xx)和密钥环故障时重试 gh CLI by @wenshao in https://github.com/QwenLM/qwen-code/pull/7291
* feat(web-shell): 添加 git 提交历史浏览器 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7204
* feat: 支持工作区显示名称 by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/7179
* feat(channels): 添加内容安全内存召回遥测 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7338
* feat(daemon): 在会话加载/恢复时恢复工作树隔离 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7262
* fix(channels): 传递后台代理回复 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7336
* fix(web-shell): 代理扩展 API 且不拦截模块 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7294
* fix(dingtalk): 重试临时情绪失败 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7329
* fix(web-shell): 遵循语音启用设置 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7345
* feat(autofix): 使用 @qwen-code /retry 重新触发搁置的 PR,而非删除标记 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7354
* fix(cli): 将位置参数映射到可选的 MCP 提示参数 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7317
* fix(cli): 在 /cd 标签补全中包含已输入的目录 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7320
* feat(serve): 使 ACP 初始化握手超时时间可配置 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7246
* ci: 将发布说明分类器从单 PR 工作流移至发布时批量处理 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7339
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.20.0...v0.20.0-nightly.20260721.cda0e0348
<!-- Release notes generated using configuration in .github/release.yml at release/v0.20.0-nightly.20260721.cda0e0348 -->
## What's Changed
* feat(autofix): label-driven takeover and release; fix forced-dispatch green no-op by @wenshao in https://github.com/QwenLM/qwen-code/pull/7165
* fix(autofix): stage SKILL.md beside run-agent.mjs so review-address boots (P0, regression from #7165) by @wenshao in https://github.com/QwenLM/qwen-code/pull/7225
* fix(ci): consolidate issue triage ownership by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7180
* fix(cli): allow goal controls during active loops by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7202
* test: raise timeout ceiling for I/O-bound tests flaky under CI contention by @wenshao in https://github.com/QwenLM/qwen-code/pull/7230
* fix(cli): show mode indicator alongside steering hint during streaming by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7219
* fix(scripts): allow multiple dev:daemon instances by probing Vite port by @wenshao in https://github.com/QwenLM/qwen-code/pull/7212
* feat(autofix): direct takeover of maintainer-fork PRs by @wenshao in https://github.com/QwenLM/qwen-code/pull/7213
* feat(daemon): Advertise ACP preheat readiness by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7200
* feat(autofix): surface the running model in every autofix report by @wenshao in https://github.com/QwenLM/qwen-code/pull/7226
* fix(review): say an unread chunk once, under its cause by @wenshao in https://github.com/QwenLM/qwen-code/pull/7234
* fix(autofix): a no-output crash must not advance the review watermark by @wenshao in https://github.com/QwenLM/qwen-code/pull/7229
* fix(review): prohibit isolation param in roster output and SKILL.md by @wenshao in https://github.com/QwenLM/qwen-code/pull/7235
* feat(review): retry transient API failures once; surface quota clearly by @wenshao in https://github.com/QwenLM/qwen-code/pull/7233
* feat(core): inspect persisted conversation branches by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7185
* fix(cli): align npm update checks with global registry by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7224
* feat(core): Route Plan-mode shell commands by safety by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7172
* test(autofix): exercise the SKILL stage↔resolve contract end-to-end by @wenshao in https://github.com/QwenLM/qwen-code/pull/7227
* feat(ci): auto-open a deflake fix issue for confirmed flaky tests by @wenshao in https://github.com/QwenLM/qwen-code/pull/7231
* feat(autofix): auto-manage the bot's own fork PRs without a label by @wenshao in https://github.com/QwenLM/qwen-code/pull/7243
* feat(web-shell): worktree-isolated sessions for parallel tasks by @wenshao in https://github.com/QwenLM/qwen-code/pull/7221
* feat(i18n): update catalan translaiton by @jordimas in https://github.com/QwenLM/qwen-code/pull/7253
* fix(test): deflake tool-control E2E content assertions by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7261
* fix(sdk): abort SSE request on iterator exit to release daemon subscriber by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7257
* fix(core): Enforce Plan mode entry boundary by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7248
* test(channels): add memory recall evaluation baseline by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7220
* fix(channels): exclude discrete ACP messages from replies by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7223
* fix(ci): create remote-tracking ref for fork PRs in autofix verify gate by @wenshao in https://github.com/QwenLM/qwen-code/pull/7281
* fix(sdk): clean up SSE requests on errors and dispose by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7269
* test(autofix): sync workflow assertions with split model vars by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7297
* fix(cli): repaint the TUI after OS sleep/wake or SIGCONT by @wenshao in https://github.com/QwenLM/qwen-code/pull/7265
* fix(mobile-mcp): restore bounds in UI hierarchy dumps by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/7321
* fix(test): stabilize 3 flaky tests (serve startup, usage-stats TTL, TasksStatusMessage keypress) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7319
* docs(cli): remove stale include directories limit by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7326
* test(feishu): enforce markdown chunk limit assertion by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7324
* fix(cli): Preserve cancellation during permission prompts by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7295
* feat: add CODEOWNERS for core harness modules by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/7304
* feat(web-shell): support custom slash command actions by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7267
* fix(core): estimate reasoning_tokens when completion_tokens_details is missing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7239
* fix(ci): tighten API error detection to avoid false positive on review prose by @wenshao in https://github.com/QwenLM/qwen-code/pull/7328
* fix(web-shell): localize extension tag labels by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7337
* fix(test): stabilize list_directory E2E — accept text output when model skips tool call by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7342
* fix(autofix): resolve owning package for nested paths; report verify-failed handoffs as not pushed by @wenshao in https://github.com/QwenLM/qwen-code/pull/7330
* fix(review): retry gh CLI on transient GitHub errors (5xx) and keyring failures by @wenshao in https://github.com/QwenLM/qwen-code/pull/7291
* feat(web-shell): add git commit history browser by @wenshao in https://github.com/QwenLM/qwen-code/pull/7204
* feat: support workspace display names by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/7179
* feat(channels): add content-safe memory recall telemetry by @qqqys in https://github.com/QwenLM/qwen-code/pull/7338
* feat(daemon): restore worktree isolation on session load/resume by @wenshao in https://github.com/QwenLM/qwen-code/pull/7262
* fix(channels): deliver background agent replies by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7336
* fix(web-shell): proxy extension APIs without intercepting modules by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7294
* fix(dingtalk): retry transient emotion failures by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7329
* fix(web-shell): respect voice enabled setting by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7345
* feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker by @wenshao in https://github.com/QwenLM/qwen-code/pull/7354
* fix(cli): map positional args to optional MCP prompt parameters by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7317
* fix(cli): include typed directory in /cd tab completion by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7320
* feat(serve): make ACP initialize handshake timeout configurable by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7246
* ci: move release-note classifier from per-PR workflow to release-time batch by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7339
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.20.0...v0.20.0-nightly.20260721.cda0e0348