<!-- qwen-release-notes:v1 -->
## 亮点
- Web Shell 现已打包为可直接发布的桌面应用,具备原生生命周期管理、单实例运行行为及自动更新功能。 ([#8132](https://github.com/QwenLM/qwen-code/pull/8132))
- Web Shell 历史记录分页现在能优雅地处理超长对话轮次,并新增重试按钮,无需重启会话即可重新加载失败页面。 ([#8335](https://github.com/QwenLM/qwen-code/pull/8335))
- 分叉的子代理现在与兄弟分叉隔离,确保每个代理仅访问其专属的指令和指引。 ([#8344](https://github.com/QwenLM/qwen-code/pull/8344))
- 聊天压缩现在在支持的提供商上复用主对话提示词缓存,在不执行工具的情况下降低延迟。 ([#8339](https://github.com/QwenLM/qwen-code/pull/8339))
- 修复了 Windows 系统下粘贴 API 密钥等敏感扩展设置被忽略的问题,通过启用多字符粘贴事件解决。 ([#8342](https://github.com/QwenLM/qwen-code/pull/8342))
- /review 技能现在能正确遵循用户配置的输出语言,用于 Tip 行、保存的报告及审查标签。 ([#8370](https://github.com/QwenLM/qwen-code/pull/8370))
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 新功能
- /summary 命令现在接受可选的路径参数,用于将项目摘要保存到自定义位置,并在需要时自动创建父目录。 ([#8116](https://github.com/QwenLM/qwen-code/pull/8116)) by @qwen-code-dev-bot
- 更新了审查验证器,将未验证的发现视为低置信度确认而非拒绝,并指示其优先检查引用的来源。 ([#8346](https://github.com/QwenLM/qwen-code/pull/8346)) by @wenshao
- 新增 qwen review drive 命令,用于轮询服务就绪状态并验证完成事实,替代依赖固定休眠延迟的做法。 ([#8349](https://github.com/QwenLM/qwen-code/pull/8349)) by @wenshao
- 守护进程现在会在 /daemon/status 中解析并报告其内存预算,以指示内存耗尽的临近程度。 ([#8245](https://github.com/QwenLM/qwen-code/pull/8245)) by @doudouOUC
- 新增 qwen review mock-provider 命令,将 OpenAI 兼容请求记录为 JSONL 格式,用于在忠实的外部世界模拟环境中进行测试。 ([#8355](https://github.com/QwenLM/qwen-code/pull/8355)) by @wenshao
- Web Shell 现已打包为可直接发布的桌面应用,具备原生生命周期管理、单实例运行行为及自动更新功能。 ([#8132](https://github.com/QwenLM/qwen-code/pull/8132)) by @yiliang114
- feat(serve):使子会话并发上限可配置 ([#8341](https://github.com/QwenLM/qwen-code/pull/8341)) by @wenshao
- 新增 repo-hygiene 技能及每周工作流,自动扫描并提议修复文档与代码质量问题。 ([#7908](https://github.com/QwenLM/qwen-code/pull/7908)) by @ZijianZhang989
- 根据变更规模调整自动化 PR 审查超时时间,对于超过 300 行的大型拉取请求,超时时间最长可达 240 分钟。 ([#8377](https://github.com/QwenLM/qwen-code/pull/8377)) by @wenshao
- 为 GitHub 和 GitLab 渠道启用完整的 Web Shell 管理功能,允许用户在不编辑设置文件的情况下配置令牌和策略。 ([#8310](https://github.com/QwenLM/qwen-code/pull/8310)) by @OrbitZore
- 新增 qwen review publish-assets 命令,将证据图片托管在用户指定的仓库中,以便嵌入 PR 审查评论。 ([#8351](https://github.com/QwenLM/qwen-code/pull/8351)) by @wenshao
- 审查工具新增内置的 Java/JVM 性能检查清单,用于标记 Java 文件中的正确性陷阱和 JVM 成本缺陷。 ([#8379](https://github.com/QwenLM/qwen-code/pull/8379)) by @wenshao
- feat(ci):扩展 packages/core 的代码所有者池 ([#8347](https://github.com/QwenLM/qwen-code/pull/8347)) by @wenshao
- 引入 experimental.sessionWorkflow 设置,可选启用会话工作流功能,如“计划与审查”模式和工作流 DAG。 ([#8391](https://github.com/QwenLM/qwen-code/pull/8391)) by @yiliang114
- 更新非交互式 CLI /goal 命令以使用 Goal v3 运行时,确保状态持久化一致并改善流式传输行为。 ([#8324](https://github.com/QwenLM/qwen-code/pull/8324)) by @qqqys
- 新增 memory.agentMaxTurns 设置,用于配置所有托管内存代理的轮次限制,设为 0 可完全禁用该限制。 ([#8171](https://github.com/QwenLM/qwen-code/pull/8171)) by @tomatotomata
### 缺陷修复
- 即使单轮对话超过页面预算,Web Shell 历史记录的分页功能现在也能正常进行,并且重试按钮允许在不重启会话的情况下重新加载失败的历史记录页面。 ([#8335](https://github.com/QwenLM/qwen-code/pull/8335)) by @wenshao
- CI 分类任务现在会在运行操作前确保已安装 qwen CLI,以防止重复安装并修复自托管运行器上的集群级故障。 ([#8337](https://github.com/QwenLM/qwen-code/pull/8337)) by @yiliang114
- 突变测试现在能正确将突变体标记为“无法判定”(inconclusive)而非“存活”(survived),当其在未突变基线中的关联测试失败时,从而防止误报。 ([#8345](https://github.com/QwenLM/qwen-code/pull/8345)) by @wenshao
- 分叉的子代理现在无法再看到同轮次启动的兄弟分叉的指令,确保每个子代理仅能访问其分配到的专属指令。 ([#8344](https://github.com/QwenLM/qwen-code/pull/8344)) by @harjothkhara
- 恢复了会话工作流视图外的 Todo 行为,以确保代理关联为可选,并且历史依赖引用不会错误地将计划标记为阻塞。 ([#8334](https://github.com/QwenLM/qwen-code/pull/8334)) by @yiliang114
- 通过在接受 COMPLETE 取消状态的同时,也接受会话拆卸竞态条件期间的 ERROR 终端状态,修复了一个不稳定的 Java 守护进程测试。 ([#8354](https://github.com/QwenLM/qwen-code/pull/8354)) by @wenshao
- 启用聊天压缩功能,在使用支持的提供商时复用主对话提示词缓存,从而在不执行工具的情况下降低延迟。 ([#8339](https://github.com/QwenLM/qwen-code/pull/8339)) by @DragonnZhang
- 修复了 Windows 系统上粘贴 API 密钥等敏感扩展设置被忽略的问题,通过允许多字符粘贴事件实现。 ([#8342](https://github.com/QwenLM/qwen-code/pull/8342)) by @DragonnZhang
- GitHub 通道的入站任务现在支持重启安全,确保中断的工作得以恢复,且待处理的评论会重试,而无需重新运行代理。 ([#8306](https://github.com/QwenLM/qwen-code/pull/8306)) by @yiliang114
- 通过将带有泄露协议标签的畸形 JSON 工具响应路由至现有的重试路径,防止其到达用户界面。 ([#8301](https://github.com/QwenLM/qwen-code/pull/8301)) by @yiliang114
- 通过正确计算 PR 的文件变更(而非与基础分支历史进行比较),修复了旧分支上的 CI 失败问题。 ([#8372](https://github.com/QwenLM/qwen-code/pull/8372)) by @wenshao
- 确保 ECS 运行器集群能够自动更新,每当 main 分支上的更新器逻辑发生变化时,都会触发协调工作流。 ([#8373](https://github.com/QwenLM/qwen-code/pull/8373)) by @yiliang114
- 确保 /review 技能中的提示行、保存的报告和审查标签正确遵循用户配置的输出语言。 ([#8370](https://github.com/QwenLM/qwen-code/pull/8370)) by @wenshao
- 修复 qwen review 运行逻辑,在生成子进程时正确处理 QWEN_CODE_CLI 环境变量,以确保正确的构建标记。 ([#8378](https://github.com/QwenLM/qwen-code/pull/8378)) by @wenshao
- 通过区分已交付的输出与内部推理步骤,启用对因套接字关闭而中断的长响应流的恢复。 ([#7896](https://github.com/QwenLM/qwen-code/pull/7896)) by @LHMQ878
- 确保 Auto Recall 钩子在检索完成后正确释放代理调度器,以防止资源泄漏。 ([#8352](https://github.com/QwenLM/qwen-code/pull/8352)) by @doudouOUC
- 更新审查报告,在因预先存在的问题而排除突变体时,清晰区分失败的测试与未产生结果的测试。 ([#8374](https://github.com/QwenLM/qwen-code/pull/8374)) by @wenshao
- 当确认归咎于某个 PR 的测试在合并基线上已经失败时,将相关发现降级为“建议”(Suggestion)严重程度。 ([#8380](https://github.com/QwenLM/qwen-code/pull/8380)) by @wenshao
- 修复 /review 功能,降低 Maven 生成的测试源码的优先级,防止它们在规则标题中挤占生产 Java 路径的位置。 ([#8405](https://github.com/QwenLM/qwen-code/pull/8405)) by @wenshao
### 文档
- docs: 完善 TUI 键盘快捷键参考 ([#8327](https://github.com/QwenLM/qwen-code/pull/8327)) by @DragonnZhang
- 更新架构概述,将 Qwen Code 反映为多表面单体仓库,详细说明 CLI、ACP 和守护进程执行模型。 ([#8325](https://github.com/QwenLM/qwen-code/pull/8325)) by @DragonnZhang
- 文档现在解释了如何为聊天压缩和图像生成选择模型,包括默认设置及提供商要求。 ([#8348](https://github.com/QwenLM/qwen-code/pull/8348)) by @DragonnZhang
- 更新代理文档,包含 drive 和 mock-provider 命令,并澄清验证测试应如何构建。 ([#8369](https://github.com/QwenLM/qwen-code/pull/8369)) by @wenshao
### 内部变更
- ci:将合并操作限制在确定性的无 AK 端到端测试通过后 ([#8313](https://github.com/QwenLM/qwen-code/pull/8313)) by @yiliang114
- 通过脚本化模型响应,在保留真实工具和 CLI 交互的同时,使 SDK 权限控制的端到端测试具备确定性。 ([#8302](https://github.com/QwenLM/qwen-code/pull/8302)) by @yiliang114
- 在发布后立即自动将 ECS runner 更新到最新的稳定版 Qwen CLI 版本,并防止意外降级到预发布构建。 ([#8343](https://github.com/QwenLM/qwen-code/pull/8343)) by @wenshao
- 修复了扩展管理器中的一个不稳定测试,该测试此前因时钟竞态条件导致 CI 间歇性失败。 ([#8362](https://github.com/QwenLM/qwen-code/pull/8362)) by @wenshao
- 通过断言跨 Shell 一致的行为而非依赖特定 bash 版本的退出码,修复了 macOS 上的 drive 测试用例。 ([#8366](https://github.com/QwenLM/qwen-code/pull/8366)) by @wenshao
- 通过基于源元数据而非系统时间戳来选择通知,提高了 acp-cron 集成测试的稳定性。 ([#8336](https://github.com/QwenLM/qwen-code/pull/8336)) by @qwen-code-dev-bot
## 新贡献者
- @LHMQ878 在 [#7896](https://github.com/QwenLM/qwen-code/pull/7896) 中首次贡献
- @tomatotomata 在 [#8171](https://github.com/QwenLM/qwen-code/pull/8171) 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.21.3...v0.21.4
<!-- qwen-release-notes:v1 -->
## Highlights
- Web Shell is now a release-ready desktop app with native lifecycle management, single-instance behavior, and automatic updates. ([#8132](https://github.com/QwenLM/qwen-code/pull/8132))
- Web Shell history pagination now handles oversized turns gracefully and includes a retry button to reload failed pages without restarting sessions. ([#8335](https://github.com/QwenLM/qwen-code/pull/8335))
- Forked subagents are now isolated from sibling forks, ensuring each agent accesses only its own assigned instructions and directives. ([#8344](https://github.com/QwenLM/qwen-code/pull/8344))
- Chat compression now reuses the main conversation prompt cache on supported providers, reducing latency without executing tools. ([#8339](https://github.com/QwenLM/qwen-code/pull/8339))
- Fixed a Windows issue where pasting sensitive extension settings like API keys was ignored by enabling multi-character paste events. ([#8342](https://github.com/QwenLM/qwen-code/pull/8342))
- The /review skill now correctly follows the user's configured output language for Tip lines, saved reports, and review labels. ([#8370](https://github.com/QwenLM/qwen-code/pull/8370))
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- The /summary command now accepts an optional path argument to save project summaries to custom locations, automatically creating parent directories if needed. ([#8116](https://github.com/QwenLM/qwen-code/pull/8116)) by @qwen-code-dev-bot
- Updated the review verifier to treat unverified findings as low-confidence confirmations rather than rejections, instructing it to check cited sources first. ([#8346](https://github.com/QwenLM/qwen-code/pull/8346)) by @wenshao
- Added the qwen review drive command to poll for service readiness and verify completion facts instead of relying on fixed sleep delays. ([#8349](https://github.com/QwenLM/qwen-code/pull/8349)) by @wenshao
- The daemon now resolves and reports its memory budget in /daemon/status to indicate proximity to exhaustion. ([#8245](https://github.com/QwenLM/qwen-code/pull/8245)) by @doudouOUC
- Added the qwen review mock-provider command to record OpenAI-compatible requests as JSONL for testing against a faithful outside world simulation. ([#8355](https://github.com/QwenLM/qwen-code/pull/8355)) by @wenshao
- The Web Shell is now packaged as a release-ready desktop app with native lifecycle management, single-instance behavior, and automatic updates. ([#8132](https://github.com/QwenLM/qwen-code/pull/8132)) by @yiliang114
- feat(serve): make sub-session concurrency caps configurable ([#8341](https://github.com/QwenLM/qwen-code/pull/8341)) by @wenshao
- Add a repo-hygiene skill and weekly workflow to automatically scan for and propose fixes for documentation and code quality issues. ([#7908](https://github.com/QwenLM/qwen-code/pull/7908)) by @ZijianZhang989
- Adjust the automated PR review timeout based on change size, allowing up to 240 minutes for large pull requests exceeding 300 lines. ([#8377](https://github.com/QwenLM/qwen-code/pull/8377)) by @wenshao
- Enable full Web Shell management for GitHub and GitLab channels, allowing users to configure tokens and policies without editing settings files. ([#8310](https://github.com/QwenLM/qwen-code/pull/8310)) by @OrbitZore
- Adds the qwen review publish-assets command to host evidence images in a user-designated repository for embedding in PR review comments. ([#8351](https://github.com/QwenLM/qwen-code/pull/8351)) by @wenshao
- Adds a built-in Java/JVM performance checklist to the review tool that flags correctness traps and JVM-cost defects in Java files. ([#8379](https://github.com/QwenLM/qwen-code/pull/8379)) by @wenshao
- feat(ci): expand code owner pool for packages/core ([#8347](https://github.com/QwenLM/qwen-code/pull/8347)) by @wenshao
- Introduced the experimental.sessionWorkflow setting to optionally enable Session Workflow features like Plan & Review mode and the Workflow DAG. ([#8391](https://github.com/QwenLM/qwen-code/pull/8391)) by @yiliang114
- Updated non-interactive CLI /goal commands to use the Goal v3 runtime, ensuring consistent state persistence and improved streaming behavior. ([#8324](https://github.com/QwenLM/qwen-code/pull/8324)) by @qqqys
- Added the memory.agentMaxTurns setting to configure turn limits for all managed memory agents, with 0 disabling the limit entirely. ([#8171](https://github.com/QwenLM/qwen-code/pull/8171)) by @tomatotomata
### Bug Fixes
- Web Shell history pagination now proceeds even when a single turn exceeds the page budget, and a retry button allows reloading failed history pages without restarting the session. ([#8335](https://github.com/QwenLM/qwen-code/pull/8335)) by @wenshao
- The CI triage job now ensures the qwen CLI is installed before running actions to prevent redundant installations and fix fleet-wide failures on self-hosted runners. ([#8337](https://github.com/QwenLM/qwen-code/pull/8337)) by @yiliang114
- Mutation testing now correctly marks mutants as inconclusive instead of survived when their collocated tests failed in the unmutated baseline, preventing false positive findings. ([#8345](https://github.com/QwenLM/qwen-code/pull/8345)) by @wenshao
- Forked subagents can no longer see the directives of sibling forks launched in the same turn, ensuring each subagent only accesses its own assigned instructions. ([#8344](https://github.com/QwenLM/qwen-code/pull/8344)) by @harjothkhara
- Todo behavior outside Session Workflow views is restored to ensure agent association is opt-in and historical dependency references do not incorrectly mark plans as blocked. ([#8334](https://github.com/QwenLM/qwen-code/pull/8334)) by @yiliang114
- Fixed a flaky Java daemon test by accepting ERROR terminal states during session teardown races in addition to COMPLETE cancelled states. ([#8354](https://github.com/QwenLM/qwen-code/pull/8354)) by @wenshao
- Enabled chat compression to reuse the main conversation prompt cache when using supported providers, reducing latency without executing tools. ([#8339](https://github.com/QwenLM/qwen-code/pull/8339)) by @DragonnZhang
- Fixed an issue on Windows where pasting sensitive extension settings like API keys was ignored by allowing multi-character paste events. ([#8342](https://github.com/QwenLM/qwen-code/pull/8342)) by @DragonnZhang
- GitHub channel inbound tasks are now restart-safe, ensuring interrupted work is recovered and pending comments are retried without rerunning agents. ([#8306](https://github.com/QwenLM/qwen-code/pull/8306)) by @yiliang114
- Prevented malformed JSON tool responses with leaked protocol tags from reaching the UI by routing them through the existing retry path. ([#8301](https://github.com/QwenLM/qwen-code/pull/8301)) by @yiliang114
- Fix CI failures on older branches by correctly calculating PR file changes instead of comparing against the base branch history. ([#8372](https://github.com/QwenLM/qwen-code/pull/8372)) by @wenshao
- Ensure ECS runner fleets update automatically by triggering the reconciliation workflow whenever the updater logic changes on main. ([#8373](https://github.com/QwenLM/qwen-code/pull/8373)) by @yiliang114
- Ensure Tip lines, saved reports, and review labels in the /review skill correctly follow the user's configured output language. ([#8370](https://github.com/QwenLM/qwen-code/pull/8370)) by @wenshao
- Fixes qwen review run to correctly handle the QWEN_CODE_CLI environment variable when spawning child processes to ensure proper build stamping. ([#8378](https://github.com/QwenLM/qwen-code/pull/8378)) by @wenshao
- Enables recovery of long response streams interrupted by socket closures by distinguishing delivered output from internal reasoning steps. ([#7896](https://github.com/QwenLM/qwen-code/pull/7896)) by @LHMQ878
- Ensures Auto Recall hooks properly dispose of proxy dispatchers after retrieval completes to prevent resource leaks. ([#8352](https://github.com/QwenLM/qwen-code/pull/8352)) by @doudouOUC
- Updates review reports to clearly distinguish between tests that failed and tests that produced no results when excluding mutants due to pre-existing issues. ([#8374](https://github.com/QwenLM/qwen-code/pull/8374)) by @wenshao
- Downgrades findings to Suggestion severity when tests blamed on a pull request are confirmed to already fail on the merge base. ([#8380](https://github.com/QwenLM/qwen-code/pull/8380)) by @wenshao
- Fixed /review to deprioritize Maven generated test sources, preventing them from crowding out production Java paths in rule headings. ([#8405](https://github.com/QwenLM/qwen-code/pull/8405)) by @wenshao
### Documentation
- docs: complete TUI keyboard shortcut reference ([#8327](https://github.com/QwenLM/qwen-code/pull/8327)) by @DragonnZhang
- Updated the architecture overview to reflect Qwen Code as a multi-surface monorepo, detailing CLI, ACP, and daemon execution models. ([#8325](https://github.com/QwenLM/qwen-code/pull/8325)) by @DragonnZhang
- Documentation now explains how to select models for chat compression and image generation, including defaults and provider requirements. ([#8348](https://github.com/QwenLM/qwen-code/pull/8348)) by @DragonnZhang
- Update agent documentation to include the drive and mock-provider commands and clarify how verification tests should be structured. ([#8369](https://github.com/QwenLM/qwen-code/pull/8369)) by @wenshao
### Internal Changes
- ci: gate merges on deterministic no-AK E2E ([#8313](https://github.com/QwenLM/qwen-code/pull/8313)) by @yiliang114
- Made the SDK permission control end-to-end tests deterministic by scripting model responses while retaining real tool and CLI interactions. ([#8302](https://github.com/QwenLM/qwen-code/pull/8302)) by @yiliang114
- Automated ECS runner updates to the latest stable Qwen CLI version immediately after publish and prevented accidental downgrades to prerelease builds. ([#8343](https://github.com/QwenLM/qwen-code/pull/8343)) by @wenshao
- Fixed a flaky test in the extension manager that previously caused intermittent CI failures due to clock racing. ([#8362](https://github.com/QwenLM/qwen-code/pull/8362)) by @wenshao
- Fixed a drive test case on macOS by asserting a shell-invariant behavior instead of relying on specific bash version exit codes. ([#8366](https://github.com/QwenLM/qwen-code/pull/8366)) by @wenshao
- Improves the stability of acp-cron integration tests by selecting notifications based on source metadata instead of wall-clock timestamps. ([#8336](https://github.com/QwenLM/qwen-code/pull/8336)) by @qwen-code-dev-bot
## New Contributors
- @LHMQ878 made their first contribution in [#7896](https://github.com/QwenLM/qwen-code/pull/7896)
- @tomatotomata made their first contribution in [#8171](https://github.com/QwenLM/qwen-code/pull/8171)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.3...v0.21.4