<!-- qwen-release-notes:v1 -->
## 亮点
_详见下方的完整变更列表。_
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 新功能
- 分支选择器现在在“更新项目”、“提交”和“推送”操作旁显示 git 状态提示(如 '↓3 · origin/main' 或 'Up to date'),帮助用户在点击前判断状态。 ([#10397](https://github.com/QwenLM/qwen-code/pull/10397)) by @wenshao
- 新增 qwen review emit-workflow 子命令,用于生成确定性脚本,通过 parallel() 而非手动编排来执行 Review Step 3A 的代理扇出。 ([#10119](https://github.com/QwenLM/qwen-code/pull/10119)) by @qqqys
- Web Shell “添加工作区”对话框现在会在缺乏 zenity 或 osascript 等原生目录选择器能力的无头守护进程主机上隐藏“浏览”按钮。 ([#9406](https://github.com/QwenLM/qwen-code/pull/9406)) by @qqqys
- 新增支持带项目或用户目标的范围化工作区记忆任务,在 remember 和 forget 操作期间强制实施存储间严格的文件系统权限边界。 ([#9895](https://github.com/QwenLM/qwen-code/pull/9895)) by @qqqys
- 在 Web Shell 头部添加了二维码按钮,用于快速配对 Local Control,若该功能已禁用则直接跳转至设置。 ([#10432](https://github.com/QwenLM/qwen-code/pull/10432)) by @wenshao
- 接管循环现在可通过包含匹配推荐代码的新账本标记来消费审查收敛信号。 ([#10122](https://github.com/QwenLM/qwen-code/pull/10122)) by @wenshao
- 优化了会话概览表格,支持响应式列、排序、过滤,并改进了会话管理操作的处理。 ([#10115](https://github.com/QwenLM/qwen-code/pull/10115)) by @ytahdn
- 在 Web Shell 中新增每次运行的定时任务会话,为每次执行创建带有唯一时间戳的全新子对话。 ([#10233](https://github.com/QwenLM/qwen-code/pull/10233)) by @qqqys
- 移除了 qwen serve 中仅限公共网络的政策限制,允许从企业私有 Git 主机安装扩展。 ([#10156](https://github.com/QwenLM/qwen-code/pull/10156)) by @callmeYe
- feat(core): address other sessions by name from send_message and list_agents ([#10158](https://github.com/QwenLM/qwen-code/pull/10158)) by @qqqys
- 为工作区、独立和 Live 对话新增了明确的守护进程会话上下文,以改进路由和运行时解析。 ([#10418](https://github.com/QwenLM/qwen-code/pull/10418)) by @doudouOUC
- feat(core): report compression API failures distinctly ([#9119](https://github.com/QwenLM/qwen-code/pull/9119)) by @xianjianlf2
- 自动为触及映射区域的新 PR 分配唯一的责任维护者,并在自动分类推迟 PR 时解析出单一所有者。 ([#9813](https://github.com/QwenLM/qwen-code/pull/9813)) by @yiliang114
- 将受限的 MCP 工具参数和服务器注解转发给 AUTO 模式分类器,以超越仅凭工具名称提升决策准确性。 ([#10352](https://github.com/QwenLM/qwen-code/pull/10352)) by @qqqys
- 当未配置 bearer token 且未明确要求身份验证时,为 qwen serve 在受信任的环回接口上启用完整的操作员 API 访问。 ([#10403](https://github.com/QwenLM/qwen-code/pull/10403)) by @doudouOUC
- 命名 Channel 任务现在在其输出中包含来源归属标签(如 [task] 或 [sender · task]),以便更好地进行投递关联。 ([#10420](https://github.com/QwenLM/qwen-code/pull/10420)) by @doudouOUC
- 增强了 Web Shell 侧边栏,可显示工作区会话数量、完整路径,以及 MCP 服务器、技能、扩展和上下文文件的详细标签。 ([#10407](https://github.com/QwenLM/qwen-code/pull/10407)) by @wenshao
- 通过守护进程暴露了工作流执行控制,允许客户端检查、取消、暂停、恢复、重试和删除运行,同时保留旧版任务契约。 ([#10411](https://github.com/QwenLM/qwen-code/pull/10411)) by @qqqys
- 通过新增主题、无障碍、剪贴板、键映射和对话框脚手架的新渲染器模块,为 OpenTUI 迁移奠定基础。 ([#10146](https://github.com/QwenLM/qwen-code/pull/10146)) by @chiga0
- 在 Channels 中启用并发命名任务控制,允许用户在切换上下文时后台任务继续运行,并新增 /session cancel 支持。 ([#10574](https://github.com/QwenLM/qwen-code/pull/10574)) by @doudouOUC
- Web Shell 终端错误消息现在包含复制操作,可复制精确渲染的错误文本并提供视觉确认。 ([#10001](https://github.com/QwenLM/qwen-code/pull/10001)) by @Wkewen
- 工作区运行时所有权现已确立为守护进程生命周期边界,确保运行时活动在移除工作区和关闭期间持续存在。 ([#10593](https://github.com/QwenLM/qwen-code/pull/10593)) by @ytahdn
- 工作区范围的扩展技能状态现在可通过批处理 API 进行管理,允许独立覆盖,同时保持父级扩展设置的权威性。 ([#10600](https://github.com/QwenLM/qwen-code/pull/10600)) by @callmeYe
- 操作员现在可以使用 model.goalTokenBudget 配置或禁用目标令牌预算,支持 1 到 300,000,000 的值,或 -1 表示无限制。 ([#10543](https://github.com/QwenLM/qwen-code/pull/10543)) by @qqqys
- 模型现在在每轮对话中接收关于当前输出样式的提醒,以确保在非默认样式启用时保持回复简洁。 ([#10282](https://github.com/QwenLM/qwen-code/pull/10282)) by @qqqys
- 启用 external-context-mem0 扩展通过 InstanceConfigV2 中的绝对路径加载管理员拥有的 Mem0 方言。 ([#10634](https://github.com/QwenLM/qwen-code/pull/10634)) by @doudouOUC
- 新增无会话的 POST /language 路由,用于在任何会话存在之前跨所有运行时同步用户级语言偏好。 ([#10554](https://github.com/QwenLM/qwen-code/pull/10554)) by @doudouOUC
- 绑定到 GitHub PR 的会话现在会在 Web Shell 工具提示中显示该 PR 关闭的关联问题,并支持按问题编号搜索会话。 ([#10425](https://github.com/QwenLM/qwen-code/pull/10425)) by @wenshao
- feat(serve): 允许通过环境变量重新定位会话附件存储路径 ([#10066](https://github.com/QwenLM/qwen-code/pull/10066)) by @ytahdn
- 将 live-session 流、输入层和组合器加入 OpenTUI 迁移,支持流式 Markdown、工具运行和统一差异渲染。 ([#10368](https://github.com/QwenLM/qwen-code/pull/10368)) by @chiga0
- 改进了频道回退权限提示,增加了具体工具详情,并在钉钉失败消息中隐藏了内部错误数据。 ([#10614](https://github.com/QwenLM/qwen-code/pull/10614)) by @qqqys
- 允许 Web Shell 更新项目操作在有未提交更改的工作区继续执行,提供暂存或丢弃本地更改的选项。 ([#10390](https://github.com/QwenLM/qwen-code/pull/10390)) by @wenshao
- 允许 DWS 频道自定义任务执行中和完成时显示的开始与结束状态反应表情符号。 ([#10610](https://github.com/QwenLM/qwen-code/pull/10610)) by @qqqys
- feat(cli): 通过 general.outputStyle 或 --output-style 选择输出样式 ([#10283](https://github.com/QwenLM/qwen-code/pull/10283)) by @qqqys
- feat(qwen-live): 独立语音守护进程包 — M1 + M2 ([#10367](https://github.com/QwenLM/qwen-code/pull/10367)) by @LaZzyMan
- feat(cli): OpenTUI 迁移第 4 批 — 对话框、命令与会话回退 ([#10383](https://github.com/QwenLM/qwen-code/pull/10383)) by @chiga0
- feat(goal): 允许模型提出目标,用户可在对话框中审批 ([#10171](https://github.com/QwenLM/qwen-code/pull/10171)) by @qqqys
- feat(web-shell): 添加独立聊天功能 ([#10514](https://github.com/QwenLM/qwen-code/pull/10514)) by @doudouOUC
- feat(cli): 无需重启会话即可热重载 modelProviders ([#10582](https://github.com/QwenLM/qwen-code/pull/10582)) by @yiliang114
- feat(web-shell): 添加实验性会话工作流驾驶舱 ([#8583](https://github.com/QwenLM/qwen-code/pull/8583)) by @yiliang114
- feat(web-shell): 在侧边栏会话搜索中支持搜索对话内容 ([#10612](https://github.com/QwenLM/qwen-code/pull/10612)) by @wenshao
- feat(opentui): 添加后端组合根目录(第 5 批) ([#10696](https://github.com/QwenLM/qwen-code/pull/10696)) by @chiga0
- feat(web-shell): 添加工作区概览面板 ([#10589](https://github.com/QwenLM/qwen-code/pull/10589)) by @wenshao
- feat(review): 在任何代理运行前预构建审查工作区 ([#10423](https://github.com/QwenLM/qwen-code/pull/10423)) by @wenshao
- feat(web-shell): 精简工作区侧边栏并添加回环打开操作 ([#10606](https://github.com/QwenLM/qwen-code/pull/10606)) by @wenshao
- feat(external-context): 发布 Mem0 扩展包 ([#10653](https://github.com/QwenLM/qwen-code/pull/10653)) by @doudouOUC
- feat(core): 在会话 Shell 中绑定通过 gh pr create 创建的 PR ([#9739](https://github.com/QwenLM/qwen-code/pull/9739)) by @wenshao
- feat(web-shell): 对定时任务运行会话进行分组 ([#10611](https://github.com/QwenLM/qwen-code/pull/10611)) by @qqqys
- feat(cli): 添加 /output-style 命令,支持选择器及会话中途切换 ([#10683](https://github.com/QwenLM/qwen-code/pull/10683)) by @qqqys
- feat(ipc): 使用会话级令牌对跨会话收件箱连接进行身份验证 ([#10636](https://github.com/QwenLM/qwen-code/pull/10636)) by @qqqys
- feat(qwen-live): ACP 后端适配器与多后端路由 — M4 ([#10617](https://github.com/QwenLM/qwen-code/pull/10617)) by @LaZzyMan
- feat(opentui): 在 QWEN_TUI_RENDERER 环境变量下激活 OpenTUI 后端 ([#10739](https://github.com/QwenLM/qwen-code/pull/10739)) by @chiga0
- feat(ipc): 为会话自身进程提供子令牌,以便入站网关识别 ([#10764](https://github.com/QwenLM/qwen-code/pull/10764)) by @qqqys
- feat(opentui): 打包资源、CI 矩阵与功能对齐工具(第 7 批) ([#10770](https://github.com/QwenLM/qwen-code/pull/10770)) by @chiga0
- feat(daemon): 在频道拆除诊断中标识耗尽的 NDJSON 预算 ([#10727](https://github.com/QwenLM/qwen-code/pull/10727)) by @yiliang114
- feat(qwen-live): 协议 v7 播放回执与交互式初始化 — M5 ([#10769](https://github.com/QwenLM/qwen-code/pull/10769)) by @LaZzyMan
- feat(release): 在独立发布版本中添加受限的 bun/OpenTUI 预览版 ([#10814](https://github.com/QwenLM/qwen-code/pull/10814)) by @chiga0
- feat(channels): 通过代理桥接暴露 BTW ([#10712](https://github.com/QwenLM/qwen-code/pull/10712)) by @qqqys
- feat(serve): 添加工作区范围的 MCP 管理 ([#10679](https://github.com/QwenLM/qwen-code/pull/10679)) by @ytahdn
- feat(channels): 在频道对话中添加 BTW 侧边问题 ([#10713](https://github.com/QwenLM/qwen-code/pull/10713)) by @qqqys
- feat(web-shell): 暴露会话工件快照 ([#10747](https://github.com/QwenLM/qwen-code/pull/10747)) by @dreamWB
- feat(dingtalk): 支持出站文件传输 ([#10893](https://github.com/QwenLM/qwen-code/pull/10893)) by @qqqys
### 错误修复
- fix(core): 在允许规则和自动批准规则下保留 ask_user_question 对话框 ([#10160](https://github.com/QwenLM/qwen-code/pull/10160)) by @qqqys
- 更新 qwen --help 命令,使其从共享选项定义中生成输出,确保准确列出所有接受的参数(如 --approval-mode 和 --auth-type),而非过时的子集。 ([#8902](https://github.com/QwenLM/qwen-code/pull/8902)) by @yiliang114
- 为 Anthropic 流应用空闲和最大生命周期看门狗,以防止无限期挂起,确保其像 OpenAI 兼容提供商一样以 ETIMEDOUT 中止。 ([#9945](https://github.com/QwenLM/qwen-code/pull/9945)) by @yiliang114
- 自动修复(Autofix)现在会在轮次报告中报告是哪个守卫(guard)拒绝了线程解析,并等待头部传播以防止静默失败。 ([#10117](https://github.com/QwenLM/qwen-code/pull/10117)) by @wenshao
- 智能体工具现在显示运行时解析的执行模式,以便无论模型参数如何,都能正确区分前台和后台任务。 ([#9955](https://github.com/QwenLM/qwen-code/pull/9955)) by @DragonnZhang
- 旧版 Git 归档回退机制现在接受安全的受限符号链接,同时继续拒绝绝对路径、驱动器盘符和逃逸尝试。 ([#9969](https://github.com/QwenLM/qwen-code/pull/9969)) by @harjothkhara
- 修复调试日志记录,防止守护进程配置和后台工作将会话日志泄漏到无关的调试文件中。 ([#9930](https://github.com/QwenLM/qwen-code/pull/9930)) by @tomsen02
- 修复会话分支功能,通过扫描活跃和归档会话来正确检测重复标题。 ([#10032](https://github.com/QwenLM/qwen-code/pull/10032)) by @harjothkhara
- 确保命名智能体团队(Agent Team)成员解析的模型提供商路由与同一智能体文件中定义的普通子智能体一致。 ([#10092](https://github.com/QwenLM/qwen-code/pull/10092)) by @yiliang114
- 将非发布的 Linux 发布流水线作业路由至 ECS 运行器池,同时保持发布作业在 ubuntu-latest 上运行。 ([#10036](https://github.com/QwenLM/qwen-code/pull/10036)) by @yiliang114
- fix(core): 在 team_delete 中传播文件系统清理失败 ([#10213](https://github.com/QwenLM/qwen-code/pull/10213)) by @yiliang114
- fix(test): 在守护进程启动时探测一次原生目录选择器 ([#10456](https://github.com/QwenLM/qwen-code/pull/10456)) by @yiliang114
- fix(serve): 在引导期间声明原生目录选择器 ([#10471](https://github.com/QwenLM/qwen-code/pull/10471)) by @wenshao
- 已取消的工作流现在立即终止,而不是等待时钟过期,且执行窗口大小根据可用 CPU 数量设定。 ([#10468](https://github.com/QwenLM/qwen-code/pull/10468)) by @qqqys
- 当 React 挂载前发生启动失败时,Web Shell 标签页现在显示可恢复的错误信息,而非空白白屏。 ([#10215](https://github.com/QwenLM/qwen-code/pull/10215)) by @harjothkhara
- 在作业突然终止后,通过修复权限或将文件隔离来恢复受保护的 .qwen 状态,以确保成功检出。 ([#10214](https://github.com/QwenLM/qwen-code/pull/10214)) by @yiliang114
- 确保如 MessageDisplay 和 SessionDelete 等“发后即忘”(fire-and-forget)钩子即使在 Qwen 进程退出后,也能在完全监控下完成执行。 ([#10288](https://github.com/QwenLM/qwen-code/pull/10288)) by @doudouOUC
- 保持固定会话在原始侧边栏分组中可见,同时保留其在专用“固定”(Pinned)部分中的显示。 ([#10416](https://github.com/QwenLM/qwen-code/pull/10416)) by @yiliang114
- 将 Python SDK 子进程流读取器限制增加至 4 MiB,以支持大型 stream-json 消息而不出错。 ([#9337](https://github.com/QwenLM/qwen-code/pull/9337)) by @lwind233
- 修复测试基础设施,使其在排队提交排空测试期间能正确渲染 AppContainer 并观察挂载后的状态更新。 ([#10436](https://github.com/QwenLM/qwen-code/pull/10436)) by @yiliang114
- 通过移除导入块中多余的空行,修复了 Python SDK 测试中的 Ruff 代码检查错误。 ([#10505](https://github.com/QwenLM/qwen-code/pull/10505)) by @qwen-code-dev-bot
- 将启动警告文件的作用域限制为独立的 npm start 会话,以防止并发开发环境之间的冲突。 ([#8456](https://github.com/QwenLM/qwen-code/pull/8456)) by @xianjianlf2
- 防止系统在控制组件处于非活动状态时,在 stream-json 直接模式下错误地声明问题主机。 ([#9414](https://github.com/QwenLM/qwen-code/pull/9414)) by @tonydzi
- 对守护进程会话初始化实施严格的超时限制,确保超时会话被正确取消和清理。 ([#10268](https://github.com/QwenLM/qwen-code/pull/10268)) by @doudouOUC
- 修复了并发成员启动失败时,导致持久化团队名单文件中残留幽灵成员的问题。 ([#10223](https://github.com/QwenLM/qwen-code/pull/10223)) by @yiliang114
- 当终端鼠标追踪功能激活时,使 @ 补全选择器中的分类标签可通过鼠标点击。 ([#8395](https://github.com/QwenLM/qwen-code/pull/8395)) by @destire-mio
- 将 VS Code 伴侣模型选择器下拉菜单锚定到输入框,防止其浮动覆盖在消息列表上。 ([#9702](https://github.com/QwenLM/qwen-code/pull/9702)) by @yiliang114
- 修复 Windows IME 输入法组合文本的可见性,通过将软件光标渲染为无固定背景的底线,防止拼音文本不可见。 ([#9803](https://github.com/QwenLM/qwen-code/pull/9803)) by @bluefateludi
- 为包括 readWorkspaceFile 和 glob 在内的六个工作区文件辅助函数启用相对守护进程基础 URL,修复 Web Shell 集成中的无效 URL 错误。 ([#9817](https://github.com/QwenLM/qwen-code/pull/9817)) by @shoemoney
- 通过清理 ShellExecutionService.execute() 抛出同步错误时的 shell 中止监听器,防止残留的中止处理程序和误导性日志。 ([#9849](https://github.com/QwenLM/qwen-code/pull/9849)) by @AaronZ345
- fix(cli): 推断无密钥的 Vertex AI 认证 ([#9045](https://github.com/QwenLM/qwen-code/pull/9045)) by @KXHXK
- 提供程序更新提示现在指导用户使用 /model 手动选择新模型,而非承诺自动切换。 ([#9023](https://github.com/QwenLM/qwen-code/pull/9023)) by @rbalachandar
- 从 CLI、VS Code 模式及文档中移除了无效的 general.dynamicCommandTranslation 设置,以防止用户困惑。 ([#8754](https://github.com/QwenLM/qwen-code/pull/8754)) by @destire-mio
- 从脚本中移除了不受支持的 npm --parallel 标志,以确保测试命令在 npm 12 及更高版本上成功运行。 ([#8725](https://github.com/QwenLM/qwen-code/pull/8725)) by @imrehg
- 通过将无法验证的文件 ID 归零,同时保持对工作区隔离的严格路径和设备检查,修复了 Windows 单元测试。 ([#10440](https://github.com/QwenLM/qwen-code/pull/10440)) by @yiliang114
- Serve 工作区检查现在正确允许以 .. 开头的子目录,同时仍拒绝实际的父目录遍历。 ([#9848](https://github.com/QwenLM/qwen-code/pull/9848)) by @AaronZ345
- fix(cli): 在 capture_screen_context 中拒绝 win32 上的符号链接截图路径 ([#9847](https://github.com/QwenLM/qwen-code/pull/9847)) by @zhou2024NAU
- 移除模式长度限制,以防止 LM Studio 语法解析错误并允许新对话成功启动。 ([#10275](https://github.com/QwenLM/qwen-code/pull/10275)) by @mredbishop
- 将会话令牌限制缓存限定在路由范围内,以防止在不同路由间切换模型时,过期计数触发限制。 ([#9862](https://github.com/QwenLM/qwen-code/pull/9862)) by @yiliang114
- 在守护进程通道会话恢复期间保留 sourceType 和 sourceId 元数据,以确保旧版会话归属的一致性。 ([#10257](https://github.com/QwenLM/qwen-code/pull/10257)) by @AaronZ345
- 停止强制 DeepSeek 模型的 temperature 为 0,允许其在未显式配置时使用默认采样行为。 ([#9879](https://github.com/QwenLM/qwen-code/pull/9879)) by @AaronZ345
- fix(core): 消除 send_message 目标歧义 ([#10083](https://github.com/QwenLM/qwen-code/pull/10083)) by @Sumire-no-kai
- 在工具轮次边界将队友消息传递给领导者,而非等待整个多轮任务完成。 ([#9638](https://github.com/QwenLM/qwen-code/pull/9638)) by @yiliang114
- 通过为无效解码添加负缓存并修正仅图像消息的高度分配,优化重复的内联图像渲染。 ([#8789](https://github.com/QwenLM/qwen-code/pull/8789)) by @zjunothing
- serve 命令现在优先选择有效的 TLS 颁发者而非具有相同主题但已过期的颁发者,以防止 CA 续期期间握手失败。 ([#10042](https://github.com/QwenLM/qwen-code/pull/10042)) by @qqqys
- 会话清理操作现在严格保留守护进程写入者租约所有权,以确保删除、归档和修复操作期间的数据完整性。 ([#10300](https://github.com/QwenLM/qwen-code/pull/10300)) by @doudouOUC
- serve 命令现在支持热重载模型提供程序并刷新会话注册表,且不会中断活跃轮次或切换当前模型。 ([#10269](https://github.com/QwenLM/qwen-code/pull/10269)) by @doudouOUC
- 通过容忍可选的 Streamable HTTP GET SSE 探测期间的 HTTP 404 响应并防止 body 读取挂起,修复了 MCP 连接稳定性。 ([#10091](https://github.com/QwenLM/qwen-code/pull/10091)) by @harjothkhara
- 通过从 data 字段中暴露具体的守护进程 JSON-RPC 错误详情来改进 TypeScript SDK 错误报告,而非显示通用的 Internal 错误消息。 ([#10571](https://github.com/QwenLM/qwen-code/pull/10571)) by @doudouOUC
- fix(serve): 在 turn_error 消息中暴露提供程序错误详情 ([#10569](https://github.com/QwenLM/qwen-code/pull/10569)) by @doudouOUC
- 将浏览器守护进程包预算增加至 216KB,以容纳最近的错误详情暴露更改并修复 CI 安装失败。 ([#10602](https://github.com/QwenLM/qwen-code/pull/10602)) by @chiga0
- 通过将 runner-environment 映射移至特定步骤来修复 Release 工作流,解决因无效作业级上下文使用导致的 GitHub 解析错误。 ([#10598](https://github.com/QwenLM/qwen-code/pull/10598)) by @yiliang114
- fix(ci): 在无容器沙箱的情况下运行 /resolve 并固定其 CLI 版本 ([#10428](https://github.com/QwenLM/qwen-code/pull/10428)) by @wenshao
- 使用读写锁协调共享 ECS 主机上的 Docker 沙箱工作负载,以允许并发测试分片而不降低并发度。 ([#10605](https://github.com/QwenLM/qwen-code/pull/10605)) by @yiliang114
- 将非 Linux 平台的 Vitest 单元测试套件调整为在 macOS 和 Windows 上将未处理错误视为非致命错误,确保一致的跨平台测试行为。 ([#10443](https://github.com/QwenLM/qwen-code/pull/10443)) by @qwen-code-dev-bot
- /resolve 工作流现在通过安全重放合并来恢复因移动 head、fork 推送、503 错误和草稿状态导致的丢失请求。 ([#10429](https://github.com/QwenLM/qwen-code/pull/10429)) by @wenshao
- fix(core): 在缺失 O_NOFOLLOW 时保持对无符号链接读取的保护 ([#10007](https://github.com/QwenLM/qwen-code/pull/10007)) by @yiliang114
- 守护进程浏览器包大小限制现已改为建议性限制,超过 216 KiB 时仅发出警告而不再导致构建失败。 ([#10630](https://github.com/QwenLM/qwen-code/pull/10630)) by @yiliang114
- 通过使用缩短的主机名以符合 Linux 64 字符限制(同时保留完整容器名称),修复了使用镜像 ID 时容器启动失败的问题。([#10624](https://github.com/QwenLM/qwen-code/pull/10624)) by @yiliang114
- 在自托管运行器的无凭据集成作业中添加了磁盘容量检查,以在检测到空间不足时阻止安装。([#10539](https://github.com/QwenLM/qwen-code/pull/10539)) by @yiliang114
- 确保在 npm install 失败期间捕获并保留磁盘压力样本,以改善对临时磁盘问题的调试。([#10517](https://github.com/QwenLM/qwen-code/pull/10517)) by @yiliang114
- 在 Windows 上重新安装失败时,采用备份与恢复策略替代删除后重命名,防止现有技能丢失。([#10189](https://github.com/QwenLM/qwen-code/pull/10189)) by @yiliang114
- 通过确保后台代理通知在最终输出前正确解析待处理的工具行,修复了 Web Shell 页脚渲染延迟的问题。([#10503](https://github.com/QwenLM/qwen-code/pull/10503)) by @dreamWB
- 恢复了 WebShell 编辑权限的原生 VS Code 差异审批流程,使接受/拒绝命令能够正确解析待处理工具。([#10534](https://github.com/QwenLM/qwen-code/pull/10534)) by @yiliang114
- 为基于轮询的 SSE 客户端添加了可选的宽限期,以便在提示词结算后重新连接,而不会触发事件流重新同步错误。([#10344](https://github.com/QwenLM/qwen-code/pull/10344)) by @chiga0
- fix(tools):将空白的 task_list 过滤器视为不存在 ([#10159](https://github.com/QwenLM/qwen-code/pull/10159)) by @yiliang114
- 关闭 MCP 插件面板后恢复了 web-shell 编辑器的输入功能,防止界面卡死。([#10232](https://github.com/QwenLM/qwen-code/pull/10232)) by @AaronZ345
- 改进了 /review 预提交检测,通过检查闭区间交集(而非仅检查结束行)来识别重叠的多行注释范围。([#9801](https://github.com/QwenLM/qwen-code/pull/9801)) by @bluefateludi
- 通过在所有 Web Shell 和核心测试的复制按钮卸载时清除待处理的复制反馈计时器,修复了内存泄漏。([#10655](https://github.com/QwenLM/qwen-code/pull/10655)) by @wenshao
- 当 PreToolUse 钩子返回询问决策时,编辑类工具现在会在审批提示中显示更改差异。([#9441](https://github.com/QwenLM/qwen-code/pull/9441)) by @yiliang114
- Java SDK 现在能够从嵌套的 response.subtype 字段正确读取控制响应状态,以正确检测和记录控制错误。([#9924](https://github.com/QwenLM/qwen-code/pull/9924)) by @AaronZ345
- 被 HTTP 413 拒绝的模型请求现在会自动触发一次性压缩并重试,如果压缩失败,则会显示明确错误以启动新会话。([#10408](https://github.com/QwenLM/qwen-code/pull/10408)) by @yiliang114
- fix(core):使 task_list 轮询的循环检测具备结果感知能力 ([#9492](https://github.com/QwenLM/qwen-code/pull/9492)) by @yiliang114
- 通道初始化超时现在返回带有 Retry-After 头的结构化 HTTP 504 响应,而非通用的 500 错误。([#10404](https://github.com/QwenLM/qwen-code/pull/10404)) by @chiga0
- 延迟审查的 Lint 披露信息现在会显示清晰、准确的中英双语消息,无卡顿或未翻译文本。([#10587](https://github.com/QwenLM/qwen-code/pull/10587)) by @wenshao
- HTTP 钩子现在严格禁用重定向,以防止受仓库控制的配置将会话数据暴露给任意内部或元数据地址。([#10427](https://github.com/QwenLM/qwen-code/pull/10427)) by @wenshao
- fix(core):保持图像视图在 sharp 0.34 以下版本中正常工作 ([#10633](https://github.com/QwenLM/qwen-code/pull/10633)) by @MingyaWang
- 启用钉钉状态卡片通过指数退避重试和定期心跳内容重新发布来从网络故障中恢复。([#10357](https://github.com/QwenLM/qwen-code/pull/10357)) by @qqqys
- 在恢复选择器和搜索中,将 Goal-only 会话的标签显示为 Goal 目标,而非显示空提示。([#10295](https://github.com/QwenLM/qwen-code/pull/10295)) by @qqqys
- fix(core):使失败派生的补偿写入门控具备提交感知能力 ([#10522](https://github.com/QwenLM/qwen-code/pull/10522)) by @yiliang114
- fix(cua):加固 Node REPL 和 Windows UIAccess ([#10666](https://github.com/QwenLM/qwen-code/pull/10666)) by @LaZzyMan
- fix(cua):发布未签名的 Windows UIAccess 工作进程 ([#10680](https://github.com/QwenLM/qwen-code/pull/10680)) by @LaZzyMan
- fix(ci):使共享 ECS Vitest 并发度可调 ([#10667](https://github.com/QwenLM/qwen-code/pull/10667)) by @yiliang114
- fix(web-shell):持久化模型推理偏好设置 ([#10489](https://github.com/QwenLM/qwen-code/pull/10489)) by @callmeYe
- fix(ci):在上传失败时保留 web-shell 视觉评论 ([#10253](https://github.com/QwenLM/qwen-code/pull/10253)) by @AaronZ345
- fix(permissions):绝不让 AUTO 模式分类器自动批准工作区外写入;始终回退至手动审批 ([#8744](https://github.com/QwenLM/qwen-code/pull/8744)) by @PratikWayase
- fix(review):将已决定的停止操作置于组合重规则裁决的门控之下 ([#10310](https://github.com/QwenLM/qwen-code/pull/10310)) by @wenshao
- fix(sdk):停止在 serve-mcp 二进制文件中输出重复的 hashbang ([#10485](https://github.com/QwenLM/qwen-code/pull/10485)) by @wenshao
- fix(cli):布局更改后保持硬件光标对齐 ([#10417](https://github.com/QwenLM/qwen-code/pull/10417)) by @liujiayi771
- fix(cli):推迟临时独立推理选项 ([#10706](https://github.com/QwenLM/qwen-code/pull/10706)) by @doudouOUC
- fix(cli):在卸载时中止子代理生成 ([#9937](https://github.com/QwenLM/qwen-code/pull/9937)) by @AaronZ345
- fix(web-shell): 移除 ChatEditor.test.tsx 中重复的语言声明 ([#10729](https://github.com/QwenLM/qwen-code/pull/10729)) by @yiliang114
- fix(autofix): 显式限制 gate 测试负载,而非通过 RUNNER_NAME ([#10671](https://github.com/QwenLM/qwen-code/pull/10671)) by @qqqys
- fix(java): 将 SDK 工作线程设为守护进程 ([#9925](https://github.com/QwenLM/qwen-code/pull/9925)) by @AaronZ345
- fix(core): 支持 Qwen3 的混合思维流 ([#9607](https://github.com/QwenLM/qwen-code/pull/9607)) by @yiliang114
- fix(web-shell): 跨客户端协调队列中的提示词 ([#10704](https://github.com/QwenLM/qwen-code/pull/10704)) by @ytahdn
- fix(ci): 对临时性 sandbox:none E2E 分片失败重试一次 (#10566) ([#10572](https://github.com/QwenLM/qwen-code/pull/10572)) by @qwen-code-dev-bot
- fix(web-shell): 在 vite 开发环境中代理 standalone/live 守护进程路由 ([#10748](https://github.com/QwenLM/qwen-code/pull/10748)) by @wenshao
- fix(core): 验证 git pull 选项组合及 detached HEAD 状态 ([#10752](https://github.com/QwenLM/qwen-code/pull/10752)) by @wenshao
- fix(channels): 将审批模式应用于独立会话 ([#10715](https://github.com/QwenLM/qwen-code/pull/10715)) by @qqqys
- fix(cli): 在 OpenTUI 注册表中路由 /output-style 对话框 ([#10763](https://github.com/QwenLM/qwen-code/pull/10763)) by @wenshao
- fix(serve): 防止提示词轮次失败日志降级为 [object Object] ([#10732](https://github.com/QwenLM/qwen-code/pull/10732)) by @yiliang114
- fix(acp-bridge): 对 ACP NDJSON 队列饱和进行反压处理,而非断开通道 ([#10731](https://github.com/QwenLM/qwen-code/pull/10731)) by @yiliang114
- fix(ci): 隔离并限制发布验证工作负载 ([#10765](https://github.com/QwenLM/qwen-code/pull/10765)) by @yiliang114
- fix(workflow): 收紧多工作区状态边界 ([#10772](https://github.com/QwenLM/qwen-code/pull/10772)) by @yiliang114
- fix(vscode): 解决 CI 资源争用下 webview bundle 测试超时问题 (#10665) ([#10672](https://github.com/QwenLM/qwen-code/pull/10672)) by @qwen-code-dev-bot
- fix(release): 将已准备包的尺寸预算提高至 112 MiB (#10774) ([#10781](https://github.com/QwenLM/qwen-code/pull/10781)) by @qwen-code-dev-bot
- fix(core): 在使用历史转录回放中跳过非普通文件 ([#10681](https://github.com/QwenLM/qwen-code/pull/10681)) by @qqqys
- fix(cli): 移除提示 ctrl+s 隐藏 shell-cap 行的广告 ([#10657](https://github.com/QwenLM/qwen-code/pull/10657)) by @yiliang114
- fix(web-shell): 使侧边栏“新建任务”保持在特定工作区 ([#10777](https://github.com/QwenLM/qwen-code/pull/10777)) by @wenshao
- fix(serve): 将 Conversations 运行时置于工作区注册限制之外 ([#10759](https://github.com/QwenLM/qwen-code/pull/10759)) by @wenshao
- fix(cua): 恢复对旧版 Windows 安装程序的兼容性 ([#10792](https://github.com/QwenLM/qwen-code/pull/10792)) by @LaZzyMan
- fix(triage): 使 Stage 1-pre 包含检查支持大文件 ([#10396](https://github.com/QwenLM/qwen-code/pull/10396)) by @yiliang114
- fix(web-shell): 为全新的独立会话加载模型 ([#10719](https://github.com/QwenLM/qwen-code/pull/10719)) by @doudouOUC
- fix(core): 通过降级媒体内容,从携带媒体的 OpenAI 请求的 gateway 400 错误中恢复 ([#10699](https://github.com/QwenLM/qwen-code/pull/10699)) by @yiliang114
- fix(ci): 在 ECS 资源争用下保持 worker 测试的响应能力 ([#10813](https://github.com/QwenLM/qwen-code/pull/10813)) by @yiliang114
- fix(ci): 基于可信基础 SHA 对 CI 配置文件进行分类 ([#10799](https://github.com/QwenLM/qwen-code/pull/10799)) by @yiliang114
- fix(cli): 统一 OpenTUI 输出样式行为 ([#10806](https://github.com/QwenLM/qwen-code/pull/10806)) by @qqqys
- fix(cli): 在会话启动时显示活动的计划任务 ([#10053](https://github.com/QwenLM/qwen-code/pull/10053)) by @yiliang114
- fix(ci): 防止稳定版发布禁用按工作区的测试重试机制 ([#10803](https://github.com/QwenLM/qwen-code/pull/10803)) by @yiliang114
- fix(release): 停止隐藏 sandbox 构建失败并提前检查已准备包 ([#10784](https://github.com/QwenLM/qwen-code/pull/10784)) by @yiliang114
- fix(core): 构建硬链接 tar 测试夹具而非打包 ([#10801](https://github.com/QwenLM/qwen-code/pull/10801)) by @yiliang114
- fix(release): 限制 quality_scripts 通道中的 Vitest worker 数量 (#10755) ([#10760](https://github.com/QwenLM/qwen-code/pull/10760)) by @qwen-code-dev-bot
- fix(web-shell): 使手动会话名称在 /clear 后保持不变 (#8977) ([#9260](https://github.com/QwenLM/qwen-code/pull/9260)) by @yiliang114
- fix(ci): 将 OpenTUI 交互式 e2e 测试从 CI 中移除 ([#10829](https://github.com/QwenLM/qwen-code/pull/10829)) by @chiga0
- fix(live-host-release): 修正 setup-node action 的 SHA ([#10827](https://github.com/QwenLM/qwen-code/pull/10827)) by @LaZzyMan
- fix(web-shell): 为重复的新任务重新加载模型 ([#10824](https://github.com/QwenLM/qwen-code/pull/10824)) by @doudouOUC
- fix(goal): 停止导出不可达的 propose_goal 拒绝消息 ([#10787](https://github.com/QwenLM/qwen-code/pull/10787)) by @qqqys
- fix(ci): 解决心跳 mint-skip 测试与循环启动的竞争问题 ([#10527](https://github.com/QwenLM/qwen-code/pull/10527)) by @qwen-code-dev-bot
- fix(dws): 隔离跨对话的直接消息摄入 ([#10691](https://github.com/QwenLM/qwen-code/pull/10691)) by @qqqys
- fix(web-shell): 保留斜杠命令附件 ([#10730](https://github.com/QwenLM/qwen-code/pull/10730)) by @ytahdn
- fix(channels): 在工作区移除时清理选择项 ([#10796](https://github.com/QwenLM/qwen-code/pull/10796)) by @qqqys
- fix(ci): 防止 sandbox 镜像准备等待其他运行的测试 ([#10843](https://github.com/QwenLM/qwen-code/pull/10843)) by @yiliang114
- fix(test): 为 serve routes 守护进程提供 CI 规模的 ACP 握手预算 ([#10846](https://github.com/QwenLM/qwen-code/pull/10846)) by @yiliang114
- fix(cli): 对中间监控通知轮次进行速率限制 (#10818) ([#10848](https://github.com/QwenLM/qwen-code/pull/10848)) by @yiliang114
- fix(channels): 按会话路由守护进程的权限投票 ([#10793](https://github.com/QwenLM/qwen-code/pull/10793)) by @qqqys
- fix(live-host-release): 在发布作业中先构建 sdk 再构建 qwen-live ([#10836](https://github.com/QwenLM/qwen-code/pull/10836)) by @LaZzyMan
- fix(ci): 逐 PR 读取 CI 巡逻的状态汇总 ([#10861](https://github.com/QwenLM/qwen-code/pull/10861)) by @yiliang114
- fix(cli): 修复 OpenTUI 提交路径的缺失,恢复其端到端(E2E)测试环节 ([#10831](https://github.com/QwenLM/qwen-code/pull/10831)) by @chiga0
- fix(release): 防止某个不稳定的测试导致稳定版本发布失败 ([#10842](https://github.com/QwenLM/qwen-code/pull/10842)) by @yiliang114
- fix(ci): 重试存在竞争条件的单元测试尝试,并限制挂起的尝试 ([#10868](https://github.com/QwenLM/qwen-code/pull/10868)) by @yiliang114
- fix(cli): 从会话工作区而非过期的 this.settings 缓存中解析 sessionCd 文件夹信任门控 ([#10470](https://github.com/QwenLM/qwen-code/pull/10470)) by @tomsen02
- fix(cli): 移除重复的文件夹信任模拟 ([#10874](https://github.com/QwenLM/qwen-code/pull/10874)) by @yiliang114
- fix(acp-bridge): 修复不稳定的全量 UTF-16 字节估算测试 (#10529) ([#10532](https://github.com/QwenLM/qwen-code/pull/10532)) by @qwen-code-dev-bot
- fix(workflow): 通过前导标记对关键反馈进行分类 ([#10361](https://github.com/QwenLM/qwen-code/pull/10361)) by @Sumire-no-kai
- fix(release): 报告工作区测试运行失败但实际无错误的情况 ([#10805](https://github.com/QwenLM/qwen-code/pull/10805)) by @yiliang114
- fix(cli): 使 OpenTUI 的轮次中提交和退出行为与 ink 保持一致 ([#10883](https://github.com/QwenLM/qwen-code/pull/10883)) by @chiga0
### 性能
- 在审查流水线中增加了预验证去重步骤,跳过与携带账本匹配候选项以节省验证资源。 ([#10121](https://github.com/QwenLM/qwen-code/pull/10121)) by @wenshao
- perf(ci): 对发布质量检查进行分片处理 ([#10619](https://github.com/QwenLM/qwen-code/pull/10619)) by @yiliang114
### 文档
- 新增设计文档,详细说明了将 TUI 从 ink 迁移至 OpenTUI 的架构、分批计划及验证策略。 ([#10343](https://github.com/QwenLM/qwen-code/pull/10343)) by @chiga0
- 修正 Java SDK 文档,将不存在的 SessionClosedException 替换为 SessionControlException,以处理会话关闭或不可用的错误。 ([#9859](https://github.com/QwenLM/qwen-code/pull/9859)) by @AaronZ345
- 在常用工作流文档中添加了基于证据的结论配方,并附带可复制粘贴的 QWEN.md 验证策略模板。 ([#8702](https://github.com/QwenLM/qwen-code/pull/8702)) by @Dmatut7
- 记录了如何为 systemd 或 launchd 管理的 qwen serve 守护进程配置可信工具 PATH,以确保用户安装的工具仍可解析。 ([#10576](https://github.com/QwenLM/qwen-code/pull/10576)) by @doudouOUC
- docs(design): 使 OpenTUI 迁移说明与已合并的分批内容保持一致 ([#10724](https://github.com/QwenLM/qwen-code/pull/10724)) by @chiga0
- docs(readme): 添加带版本号的 SWE-bench 分数 ([#10808](https://github.com/QwenLM/qwen-code/pull/10808)) by @DennisYu07
- docs(goals): 将目标文档与当前运行时同步 ([#10785](https://github.com/QwenLM/qwen-code/pull/10785)) by @qqqys
- docs(design): 定义宽松的独立守护进程所有权规则 ([#10828](https://github.com/QwenLM/qwen-code/pull/10828)) by @doudouOUC
### 内部变更
- 自动化 PR 凭证图片现在上传至阿里云 OSS,避免在 Git 仓库中堆积数千个资产分支。 ([#9985](https://github.com/QwenLM/qwen-code/pull/9985)) by @yiliang114
- 重构 SDK 认证以消除运行时模块循环,通过直接从所属模块导入 HTTP 错误实现。 ([#10039](https://github.com/QwenLM/qwen-code/pull/10039)) by @DragonnZhang
- 集中处理 JSON 标签字符转义,防止不受信任的内容破坏所有面向模型输出中的 HTML 或 XML 信封。 ([#9917](https://github.com/QwenLM/qwen-code/pull/9917)) by @AaronZ345
- 从 CLI 状态栏移除未使用的 MemoryUsageDisplay 组件,因其在代码库中已不再被引用。 ([#10238](https://github.com/QwenLM/qwen-code/pull/10238)) by @qqqys
- 目标消息现在通过应用 boundedTurns 限制来遵循调用方的递归预算,其他特定豁免项保持不变并更新了文档。 ([#10259](https://github.com/QwenLM/qwen-code/pull/10259)) by @qqqys
- Java SDK 测试夹具现在正确关闭无响应体连接的连接,以防止在会话销毁期间出现间歇性的 HTTP 头解析错误。 ([#10472](https://github.com/QwenLM/qwen-code/pull/10472)) by @wenshao
- 通过定位路由参数提取谓词,消除了 ACP 路由表与传输工具层之间的循环依赖。 ([#10040](https://github.com/QwenLM/qwen-code/pull/10040)) by @DragonnZhang
- 无面向用户的更改;本次发布将内部 MCP 服务器配置重构为独立模块,未改变功能。 ([#9496](https://github.com/QwenLM/qwen-code/pull/9496)) by @DragonnZhang
- 将 VS Code IDE Companion 聊天迁移至由工作区范围的 qwen serve 守护进程支持的 WebShell,将对话记录管理与 VS Code 特定的生命周期任务分离。 ([#9811](https://github.com/QwenLM/qwen-code/pull/9811)) by @yiliang114
- 集成测试现在使用基于条件的轮询替代固定的 1 秒休眠,以可靠地等待 ACP 命令更新通知。 ([#10516](https://github.com/QwenLM/qwen-code/pull/10516)) by @yiliang114
- 通过修正守护进程 React SDK 的 mock 路径以匹配当前模块结构,修复了 web-shell 启动测试。 ([#10526](https://github.com/QwenLM/qwen-code/pull/10526)) by @wenshao
- 更新 Web Shell 启动回归测试,使其从当前包入口点 mock 守护进程 SDK,解决因模块移动导致的 CI 失败。 ([#10545](https://github.com/QwenLM/qwen-code/pull/10545)) by @yiliang114
- 使用安全整数值替代,避免在 Node.js 定时器限制附近出现间歇性失败,从而稳定了会话截止边界测试。 ([#10556](https://github.com/QwenLM/qwen-code/pull/10556)) by @yiliang114
- ci: 稳定共享 ECS 主机竞争环境下的测试 ([#10552](https://github.com/QwenLM/qwen-code/pull/10552)) by @yiliang114
- 通过将 GitHub runner 环境传递给 Release 作业,应用共享 runner 集成限制,以在 ECS 主机上强制执行单 fork 限制。 ([#10592](https://github.com/QwenLM/qwen-code/pull/10592)) by @yiliang114
- 强化 Agent View 主管和 Web Shell 分页测试中对时间敏感等待的处理,以防止间歇性的夜间发布失败。 ([#10615](https://github.com/QwenLM/qwen-code/pull/10615)) by @yiliang114
- CI 测试现在测量 CPU 时间而非挂钟时间用于性能守卫,并等待第二个标记以验证 cron 交互式检查。 ([#10648](https://github.com/QwenLM/qwen-code/pull/10648)) by @yiliang114
- 添加回归测试以确保 tools.eager 配置能容忍 Object.prototype 键,避免在启动时导致 PermissionManager 崩溃。 ([#10479](https://github.com/QwenLM/qwen-code/pull/10479)) by @yiliang114
- 使用 vi.waitFor 轮询替代固定超时,可靠检测信号中断,从而稳定了选择器挂断中止测试。 ([#10664](https://github.com/QwenLM/qwen-code/pull/10664)) by @yiliang114
- test(core): 关闭 #9930 评审轮次中记录的延期测试缺口 ([#10465](https://github.com/QwenLM/qwen-code/pull/10465)) by @tomsen02
- test(integration): 移除不稳定的 ACP 召回时间检查 ([#10703](https://github.com/QwenLM/qwen-code/pull/10703)) by @yiliang114
- ci(ecs): 当 runner 集群更新失败时提交 issue ([#10445](https://github.com/QwenLM/qwen-code/pull/10445)) by @wenshao
- test(ci): 使 web-shell 视觉发布存根模块安全 (#10736) ([#10738](https://github.com/QwenLM/qwen-code/pull/10738)) by @qwen-code-dev-bot
- test(core): 将 shell-safety CPU 预算重新缩放至其测量的指标 ([#10735](https://github.com/QwenLM/qwen-code/pull/10735)) by @TianYuan1024
- chore(deps): 将 fast-uri 升级至 3.1.7 以清除高危审计拦截 ([#10862](https://github.com/QwenLM/qwen-code/pull/10862)) by @wenshao
- chore(vscode): 刷新 fast-uri 升级的 NOTICES 文件 ([#10863](https://github.com/QwenLM/qwen-code/pull/10863)) by @yiliang114
- ci: 将 lint 和静态检查从 Test 作业中分离 ([#10756](https://github.com/QwenLM/qwen-code/pull/10756)) by @wenshao
- test(review): 在测试运行时而非加载时标记账本条目 ([#10878](https://github.com/QwenLM/qwen-code/pull/10878)) by @yiliang114
- ci: 仅在合并后运行收集覆盖率,并在 node 环境下运行 cli 测试 ([#10890](https://github.com/QwenLM/qwen-code/pull/10890)) by @wenshao
- test(cli): 在测试运行时而非加载时标记 background-work 持续时间夹具 (#10881) ([#10889](https://github.com/QwenLM/qwen-code/pull/10889)) by @qwen-code-dev-bot
- test: 停止毫秒预算测量共享池 ([#10870](https://github.com/QwenLM/qwen-code/pull/10870)) by @yiliang114
## 新贡献者
- @lwind233 在 [#9337](https://github.com/QwenLM/qwen-code/pull/9337) 中首次贡献
- @tonydzi 在 [#9414](https://github.com/QwenLM/qwen-code/pull/9414) 中首次贡献
- @bluefateludi 在 [#9803](https://github.com/QwenLM/qwen-code/pull/9803) 中首次贡献
- @shoemoney 在 [#9817](https://github.com/QwenLM/qwen-code/pull/9817) 中首次贡献
- @KXHXK 在 [#9045](https://github.com/QwenLM/qwen-code/pull/9045) 中首次贡献
- @imrehg 在 [#8725](https://github.com/QwenLM/qwen-code/pull/8725) 中首次贡献
- @Dmatut7 在 [#8702](https://github.com/QwenLM/qwen-code/pull/8702) 中首次贡献
- @mredbishop 在 [#10275](https://github.com/QwenLM/qwen-code/pull/10275) 中首次贡献
- @Sumire-no-kai 在 [#10083](https://github.com/QwenLM/qwen-code/pull/10083) 中首次贡献
- @Wkewen 在 [#10001](https://github.com/QwenLM/qwen-code/pull/10001) 中首次贡献
- @MingyaWang 在 [#10633](https://github.com/QwenLM/qwen-code/pull/10633) 中首次贡献
- @liujiayi771 在 [#10417](https://github.com/QwenLM/qwen-code/pull/10417) 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.22.3...v0.23.0
<!-- qwen-release-notes:v1 -->
## Highlights
_See the complete change list below._
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- The branch picker now displays git state hints like '↓3 · origin/main' or 'Up to date' beside Update Project, Commit, and Push actions to help users judge status before clicking. ([#10397](https://github.com/QwenLM/qwen-code/pull/10397)) by @wenshao
- Adds the qwen review emit-workflow subcommand to generate a deterministic script that executes Review Step 3A's agent fan-out using parallel() instead of manual orchestration. ([#10119](https://github.com/QwenLM/qwen-code/pull/10119)) by @qqqys
- The Web Shell 'Add workspace' dialog now hides the Browse button on headless daemon hosts that lack native directory picker capabilities like zenity or osascript. ([#9406](https://github.com/QwenLM/qwen-code/pull/9406)) by @qqqys
- Adds support for scoped workspace memory tasks with project or user targets, enforcing strict filesystem permission boundaries between stores during remember and forget operations. ([#9895](https://github.com/QwenLM/qwen-code/pull/9895)) by @qqqys
- Added a QR code button to the Web Shell header for quick Local Control pairing, with direct navigation to Settings if the feature is disabled. ([#10432](https://github.com/QwenLM/qwen-code/pull/10432)) by @wenshao
- Enables the takeover loop to consume review convergence signals via a new ledger marker containing matched recommendation codes. ([#10122](https://github.com/QwenLM/qwen-code/pull/10122)) by @wenshao
- Optimizes the Session Overview table with responsive columns, sorting, filtering, and improved handling for session management actions. ([#10115](https://github.com/QwenLM/qwen-code/pull/10115)) by @ytahdn
- Adds per-run scheduled task sessions in Web Shell, creating fresh child conversations with unique timestamps for each execution. ([#10233](https://github.com/QwenLM/qwen-code/pull/10233)) by @qqqys
- Removes the public-only network policy restriction in qwen serve, allowing extension installs from enterprise-private Git hosts. ([#10156](https://github.com/QwenLM/qwen-code/pull/10156)) by @callmeYe
- feat(core): address other sessions by name from send_message and list_agents ([#10158](https://github.com/QwenLM/qwen-code/pull/10158)) by @qqqys
- Added explicit daemon session contexts for workspace, standalone, and Live conversations to improve routing and runtime resolution. ([#10418](https://github.com/QwenLM/qwen-code/pull/10418)) by @doudouOUC
- feat(core): report compression API failures distinctly ([#9119](https://github.com/QwenLM/qwen-code/pull/9119)) by @xianjianlf2
- Automatically assigns exactly one accountable maintainer to new PRs touching mapped areas and resolves a single owner when automated triage defers a PR. ([#9813](https://github.com/QwenLM/qwen-code/pull/9813)) by @yiliang114
- Forwards bounded MCP tool arguments and server annotations to the AUTO-mode classifier to improve decision accuracy beyond tool names alone. ([#10352](https://github.com/QwenLM/qwen-code/pull/10352)) by @qqqys
- Enabled full operator API access on trusted loopback interfaces for qwen serve when no bearer token is configured and authentication is not explicitly required. ([#10403](https://github.com/QwenLM/qwen-code/pull/10403)) by @doudouOUC
- Named Channel tasks now include source attribution labels like [task] or [sender · task] in their output for better delivery correlation. ([#10420](https://github.com/QwenLM/qwen-code/pull/10420)) by @doudouOUC
- Enhanced the Web Shell sidebar to display workspace session counts, full paths, and detailed chips for MCP servers, skills, extensions, and context files. ([#10407](https://github.com/QwenLM/qwen-code/pull/10407)) by @wenshao
- Exposed Workflow execution controls via the daemon, allowing clients to inspect, cancel, pause, resume, retry, and delete runs while preserving legacy task contracts. ([#10411](https://github.com/QwenLM/qwen-code/pull/10411)) by @qqqys
- Lays the foundation for OpenTUI migration by adding new renderer modules for themes, accessibility, clipboard, key mapping, and dialog scaffolding. ([#10146](https://github.com/QwenLM/qwen-code/pull/10146)) by @chiga0
- Enables concurrent named task control in Channels, allowing background tasks to run while users switch contexts, and adds /session cancel support. ([#10574](https://github.com/QwenLM/qwen-code/pull/10574)) by @doudouOUC
- Web Shell terminal error messages now include a Copy action that copies the exact rendered error text with a visual confirmation. ([#10001](https://github.com/QwenLM/qwen-code/pull/10001)) by @Wkewen
- Workspace runtime ownership is now established as the daemon lifecycle boundary, ensuring runtime activity persists through workspace removal and shutdown. ([#10593](https://github.com/QwenLM/qwen-code/pull/10593)) by @ytahdn
- Workspace-scoped Extension skill state can now be managed via a batch API, allowing independent overrides while keeping parent Extension settings authoritative. ([#10600](https://github.com/QwenLM/qwen-code/pull/10600)) by @callmeYe
- Operators can now configure or disable the Goal token budget using the model.goalTokenBudget setting, with support for values from 1 to 300,000,000 or -1 for unlimited. ([#10543](https://github.com/QwenLM/qwen-code/pull/10543)) by @qqqys
- The model now receives a per-turn reminder about the active output style to ensure concise responses when non-default styles are enabled. ([#10282](https://github.com/QwenLM/qwen-code/pull/10282)) by @qqqys
- Enables the external-context-mem0 Extension to load administrator-owned Mem0 dialects via absolute paths in InstanceConfigV2. ([#10634](https://github.com/QwenLM/qwen-code/pull/10634)) by @doudouOUC
- Added a sessionless POST /language route to synchronize user-level language preferences across all runtimes before any session exists. ([#10554](https://github.com/QwenLM/qwen-code/pull/10554)) by @doudouOUC
- Sessions bound to GitHub PRs now display linked issues closed by those PRs in the Web Shell tooltip and support searching sessions by issue number. ([#10425](https://github.com/QwenLM/qwen-code/pull/10425)) by @wenshao
- feat(serve): allow relocating session attachment storage via env var ([#10066](https://github.com/QwenLM/qwen-code/pull/10066)) by @ytahdn
- Adds the live-session stream, input layer, and composer to the OpenTUI migration, enabling streaming markdown, tool runs, and unified-diff rendering. ([#10368](https://github.com/QwenLM/qwen-code/pull/10368)) by @chiga0
- Improves channel fallback permission prompts with specific tool details and hides internal error data in DingTalk failure messages. ([#10614](https://github.com/QwenLM/qwen-code/pull/10614)) by @qqqys
- Allows the Web Shell Update Project action to proceed on dirty working trees by offering options to stash or discard local changes. ([#10390](https://github.com/QwenLM/qwen-code/pull/10390)) by @wenshao
- Lets DWS channels customize the start and end reaction emojis shown during task execution and completion states. ([#10610](https://github.com/QwenLM/qwen-code/pull/10610)) by @qqqys
- feat(cli): select an output style via general.outputStyle or --output-style ([#10283](https://github.com/QwenLM/qwen-code/pull/10283)) by @qqqys
- feat(qwen-live): standalone voice daemon package — M1 + M2 ([#10367](https://github.com/QwenLM/qwen-code/pull/10367)) by @LaZzyMan
- feat(cli): OpenTUI migration batch 4 — dialogs, commands, and session-rewind ([#10383](https://github.com/QwenLM/qwen-code/pull/10383)) by @chiga0
- feat(goal): let the model propose a Goal the user approves in a dialog ([#10171](https://github.com/QwenLM/qwen-code/pull/10171)) by @qqqys
- feat(web-shell): Add standalone chats ([#10514](https://github.com/QwenLM/qwen-code/pull/10514)) by @doudouOUC
- feat(cli): hot-reload modelProviders without session restart ([#10582](https://github.com/QwenLM/qwen-code/pull/10582)) by @yiliang114
- feat(web-shell): add an experimental session workflow cockpit ([#8583](https://github.com/QwenLM/qwen-code/pull/8583)) by @yiliang114
- feat(web-shell): search conversation content in the sidebar session search ([#10612](https://github.com/QwenLM/qwen-code/pull/10612)) by @wenshao
- feat(opentui): Add the backend composition root (Batch 5) ([#10696](https://github.com/QwenLM/qwen-code/pull/10696)) by @chiga0
- feat(web-shell): add a Workspaces overview panel ([#10589](https://github.com/QwenLM/qwen-code/pull/10589)) by @wenshao
- feat(review): prebuild the review worktree before any agent runs ([#10423](https://github.com/QwenLM/qwen-code/pull/10423)) by @wenshao
- feat(web-shell): declutter the workspace sidebar and add loopback open actions ([#10606](https://github.com/QwenLM/qwen-code/pull/10606)) by @wenshao
- feat(external-context): Publish the Mem0 Extension package ([#10653](https://github.com/QwenLM/qwen-code/pull/10653)) by @doudouOUC
- feat(core): bind PRs created via gh pr create in the session shell ([#9739](https://github.com/QwenLM/qwen-code/pull/9739)) by @wenshao
- feat(web-shell): group scheduled task run sessions ([#10611](https://github.com/QwenLM/qwen-code/pull/10611)) by @qqqys
- feat(cli): add /output-style command with picker and mid-session switching ([#10683](https://github.com/QwenLM/qwen-code/pull/10683)) by @qqqys
- feat(ipc): authenticate cross-session inbox connections with per-session tokens ([#10636](https://github.com/QwenLM/qwen-code/pull/10636)) by @qqqys
- feat(qwen-live): ACP backend adaptor and multi-backend routing — M4 ([#10617](https://github.com/QwenLM/qwen-code/pull/10617)) by @LaZzyMan
- feat(opentui): Activate the OpenTUI backend behind QWEN_TUI_RENDERER ([#10739](https://github.com/QwenLM/qwen-code/pull/10739)) by @chiga0
- feat(ipc): give the session's own processes a child token the inbound gate recognizes ([#10764](https://github.com/QwenLM/qwen-code/pull/10764)) by @qqqys
- feat(opentui): bundle assets, CI matrix and parity tooling (Batch 7) ([#10770](https://github.com/QwenLM/qwen-code/pull/10770)) by @chiga0
- feat(daemon): name the saturated NDJSON budget in channel-teardown diagnostics ([#10727](https://github.com/QwenLM/qwen-code/pull/10727)) by @yiliang114
- feat(qwen-live): protocol v7 playback receipts and interactive init — M5 ([#10769](https://github.com/QwenLM/qwen-code/pull/10769)) by @LaZzyMan
- feat(release): add gated bun/OpenTUI preview flavor to standalone releases ([#10814](https://github.com/QwenLM/qwen-code/pull/10814)) by @chiga0
- feat(channels): expose BTW through agent bridges ([#10712](https://github.com/QwenLM/qwen-code/pull/10712)) by @qqqys
- feat(serve): add workspace-scoped MCP management ([#10679](https://github.com/QwenLM/qwen-code/pull/10679)) by @ytahdn
- feat(channels): add BTW side questions to Channel conversations ([#10713](https://github.com/QwenLM/qwen-code/pull/10713)) by @qqqys
- feat(web-shell): expose session artifact snapshots ([#10747](https://github.com/QwenLM/qwen-code/pull/10747)) by @dreamWB
- feat(dingtalk): support outbound file delivery ([#10893](https://github.com/QwenLM/qwen-code/pull/10893)) by @qqqys
### Bug Fixes
- fix(core): keep the ask_user_question dialog behind allow rules and auto-approval ([#10160](https://github.com/QwenLM/qwen-code/pull/10160)) by @qqqys
- Updates qwen --help to derive output from shared option definitions, ensuring it accurately lists all accepted flags like --approval-mode and --auth-type instead of a stale subset. ([#8902](https://github.com/QwenLM/qwen-code/pull/8902)) by @yiliang114
- Applies idle and maximum-lifetime watchdogs to Anthropic streams to prevent indefinite hanging, ensuring they abort with ETIMEDOUT similar to OpenAI-compatible providers. ([#9945](https://github.com/QwenLM/qwen-code/pull/9945)) by @yiliang114
- Autofix now reports which guard refused thread resolution in round reports and waits for head propagation to prevent silent failures. ([#10117](https://github.com/QwenLM/qwen-code/pull/10117)) by @wenshao
- Agent tools now display the runtime-resolved execution mode to correctly distinguish foreground and background tasks regardless of model arguments. ([#9955](https://github.com/QwenLM/qwen-code/pull/9955)) by @DragonnZhang
- The older-Git archive fallback now accepts safe contained symlinks while continuing to reject absolute paths, drive letters, and escape attempts. ([#9969](https://github.com/QwenLM/qwen-code/pull/9969)) by @harjothkhara
- Fixed debug logging to prevent daemon Configs and background work from leaking session logs into unrelated debug files. ([#9930](https://github.com/QwenLM/qwen-code/pull/9930)) by @tomsen02
- Fixes session branching to correctly detect duplicate titles by scanning both active and archived sessions. ([#10032](https://github.com/QwenLM/qwen-code/pull/10032)) by @harjothkhara
- Ensures named Agent Team teammates resolve the same model provider route as ordinary subagents defined in the same agent file. ([#10092](https://github.com/QwenLM/qwen-code/pull/10092)) by @yiliang114
- Routes non-publishing Linux release pipeline jobs to the ECS runner pool while keeping publishing jobs on ubuntu-latest. ([#10036](https://github.com/QwenLM/qwen-code/pull/10036)) by @yiliang114
- fix(core): propagate filesystem cleanup failures in team_delete ([#10213](https://github.com/QwenLM/qwen-code/pull/10213)) by @yiliang114
- fix(test): probe the native directory picker once at daemon spawn time ([#10456](https://github.com/QwenLM/qwen-code/pull/10456)) by @yiliang114
- fix(serve): advertise the native directory picker during bootstrap ([#10471](https://github.com/QwenLM/qwen-code/pull/10471)) by @wenshao
- Cancelled workflows now terminate immediately instead of waiting for the clock to expire, and the execution window is sized by usable CPUs. ([#10468](https://github.com/QwenLM/qwen-code/pull/10468)) by @qqqys
- Web Shell tabs now display a recoverable error message instead of a blank white screen when boot failures occur before React mounts. ([#10215](https://github.com/QwenLM/qwen-code/pull/10215)) by @harjothkhara
- Recovers protected .qwen state after abrupt job termination by repairing permissions or quarantining files to ensure successful checkout. ([#10214](https://github.com/QwenLM/qwen-code/pull/10214)) by @yiliang114
- Ensures fire-and-forget hooks like MessageDisplay and SessionDelete complete execution with full supervision even after the Qwen process exits. ([#10288](https://github.com/QwenLM/qwen-code/pull/10288)) by @doudouOUC
- Keeps pinned sessions visible within their original sidebar group sections while maintaining their presence in the dedicated Pinned section. ([#10416](https://github.com/QwenLM/qwen-code/pull/10416)) by @yiliang114
- Increases the Python SDK subprocess stream reader limit to 4 MiB to support large stream-json messages without errors. ([#9337](https://github.com/QwenLM/qwen-code/pull/9337)) by @lwind233
- Fixes test infrastructure to correctly render AppContainer and observe post-mount state updates during queued-submission drain tests. ([#10436](https://github.com/QwenLM/qwen-code/pull/10436)) by @yiliang114
- Fixed a Ruff linting error in the Python SDK tests by removing a stray blank line in the import block. ([#10505](https://github.com/QwenLM/qwen-code/pull/10505)) by @qwen-code-dev-bot
- Scoped startup warning files to individual npm start sessions to prevent conflicts between concurrent development environments. ([#8456](https://github.com/QwenLM/qwen-code/pull/8456)) by @xianjianlf2
- Prevented the system from incorrectly claiming a question host in stream-json direct mode when the control system is inactive. ([#9414](https://github.com/QwenLM/qwen-code/pull/9414)) by @tonydzi
- Enforced strict timeout limits for daemon session initialization, ensuring timed-out sessions are cancelled and cleaned up properly. ([#10268](https://github.com/QwenLM/qwen-code/pull/10268)) by @doudouOUC
- Fixed an issue where failed concurrent teammate spawns left ghost members in the persisted team roster file. ([#10223](https://github.com/QwenLM/qwen-code/pull/10223)) by @yiliang114
- Made category tabs in the @ completion picker clickable via mouse when terminal mouse tracking is active. ([#8395](https://github.com/QwenLM/qwen-code/pull/8395)) by @destire-mio
- Anchored the VS Code companion model selector dropdown to the input form to prevent it from floating over the message list. ([#9702](https://github.com/QwenLM/qwen-code/pull/9702)) by @yiliang114
- Fixes Windows IME composition visibility by rendering the software cursor as an underline without a fixed background, preventing Pinyin text from becoming invisible. ([#9803](https://github.com/QwenLM/qwen-code/pull/9803)) by @bluefateludi
- Enables relative daemon base URLs for six workspace file helpers including readWorkspaceFile and glob, fixing Invalid URL errors in Web Shell integrations. ([#9817](https://github.com/QwenLM/qwen-code/pull/9817)) by @shoemoney
- Prevents stale abort handlers and misleading logs by cleaning up the shell abort listener when ShellExecutionService.execute() throws synchronous errors. ([#9849](https://github.com/QwenLM/qwen-code/pull/9849)) by @AaronZ345
- fix(cli): infer keyless Vertex AI auth ([#9045](https://github.com/QwenLM/qwen-code/pull/9045)) by @KXHXK
- Provider update prompts now instruct users to manually select a new model with /model instead of promising an automatic switch. ([#9023](https://github.com/QwenLM/qwen-code/pull/9023)) by @rbalachandar
- Removed the non-functional general.dynamicCommandTranslation setting from CLI, VS Code schemas, and documentation to prevent user confusion. ([#8754](https://github.com/QwenLM/qwen-code/pull/8754)) by @destire-mio
- Removed the unsupported npm --parallel flag from scripts to ensure test commands run successfully on npm version 12 and newer. ([#8725](https://github.com/QwenLM/qwen-code/pull/8725)) by @imrehg
- Fixed Windows unit tests by normalizing unverifiable file IDs to zero while maintaining strict path and device checks for workspace isolation. ([#10440](https://github.com/QwenLM/qwen-code/pull/10440)) by @yiliang114
- Serve workspace checks now correctly allow subdirectories starting with .. while still rejecting actual parent directory traversal. ([#9848](https://github.com/QwenLM/qwen-code/pull/9848)) by @AaronZ345
- fix(cli): reject symlinked screenshot paths on win32 in capture_screen_context ([#9847](https://github.com/QwenLM/qwen-code/pull/9847)) by @zhou2024NAU
- Removes a schema length constraint to prevent LM Studio grammar parsing errors and allow new conversations to start successfully. ([#10275](https://github.com/QwenLM/qwen-code/pull/10275)) by @mredbishop
- Route-scopes the session token-limit cache to prevent stale counts from triggering limits when switching models between different routes. ([#9862](https://github.com/QwenLM/qwen-code/pull/9862)) by @yiliang114
- Preserves sourceType and sourceId metadata during daemon channel session restores to ensure consistent attribution for legacy sessions. ([#10257](https://github.com/QwenLM/qwen-code/pull/10257)) by @AaronZ345
- Stops forcing temperature 0 for DeepSeek models, allowing them to use default sampling behavior unless explicitly configured by the user. ([#9879](https://github.com/QwenLM/qwen-code/pull/9879)) by @AaronZ345
- fix(core): disambiguate send_message destinations ([#10083](https://github.com/QwenLM/qwen-code/pull/10083)) by @Sumire-no-kai
- Delivers teammate messages to the leader at tool-round boundaries instead of waiting for the entire multi-round task to finish. ([#9638](https://github.com/QwenLM/qwen-code/pull/9638)) by @yiliang114
- Optimizes repeated inline image rendering by adding a negative cache for invalid decodes and correcting height allocation for image-only messages. ([#8789](https://github.com/QwenLM/qwen-code/pull/8789)) by @zjunothing
- The serve command now prefers a valid TLS issuer over an expired one with the same subject to prevent handshake failures during CA renewal. ([#10042](https://github.com/QwenLM/qwen-code/pull/10042)) by @qqqys
- Session cleanup operations now strictly preserve daemon writer-lease ownership to ensure data integrity during delete, archive, and repair actions. ([#10300](https://github.com/QwenLM/qwen-code/pull/10300)) by @doudouOUC
- The serve command now supports hot-reloading model providers and refreshing session registries without disrupting active turns or switching current models. ([#10269](https://github.com/QwenLM/qwen-code/pull/10269)) by @doudouOUC
- Fixed MCP connection stability by tolerating HTTP 404 responses during the optional Streamable HTTP GET SSE probe and preventing body-read hangs. ([#10091](https://github.com/QwenLM/qwen-code/pull/10091)) by @harjothkhara
- Improved TypeScript SDK error reporting by surfacing specific daemon JSON-RPC error details from data fields instead of showing generic Internal error messages. ([#10571](https://github.com/QwenLM/qwen-code/pull/10571)) by @doudouOUC
- fix(serve): surface provider error detail in turn_error messages ([#10569](https://github.com/QwenLM/qwen-code/pull/10569)) by @doudouOUC
- Increases the browser daemon bundle budget to 216KB to accommodate recent error-detail surfacing changes and fix CI install failures. ([#10602](https://github.com/QwenLM/qwen-code/pull/10602)) by @chiga0
- Fixes the Release workflow by moving runner-environment mapping to specific steps, resolving GitHub parsing errors caused by invalid job-level context usage. ([#10598](https://github.com/QwenLM/qwen-code/pull/10598)) by @yiliang114
- fix(ci): run /resolve without the container sandbox and pin its CLI version ([#10428](https://github.com/QwenLM/qwen-code/pull/10428)) by @wenshao
- Coordinates Docker sandbox workloads on shared ECS hosts using a reader/writer lock to allow concurrent test shards without reducing concurrency. ([#10605](https://github.com/QwenLM/qwen-code/pull/10605)) by @yiliang114
- Aligns non-Linux Vitest unit suites to treat unhandled errors as non-fatal on macOS and Windows, ensuring consistent cross-platform test behavior. ([#10443](https://github.com/QwenLM/qwen-code/pull/10443)) by @qwen-code-dev-bot
- The /resolve workflow now recovers lost requests caused by moved heads, fork pushes, 503 errors, and draft states by replaying merges safely. ([#10429](https://github.com/QwenLM/qwen-code/pull/10429)) by @wenshao
- fix(core): keep no-follow reads protected where O_NOFOLLOW is missing ([#10007](https://github.com/QwenLM/qwen-code/pull/10007)) by @yiliang114
- The daemon browser bundle size limit is now advisory, emitting a warning instead of failing the build when exceeding 216 KiB. ([#10630](https://github.com/QwenLM/qwen-code/pull/10630)) by @yiliang114
- Fixes container startup failures when using image IDs by shortening the hostname to comply with Linux 64-character limits while keeping full container names. ([#10624](https://github.com/QwenLM/qwen-code/pull/10624)) by @yiliang114
- Adds disk capacity checks to the no-credential integration job on self-hosted runners to prevent installations when insufficient space is detected. ([#10539](https://github.com/QwenLM/qwen-code/pull/10539)) by @yiliang114
- Ensures disk pressure samples are captured and retained during npm install failures to improve debugging of transient disk issues. ([#10517](https://github.com/QwenLM/qwen-code/pull/10517)) by @yiliang114
- Prevents loss of existing skills during reinstall failures on Windows by using a backup-and-restore strategy instead of delete-then-rename. ([#10189](https://github.com/QwenLM/qwen-code/pull/10189)) by @yiliang114
- Fixes Web Shell footer rendering delays by ensuring background agent notifications correctly resolve pending tool rows before final output. ([#10503](https://github.com/QwenLM/qwen-code/pull/10503)) by @dreamWB
- Restores native VS Code diff approval flows for WebShell edit permissions, allowing Accept/Reject commands to resolve pending tools correctly. ([#10534](https://github.com/QwenLM/qwen-code/pull/10534)) by @yiliang114
- Adds an opt-in grace period for poll-based SSE clients to reconnect after prompt settlement without triggering event stream resync errors. ([#10344](https://github.com/QwenLM/qwen-code/pull/10344)) by @chiga0
- fix(tools): treat blank task_list filters as absent ([#10159](https://github.com/QwenLM/qwen-code/pull/10159)) by @yiliang114
- Restores the web-shell composer input functionality after closing the MCP plugin panel to prevent the interface from becoming stuck. ([#10232](https://github.com/QwenLM/qwen-code/pull/10232)) by @AaronZ345
- Improved /review presubmit to detect overlapping multi-line comment ranges by checking closed-interval intersections instead of only end lines. ([#9801](https://github.com/QwenLM/qwen-code/pull/9801)) by @bluefateludi
- Fixed a memory leak by clearing pending copy-feedback timers on unmount for all copy buttons in the Web Shell and core tests. ([#10655](https://github.com/QwenLM/qwen-code/pull/10655)) by @wenshao
- Edit-class tools now display change diffs in the approval prompt when a PreToolUse hook returns an ask decision. ([#9441](https://github.com/QwenLM/qwen-code/pull/9441)) by @yiliang114
- The Java SDK now correctly reads control response status from the nested response.subtype field to properly detect and log control errors. ([#9924](https://github.com/QwenLM/qwen-code/pull/9924)) by @AaronZ345
- Model requests rejected with HTTP 413 now automatically trigger one-shot compaction and retry, or surface a clear error to start a new session if compression fails. ([#10408](https://github.com/QwenLM/qwen-code/pull/10408)) by @yiliang114
- fix(core): make loop detection result-aware for task_list polls ([#9492](https://github.com/QwenLM/qwen-code/pull/9492)) by @yiliang114
- Channel initialization timeouts now return a structured HTTP 504 response with Retry-After headers instead of a generic 500 error. ([#10404](https://github.com/QwenLM/qwen-code/pull/10404)) by @chiga0
- Review disclosures for lint deferrals now display clean, accurate bilingual messages in both English and Simplified Chinese without stuttering or untranslated text. ([#10587](https://github.com/QwenLM/qwen-code/pull/10587)) by @wenshao
- HTTP hooks now strictly disable redirects to prevent repository-controlled configurations from exposing session data to arbitrary internal or metadata addresses. ([#10427](https://github.com/QwenLM/qwen-code/pull/10427)) by @wenshao
- fix(core): keep image views working with sharp releases older than 0.34 ([#10633](https://github.com/QwenLM/qwen-code/pull/10633)) by @MingyaWang
- Enables DingTalk status cards to recover from network failures via exponential backoff retries and periodic heartbeat content republishing. ([#10357](https://github.com/QwenLM/qwen-code/pull/10357)) by @qqqys
- Displays the Goal objective as the label for Goal-only sessions in the resume picker and search instead of showing empty prompt. ([#10295](https://github.com/QwenLM/qwen-code/pull/10295)) by @qqqys
- fix(core): make the failed-spawn compensating-write gate commit-aware ([#10522](https://github.com/QwenLM/qwen-code/pull/10522)) by @yiliang114
- fix(cua): harden Node REPL and Windows UIAccess ([#10666](https://github.com/QwenLM/qwen-code/pull/10666)) by @LaZzyMan
- fix(cua): publish unsigned Windows UIAccess worker ([#10680](https://github.com/QwenLM/qwen-code/pull/10680)) by @LaZzyMan
- fix(ci): make shared ECS Vitest concurrency tunable ([#10667](https://github.com/QwenLM/qwen-code/pull/10667)) by @yiliang114
- fix(web-shell): persist model reasoning preferences ([#10489](https://github.com/QwenLM/qwen-code/pull/10489)) by @callmeYe
- fix(ci): keep web-shell visuals comment on upload failure ([#10253](https://github.com/QwenLM/qwen-code/pull/10253)) by @AaronZ345
- fix(permissions): never let the AUTO-mode classifier auto-approve out-of-workspace writes; always fall back to manual approval ([#8744](https://github.com/QwenLM/qwen-code/pull/8744)) by @PratikWayase
- fix(review): gate decided stops on a composed re-rule verdict ([#10310](https://github.com/QwenLM/qwen-code/pull/10310)) by @wenshao
- fix(sdk): stop emitting a duplicated hashbang in the serve-mcp bin ([#10485](https://github.com/QwenLM/qwen-code/pull/10485)) by @wenshao
- fix(cli): keep hardware cursor aligned after layout changes ([#10417](https://github.com/QwenLM/qwen-code/pull/10417)) by @liujiayi771
- fix(cli): Defer provisional standalone reasoning options ([#10706](https://github.com/QwenLM/qwen-code/pull/10706)) by @doudouOUC
- fix(cli): abort subagent generation on unmount ([#9937](https://github.com/QwenLM/qwen-code/pull/9937)) by @AaronZ345
- fix(web-shell): remove duplicate language declaration in ChatEditor.test.tsx ([#10729](https://github.com/QwenLM/qwen-code/pull/10729)) by @yiliang114
- fix(autofix): clamp gate test load explicitly instead of via RUNNER_NAME ([#10671](https://github.com/QwenLM/qwen-code/pull/10671)) by @qqqys
- fix(java): make SDK worker threads daemon ([#9925](https://github.com/QwenLM/qwen-code/pull/9925)) by @AaronZ345
- fix(core): support hybrid thinking streams for Qwen3 ([#9607](https://github.com/QwenLM/qwen-code/pull/9607)) by @yiliang114
- fix(web-shell): reconcile queued prompts across clients ([#10704](https://github.com/QwenLM/qwen-code/pull/10704)) by @ytahdn
- fix(ci): retry transient sandbox:none E2E shard failures once (#10566) ([#10572](https://github.com/QwenLM/qwen-code/pull/10572)) by @qwen-code-dev-bot
- fix(web-shell): proxy standalone/live daemon routes in vite dev ([#10748](https://github.com/QwenLM/qwen-code/pull/10748)) by @wenshao
- fix(core): validate git pull option combinations and detached HEAD ([#10752](https://github.com/QwenLM/qwen-code/pull/10752)) by @wenshao
- fix(channels): apply approval mode to standalone sessions ([#10715](https://github.com/QwenLM/qwen-code/pull/10715)) by @qqqys
- fix(cli): route the /output-style dialog in the OpenTUI registry ([#10763](https://github.com/QwenLM/qwen-code/pull/10763)) by @wenshao
- fix(serve): keep prompt-turn failure logs from degrading to [object Object] ([#10732](https://github.com/QwenLM/qwen-code/pull/10732)) by @yiliang114
- fix(acp-bridge): backpressure ACP NDJSON queue saturation instead of tearing down the channel ([#10731](https://github.com/QwenLM/qwen-code/pull/10731)) by @yiliang114
- fix(ci): isolate and bound release validation workloads ([#10765](https://github.com/QwenLM/qwen-code/pull/10765)) by @yiliang114
- fix(workflow): tighten multi-workspace state boundaries ([#10772](https://github.com/QwenLM/qwen-code/pull/10772)) by @yiliang114
- fix(vscode): stop webview bundle test timing out under CI contention (#10665) ([#10672](https://github.com/QwenLM/qwen-code/pull/10672)) by @qwen-code-dev-bot
- fix(release): raise prepared package size budget to 112 MiB (#10774) ([#10781](https://github.com/QwenLM/qwen-code/pull/10781)) by @qwen-code-dev-bot
- fix(core): skip non-regular files in usage history transcript replay ([#10681](https://github.com/QwenLM/qwen-code/pull/10681)) by @qqqys
- fix(cli): stop the ctrl+s hint advertising shell-cap hidden lines ([#10657](https://github.com/QwenLM/qwen-code/pull/10657)) by @yiliang114
- fix(web-shell): keep the sidebar New task on a workspace ([#10777](https://github.com/QwenLM/qwen-code/pull/10777)) by @wenshao
- fix(serve): keep the Conversations runtime outside the workspace registration limit ([#10759](https://github.com/QwenLM/qwen-code/pull/10759)) by @wenshao
- fix(cua): restore legacy Windows installer compatibility ([#10792](https://github.com/QwenLM/qwen-code/pull/10792)) by @LaZzyMan
- fix(triage): make Stage 1-pre subsumption check large-file safe ([#10396](https://github.com/QwenLM/qwen-code/pull/10396)) by @yiliang114
- fix(web-shell): Load models for fresh standalone sessions ([#10719](https://github.com/QwenLM/qwen-code/pull/10719)) by @doudouOUC
- fix(core): recover from gateway 400 on media-bearing OpenAI requests by degrading the media ([#10699](https://github.com/QwenLM/qwen-code/pull/10699)) by @yiliang114
- fix(ci): keep worker tests responsive under ECS contention ([#10813](https://github.com/QwenLM/qwen-code/pull/10813)) by @yiliang114
- fix(ci): classify the CI profile from the trusted base SHA ([#10799](https://github.com/QwenLM/qwen-code/pull/10799)) by @yiliang114
- fix(cli): align OpenTUI output-style behavior ([#10806](https://github.com/QwenLM/qwen-code/pull/10806)) by @qqqys
- fix(cli): show active scheduled tasks at session start ([#10053](https://github.com/QwenLM/qwen-code/pull/10053)) by @yiliang114
- fix(ci): stop stable releases from disabling per-workspace test retries ([#10803](https://github.com/QwenLM/qwen-code/pull/10803)) by @yiliang114
- fix(release): stop hiding sandbox build failures and check the prepared package early ([#10784](https://github.com/QwenLM/qwen-code/pull/10784)) by @yiliang114
- fix(core): craft the hard-link tar fixture instead of packing it ([#10801](https://github.com/QwenLM/qwen-code/pull/10801)) by @yiliang114
- fix(release): cap Vitest workers in the quality_scripts lane (#10755) ([#10760](https://github.com/QwenLM/qwen-code/pull/10760)) by @qwen-code-dev-bot
- fix(web-shell): keep a manual session name across /clear (#8977) ([#9260](https://github.com/QwenLM/qwen-code/pull/9260)) by @yiliang114
- fix(ci): Take the OpenTUI interactive e2e leg out of CI ([#10829](https://github.com/QwenLM/qwen-code/pull/10829)) by @chiga0
- fix(live-host-release): correct setup-node action SHA ([#10827](https://github.com/QwenLM/qwen-code/pull/10827)) by @LaZzyMan
- fix(web-shell): Reload models for repeated new tasks ([#10824](https://github.com/QwenLM/qwen-code/pull/10824)) by @doudouOUC
- fix(goal): stop exporting the unreachable propose_goal decline message ([#10787](https://github.com/QwenLM/qwen-code/pull/10787)) by @qqqys
- fix(ci): stop heartbeat mint-skip test racing loop startup ([#10527](https://github.com/QwenLM/qwen-code/pull/10527)) by @qwen-code-dev-bot
- fix(dws): isolate direct-message ingestion across conversations ([#10691](https://github.com/QwenLM/qwen-code/pull/10691)) by @qqqys
- fix(web-shell): preserve slash command attachments ([#10730](https://github.com/QwenLM/qwen-code/pull/10730)) by @ytahdn
- fix(channels): prune selections when workspaces are removed ([#10796](https://github.com/QwenLM/qwen-code/pull/10796)) by @qqqys
- fix(ci): stop sandbox image prep from waiting on another run's tests ([#10843](https://github.com/QwenLM/qwen-code/pull/10843)) by @yiliang114
- fix(test): give the serve routes daemon a CI-sized ACP handshake budget ([#10846](https://github.com/QwenLM/qwen-code/pull/10846)) by @yiliang114
- fix(cli): rate-limit interim monitor notification turns (#10818) ([#10848](https://github.com/QwenLM/qwen-code/pull/10848)) by @yiliang114
- fix(channels): route daemon permission votes by session ([#10793](https://github.com/QwenLM/qwen-code/pull/10793)) by @qqqys
- fix(live-host-release): build sdk before qwen-live in publish job ([#10836](https://github.com/QwenLM/qwen-code/pull/10836)) by @LaZzyMan
- fix(ci): read the CI patrol's status rollup one PR at a time ([#10861](https://github.com/QwenLM/qwen-code/pull/10861)) by @yiliang114
- fix(cli): close OpenTUI submit-path gaps, restore its E2E leg ([#10831](https://github.com/QwenLM/qwen-code/pull/10831)) by @chiga0
- fix(release): stop one flaky test from failing a stable release ([#10842](https://github.com/QwenLM/qwen-code/pull/10842)) by @yiliang114
- fix(ci): retry a contended unit attempt and bound a hung one ([#10868](https://github.com/QwenLM/qwen-code/pull/10868)) by @yiliang114
- fix(cli): resolve the sessionCd folder-trust gate from the session workspace, not the stale this.settings cache ([#10470](https://github.com/QwenLM/qwen-code/pull/10470)) by @tomsen02
- fix(cli): remove duplicate folder trust mock ([#10874](https://github.com/QwenLM/qwen-code/pull/10874)) by @yiliang114
- fix(acp-bridge): deflake the exhaustive UTF-16 byte-estimate test (#10529) ([#10532](https://github.com/QwenLM/qwen-code/pull/10532)) by @qwen-code-dev-bot
- fix(workflow): classify Critical feedback by leading marker ([#10361](https://github.com/QwenLM/qwen-code/pull/10361)) by @Sumire-no-kai
- fix(release): report a workspace test run that fails with nothing failing ([#10805](https://github.com/QwenLM/qwen-code/pull/10805)) by @yiliang114
- fix(cli): Align OpenTUI mid-turn submit and exit with ink ([#10883](https://github.com/QwenLM/qwen-code/pull/10883)) by @chiga0
### Performance
- Added a pre-verify dedup step to the review pipeline that skips candidates matching the carried ledger to save verification resources. ([#10121](https://github.com/QwenLM/qwen-code/pull/10121)) by @wenshao
- perf(ci): shard release quality checks ([#10619](https://github.com/QwenLM/qwen-code/pull/10619)) by @yiliang114
### Documentation
- Adds a design document detailing the architecture, batching plan, and verification strategy for migrating the TUI from ink to OpenTUI. ([#10343](https://github.com/QwenLM/qwen-code/pull/10343)) by @chiga0
- Corrects Java SDK documentation to replace the nonexistent SessionClosedException with SessionControlException for closed or unavailable session errors. ([#9859](https://github.com/QwenLM/qwen-code/pull/9859)) by @AaronZ345
- Added an evidence-based conclusions recipe to common workflows documentation with a copy-pasteable QWEN.md verification policy template. ([#8702](https://github.com/QwenLM/qwen-code/pull/8702)) by @Dmatut7
- Documented how to configure a trusted tool PATH for qwen serve daemons managed by systemd or launchd to ensure user-installed tools remain resolvable. ([#10576](https://github.com/QwenLM/qwen-code/pull/10576)) by @doudouOUC
- docs(design): Align OpenTUI migration notes with the landed batches ([#10724](https://github.com/QwenLM/qwen-code/pull/10724)) by @chiga0
- docs(readme): add versioned SWE-bench scores ([#10808](https://github.com/QwenLM/qwen-code/pull/10808)) by @DennisYu07
- docs(goals): sync the Goal docs with the current runtime ([#10785](https://github.com/QwenLM/qwen-code/pull/10785)) by @qqqys
- docs(design): Define relaxed standalone daemon ownership ([#10828](https://github.com/QwenLM/qwen-code/pull/10828)) by @doudouOUC
### Internal Changes
- Automated PR evidence images are now uploaded to Aliyun OSS instead of cluttering the Git repository with thousands of asset branches. ([#9985](https://github.com/QwenLM/qwen-code/pull/9985)) by @yiliang114
- Refactored SDK authentication to remove a runtime module cycle by importing HTTP errors directly from their owning module. ([#10039](https://github.com/QwenLM/qwen-code/pull/10039)) by @DragonnZhang
- Centralizes JSON tag-character escaping to prevent untrusted content from breaking HTML or XML envelopes across all model-facing outputs. ([#9917](https://github.com/QwenLM/qwen-code/pull/9917)) by @AaronZ345
- Removes the unused MemoryUsageDisplay component from the CLI status bar as it is no longer referenced in the codebase. ([#10238](https://github.com/QwenLM/qwen-code/pull/10238)) by @qqqys
- Goal messages now respect the caller's recursion budget by applying boundedTurns limits, while other specific carve-outs remain with updated documentation. ([#10259](https://github.com/QwenLM/qwen-code/pull/10259)) by @qqqys
- Java SDK test fixtures now properly close connections for body-less responses to prevent intermittent HTTP header parser errors during session teardown. ([#10472](https://github.com/QwenLM/qwen-code/pull/10472)) by @wenshao
- Removed a circular dependency between the ACP route table and transport utility layer by localizing the route parameter extraction predicate. ([#10040](https://github.com/QwenLM/qwen-code/pull/10040)) by @DragonnZhang
- No user-facing changes; this release refactors internal MCP server configuration into a dedicated module without altering functionality. ([#9496](https://github.com/QwenLM/qwen-code/pull/9496)) by @DragonnZhang
- Migrates VS Code IDE Companion chat to WebShell backed by a workspace-scoped qwen serve daemon, separating transcript management from VS Code-specific lifecycle tasks. ([#9811](https://github.com/QwenLM/qwen-code/pull/9811)) by @yiliang114
- Integration tests now use condition-based polling instead of a fixed one-second sleep to reliably wait for ACP command update notifications. ([#10516](https://github.com/QwenLM/qwen-code/pull/10516)) by @yiliang114
- Fixed the web-shell boot test by correcting the mock path for the daemon React SDK to match the current module structure. ([#10526](https://github.com/QwenLM/qwen-code/pull/10526)) by @wenshao
- Updated the Web Shell boot regression test to mock the daemon SDK from its current package entrypoint, resolving CI failures caused by moved modules. ([#10545](https://github.com/QwenLM/qwen-code/pull/10545)) by @yiliang114
- Stabilized the session deadline boundary test by using a safe integer value that avoids intermittent failures near Node.js timer limits. ([#10556](https://github.com/QwenLM/qwen-code/pull/10556)) by @yiliang114
- ci: stabilize tests under shared ECS host contention ([#10552](https://github.com/QwenLM/qwen-code/pull/10552)) by @yiliang114
- Applied shared-runner integration limits to Release jobs by passing the GitHub runner environment to enforce single-fork limits on ECS hosts. ([#10592](https://github.com/QwenLM/qwen-code/pull/10592)) by @yiliang114
- Hardens timing-sensitive waits in Agent View supervisor and Web Shell pagination tests to prevent intermittent nightly release failures. ([#10615](https://github.com/QwenLM/qwen-code/pull/10615)) by @yiliang114
- CI tests now measure CPU time instead of wall-clock time for performance guards and wait for a second marker to validate cron interactive checks. ([#10648](https://github.com/QwenLM/qwen-code/pull/10648)) by @yiliang114
- Added regression tests to ensure tools.eager configuration tolerates Object.prototype keys without crashing the PermissionManager at startup. ([#10479](https://github.com/QwenLM/qwen-code/pull/10479)) by @yiliang114
- Stabilizes the picker hang-up abort test by replacing fixed timeouts with vi.waitFor polling to reliably detect signal abortion. ([#10664](https://github.com/QwenLM/qwen-code/pull/10664)) by @yiliang114
- test(core): close the deferred test gaps recorded in #9930's review rounds ([#10465](https://github.com/QwenLM/qwen-code/pull/10465)) by @tomsen02
- test(integration): remove flaky ACP recall timing check ([#10703](https://github.com/QwenLM/qwen-code/pull/10703)) by @yiliang114
- ci(ecs): file an issue when the runner fleet update fails ([#10445](https://github.com/QwenLM/qwen-code/pull/10445)) by @wenshao
- test(ci): make web-shell visuals publish stub module-safe (#10736) ([#10738](https://github.com/QwenLM/qwen-code/pull/10738)) by @qwen-code-dev-bot
- test(core): rescale the shell-safety CPU budget to the metric it measures ([#10735](https://github.com/QwenLM/qwen-code/pull/10735)) by @TianYuan1024
- chore(deps): bump fast-uri to 3.1.7 to clear the high-severity audit gate ([#10862](https://github.com/QwenLM/qwen-code/pull/10862)) by @wenshao
- chore(vscode): refresh NOTICES for the fast-uri bump ([#10863](https://github.com/QwenLM/qwen-code/pull/10863)) by @yiliang114
- ci: split lint and static checks out of the Test job ([#10756](https://github.com/QwenLM/qwen-code/pull/10756)) by @wenshao
- test(review): stamp the ledger entries when the test runs, not when it loads ([#10878](https://github.com/QwenLM/qwen-code/pull/10878)) by @yiliang114
- ci: collect coverage only on the post-merge run and run cli tests under node ([#10890](https://github.com/QwenLM/qwen-code/pull/10890)) by @wenshao
- test(cli): stamp the background-work duration fixture when the test runs, not when it loads (#10881) ([#10889](https://github.com/QwenLM/qwen-code/pull/10889)) by @qwen-code-dev-bot
- test: stop millisecond budgets from measuring the shared pool ([#10870](https://github.com/QwenLM/qwen-code/pull/10870)) by @yiliang114
## New Contributors
- @lwind233 made their first contribution in [#9337](https://github.com/QwenLM/qwen-code/pull/9337)
- @tonydzi made their first contribution in [#9414](https://github.com/QwenLM/qwen-code/pull/9414)
- @bluefateludi made their first contribution in [#9803](https://github.com/QwenLM/qwen-code/pull/9803)
- @shoemoney made their first contribution in [#9817](https://github.com/QwenLM/qwen-code/pull/9817)
- @KXHXK made their first contribution in [#9045](https://github.com/QwenLM/qwen-code/pull/9045)
- @imrehg made their first contribution in [#8725](https://github.com/QwenLM/qwen-code/pull/8725)
- @Dmatut7 made their first contribution in [#8702](https://github.com/QwenLM/qwen-code/pull/8702)
- @mredbishop made their first contribution in [#10275](https://github.com/QwenLM/qwen-code/pull/10275)
- @Sumire-no-kai made their first contribution in [#10083](https://github.com/QwenLM/qwen-code/pull/10083)
- @Wkewen made their first contribution in [#10001](https://github.com/QwenLM/qwen-code/pull/10001)
- @MingyaWang made their first contribution in [#10633](https://github.com/QwenLM/qwen-code/pull/10633)
- @liujiayi771 made their first contribution in [#10417](https://github.com/QwenLM/qwen-code/pull/10417)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.22.3...v0.23.0