<!-- 使用 release/v0.21.0-nightly.20260726.9d19eafa9 分支中 .github/release.yml 的配置生成 -->
## 更新内容
* fix(cli): 在所有位置使用本地时间测量洞察天数与小时数 by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7670
* refactor(autofix): 提取审查验证运行器 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7644
* fix(ci): 无待清理内容时不使分类清理流程失败 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7688
* feat(core): 对齐 GenAI 内容遥测字段 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7667
* fix(ci): 更新运行器活动 npm 前缀中的 qwen by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7689
* feat(core): 新增 Goal v3 运行时编排 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7664
* test(web-shell): 在视觉测试套件中捕获 git 模式的新分支子状态 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7672
* feat(triage): 停止代理内 CI 轮询,待 CI 完成后最终确定证据与审批 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7693
* fix(acp): 在每个提示轮次结束时清理审查 worktree 租约 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7694
* feat(serve): 暴露工作区 Channel 管理 API by @qqqys in https://github.com/QwenLM/qwen-code/pull/7637
* fix(core): 写入状态 sidecar,防止模型误读静默后台 shell by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7669
* fix(core): exit_plan_mode 返回 execute() 的指导错误,而非权限拒绝 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7673
* fix(core): 在用户手动退出计划模式时通知模型 by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7682
* fix(core): 为同一仓库的插件分配不同的扩展 ID by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7676
* fix(core): 允许无需确认提示即可读取已保存的计划文件 by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7678
* feat(web-shell): 新增只读 GitHub PR 面板 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7683
* fix(cli): 代理在轮次中自动恢复时清除过期重试错误 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7681
* fix(mcp): 强化 OAuth 回调处理逻辑 by @gauravyad86 in https://github.com/QwenLM/qwen-code/pull/7510
* fix(web-shell): 为 GitHub PR 列表行添加 :focus-visible 轮廓 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7704
* perf(cli): 在守护进程路由中缓存 GitHub PR 列表(TTL 60秒) by @wenshao in https://github.com/QwenLM/qwen-code/pull/7705
* perf(core): 将易变的自动记忆部分置于系统提示词末尾 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7651
* perf(web-shell): 在 git 状态完成前渲染 composer git 芯片 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7680
* fix(triage): 在补丁时通过标记解析阶段评论 ID,强化模型注入 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7703
* fix(triage): 从 open-PR 列表解析需最终确定的 PR,而非提交关联 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7706
* feat(integrations): 新增仅检索模式的外部上下文搜索 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7586
* feat(review): 为现有线程分类新增 comment-status 辅助函数 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7690
* feat(review): 通过清理触发器强制执行仅提交的写入契约 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7691
* fix(cli): 对齐内联数学公式识别逻辑 by @CubeLander in https://github.com/QwenLM/qwen-code/pull/7701
* feat(serve): 支持热重载工作区信任更改 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7268
* feat(core): 配置流速率限制重试延迟 by @jay666mnj in https://github.com/QwenLM/qwen-code/pull/7674
* refactor(core): 通过单一分层构建器组装系统提示词 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7707
* feat(stats): 显示生成耗时指标 by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7677
* fix(desktop): 扩展 formatBytes 以支持 GB 以上单位,避免太字节大小渲染为“undefined” by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7623
* fix(core): 在 toOpenAPI30 中将 const 派生的枚举转为字符串 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7547
* fix(core): 转换以 schema 关键字命名的属性的子 schema by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7546
* feat(channels): 新增采用通知唤醒架构的 GitHub 轮询适配器 by @OrbitZore in https://github.com/QwenLM/qwen-code/pull/7632
* feat(core): 配置流速率限制重试延迟 by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7666
* fix: 静默从无头 shell 终端泄漏的 xterm.js 解析器诊断信息 by @mvanhorn in https://github.com/QwenLM/qwen-code/pull/7663
* fix(review): 处理合并后针对 review 技能的 P2 审查反馈 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7708
* fix(core): 在循环检测提前返回时触发 StopFailure 钩子 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7592
* test(web-shell): 覆盖恢复历史分页重试逻辑 by @jay666mnj in https://github.com/QwenLM/qwen-code/pull/7657
* fix(web-shell): 为 worktree 会话启用 Changes 和 History 对话框 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7695
* fix(cli): 严格解析 heatmapDays 参数 by @VectorPeak in https://github.com/QwenLM/qwen-code/pull/7218
* fix(acp-bridge): 提高 live journal 上限并作为守护进程配置暴露 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7715
* fix(web-shell): 允许对次要工作区会话进行固定和分组 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7716
* fix(review): 避免在同账户写入时错误地宣称已绕过提交门控 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7718
* fix(qqbot): 恢复 AcpBridge 会话加载 — 返回输入 sessionId,修复捕获路径 by @Eric-GoodBoy-Tech 在 https://github.com/QwenLM/qwen-code/pull/7722
* feat(skills): 添加可覆盖的默认禁用状态 by @samuelhsin 在 https://github.com/QwenLM/qwen-code/pull/7357
* fix(core): 防止更新扩展提供的代理 by @destire-mio 在 https://github.com/QwenLM/qwen-code/pull/7245
* fix(core): 当内置 ripgrep 无法运行时回退到系统 rg by @harjothkhara 在 https://github.com/QwenLM/qwen-code/pull/7203
* fix(core): 在 DashScope 思考过程中避免使用必需工具 by @hogeheer499-commits 在 https://github.com/QwenLM/qwen-code/pull/7661
## 新贡献者
* @jay666mnj 在 https://github.com/QwenLM/qwen-code/pull/7674 完成首次贡献
* @harjothkhara 在 https://github.com/QwenLM/qwen-code/pull/7203 完成首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.21.0...v0.21.0-nightly.20260726.9d19eafa9
<!-- Release notes generated using configuration in .github/release.yml at release/v0.21.0-nightly.20260726.9d19eafa9 -->
## What's Changed
* fix(cli): measure insight days and hours in local time everywhere by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7670
* refactor(autofix): extract review verification runner by @qqqys in https://github.com/QwenLM/qwen-code/pull/7644
* fix(ci): don't fail triage cleanup when there is nothing to clean by @wenshao in https://github.com/QwenLM/qwen-code/pull/7688
* feat(core): Align GenAI content telemetry fields by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7667
* fix(ci): update qwen in the runner's active npm prefix by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7689
* feat(core): add Goal v3 runtime orchestration by @qqqys in https://github.com/QwenLM/qwen-code/pull/7664
* test(web-shell): capture the git-mode new-branch sub-state in the visuals suite by @wenshao in https://github.com/QwenLM/qwen-code/pull/7672
* feat(triage): stop in-agent CI polling, finalize evidence and approval after CI completes by @wenshao in https://github.com/QwenLM/qwen-code/pull/7693
* fix(acp): sweep review worktree leases at the end of each prompt turn by @wenshao in https://github.com/QwenLM/qwen-code/pull/7694
* feat(serve): expose workspace Channel management API by @qqqys in https://github.com/QwenLM/qwen-code/pull/7637
* fix(core): write a status sidecar so models stop misreading quiet background shells by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7669
* fix(core): exit_plan_mode returns guidance error from execute() instead of permission deny by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7673
* fix(core): tell the model when the user manually exits plan mode by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7682
* fix(core): give plugins from the same repository distinct extension ids by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7676
* fix(core): allow reading saved plan files without a confirmation prompt by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7678
* feat(web-shell): add read-only GitHub pull requests panel by @wenshao in https://github.com/QwenLM/qwen-code/pull/7683
* fix(cli): clear stale retry error when agent auto-recovers mid-turn by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7681
* fix(mcp): harden OAuth callback handling by @gauravyad86 in https://github.com/QwenLM/qwen-code/pull/7510
* fix(web-shell): add :focus-visible outline to GitHub PR list rows by @wenshao in https://github.com/QwenLM/qwen-code/pull/7704
* perf(cli): cache GitHub PR list in the daemon route with a 60s TTL by @wenshao in https://github.com/QwenLM/qwen-code/pull/7705
* perf(core): keep the volatile auto-memory section last in the system prompt by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7651
* perf(web-shell): paint the composer git chip before git status completes by @wenshao in https://github.com/QwenLM/qwen-code/pull/7680
* fix(triage): resolve stage comment ids by marker at patch time, harden model injection by @wenshao in https://github.com/QwenLM/qwen-code/pull/7703
* fix(triage): resolve finalize PRs from the open-PR list, not the commit association by @wenshao in https://github.com/QwenLM/qwen-code/pull/7706
* feat(integrations): add retrieval-only external context search by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7586
* feat(review): add comment-status helper for existing-thread triage by @wenshao in https://github.com/QwenLM/qwen-code/pull/7690
* feat(review): enforce the submit-only write contract with a cleanup tripwire by @wenshao in https://github.com/QwenLM/qwen-code/pull/7691
* fix(cli): align inline math recognition by @CubeLander in https://github.com/QwenLM/qwen-code/pull/7701
* feat(serve): Hot-reload workspace trust changes by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7268
* feat(core): configure stream rate-limit retry delays by @jay666mnj in https://github.com/QwenLM/qwen-code/pull/7674
* refactor(core): assemble the system prompt through one layered builder by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7707
* feat(stats): show generation timing metrics by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7677
* fix(desktop): scale formatBytes past GB so terabyte sizes don't render as "undefined" by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7623
* fix(core): stringify const-derived enums in toOpenAPI30 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7547
* fix(core): convert subschemas of properties named after schema keywords by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7546
* feat(channels): GitHub polling adapter with notification-as-wakeup architecture by @OrbitZore in https://github.com/QwenLM/qwen-code/pull/7632
* feat(core): configure stream rate-limit retry delays by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7666
* fix: silence xterm.js parser diagnostics leaking from headless shell terminals by @mvanhorn in https://github.com/QwenLM/qwen-code/pull/7663
* fix(review): address post-merge P2 review feedback on the review skill by @wenshao in https://github.com/QwenLM/qwen-code/pull/7708
* fix(core): fire StopFailure hook on loop detection early returns by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7592
* test(web-shell): cover restored-history pagination retries by @jay666mnj in https://github.com/QwenLM/qwen-code/pull/7657
* fix(web-shell): enable Changes and History dialogs for worktree sessions by @wenshao in https://github.com/QwenLM/qwen-code/pull/7695
* fix(cli): parse heatmapDays strictly by @VectorPeak in https://github.com/QwenLM/qwen-code/pull/7218
* fix(acp-bridge): raise live journal caps and expose as daemon config by @wenshao in https://github.com/QwenLM/qwen-code/pull/7715
* fix(web-shell): allow pin and group for secondary workspace sessions by @wenshao in https://github.com/QwenLM/qwen-code/pull/7716
* fix(review): don't overclaim a submit-gate bypass on a same-account write by @wenshao in https://github.com/QwenLM/qwen-code/pull/7718
* fix(qqbot): restore AcpBridge session loading — return input sessionId, patch catch path by @Eric-GoodBoy-Tech in https://github.com/QwenLM/qwen-code/pull/7722
* feat(skills): add overridable default-disabled state by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/7357
* fix(core): prevent updates to extension-provided agents by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7245
* fix(core): fall back to system rg when bundled ripgrep cannot run by @harjothkhara in https://github.com/QwenLM/qwen-code/pull/7203
* fix(core): avoid required tools in DashScope thinking by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7661
## New Contributors
* @jay666mnj made their first contribution in https://github.com/QwenLM/qwen-code/pull/7674
* @harjothkhara made their first contribution in https://github.com/QwenLM/qwen-code/pull/7203
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.0...v0.21.0-nightly.20260726.9d19eafa9