<!-- 使用 release/v0.22.2-preview.1 分支中 .github/release.yml 的配置生成更新日志 -->
## 更新内容
* 修复(goal):在单一受保护合约上收敛三个继续提示 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9834
* 功能(core):在模型启动工作流前要求用户明确同意 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9806
* 修复(review):在覆盖范围简报中禁止未执行的变更声明 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9923
* 修复(ci):将工作流尺寸限制范围缩小至导致文件增长的 PR by @wenshao in https://github.com/QwenLM/qwen-code/pull/9931
* 功能(review):在容器内运行被审查仓库的自有命令 (#9556) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9723
* 功能(core):添加每个项目的外部仓库制品落地页 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9776
* 修复(web-shell):减少流式思维渲染的卡顿 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9914
* 功能(review):以类型化合约形式向客户端报告发现结果 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9794
* 修复(ci):在自动修复标准输出回显中消除旧的 ##[ 命令 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9871
* 修复(core):在脚本消耗任何资源前拒绝工作流脚本 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9873
* 功能(review):在持续收敛信号出现时提前启用严重性下限 (#9903) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9938
* 修复(serve):修复持久化会话的生命周期 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9626
* 修复(cli):当无法读取 messageRewrite.promptFile 时优雅降级 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9753
* 修复(webui):独立于会话元数据对 Goal 进行水合(初始化) by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9977
* 测试(core):固定传输重试诊断并更正重放安全注释 by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/8861
* 重构(core):打破配置客户端运行时循环 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9959
* 重构(cli):复用可信工作区运行时解析器 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9958
* 功能(desktop):在 OpenWork fork 后移除 Electron 包;保留 Tauri 升级桥接 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9085
* 修复(goal):从新窗口恢复证据受限的 Goal by @qqqys in https://github.com/QwenLM/qwen-code/pull/9840
* 杂项(github):将 @qqqys 添加为 core 包代码所有者 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9982
* 功能(daemon):添加 ACP 通道传输存活检查 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9976
* 修复(core):允许作用域化的 Git 凭据配置 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/9870
* 功能(channels):添加钉钉工作区通道 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9394
* 修复(session):在分支时保留源标题 by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/9764
* 修复(telemetry):当会话切换失败时恢复使用量聚合 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9844
* 修复(channels/qqbot):将 cron 文本块守卫的触发条件基于活跃提示而非 streamState by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9971
* 修复(cli):在横幅中标记预估压缩 token 数量 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9568
* 修复(core):当思考关闭时输出 OpenRouter 的推理禁用指令 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9758
* 修复(core):针对实时提供程序验证技能命令以支持延迟附加 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9824
* 修复(cli):在实时会话重放期间保持进行中的工具调用处于挂起状态 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9705
* 测试(cli):使会话切换遥测模拟 /branch 标题的先决条件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9998
* 修复(core):拒绝无法验证的已验证读取 inode by @AaronZ345 in https://github.com/QwenLM/qwen-code/pull/9857
* 功能(review):添加 --topology 最小单次遍历 A/B 测试组 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9919
* 功能(cli):管理代理视图会话生命周期 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/9986
* 修复(review):修复沙箱默认命名了不存在镜像的问题 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9972
* 修复(web-shell):本地化视觉桥接通知 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10003
* 修复(web-shell):允许在会话创建前进行推理选择 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/10008
* 重构(acp-bridge):收窄工作区事件能力 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9957
* 重构(web-shell):提取共享上下文 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9954
* 修复(core):将协调技能的队友数量限制在配置的上限内 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9403
* 修复:修复 Windows 和 macOS 测试通道失败问题 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9728
* 修复(ci):重新为 macOS 和 Windows 通道添加触发器 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9370
* 修复(core):使 permissions.allow 限制发送给模型的工具模式 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9829
* 修复(webui):在事件启动期间保持已水合的 Goal 状态 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10012
* 重构(web-shell):复用标准 todo 解析器 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9956
* fix(cli): 在 fail-closed 轮次中向前移植审查锚点 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/9932
* feat(goal): 将 get_goal 的默认视图从完整目录更改为摘要 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/9973
* refactor(cli): 移除未使用的 EnumSelector 组件 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/9997
* fix(live): 移除桌面端后恢复 Live Host by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/9994
* fix(goal): 引用本轮交付的输出,而非拒绝处理 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/9880
* fix(serve): 使 channel workers 能够连接启用 TLS 的守护进程 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/9392
* feat(goal): 停止连续三次检查点停滞的 Goal by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/9975
* fix(cli): 移除破坏主构建的重复虚假属性 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/10022
* fix(core): 在权限别名表中注册 report_findings by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/10033
* feat(web-shell): 将紧凑视图设为唯一模式 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/9993
* fix(cli): 保留中间轮次媒体文件的桥接超时设置 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/9995
* ci: 从拉取请求中移除 macOS 和 Windows 构建通道 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/10059
* fix(mcp): 在会话内和 CLI 中恢复重启的 HTTP MCP 服务器 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/9962
* fix(core): 将已加载技能状态与历史驱逐同步 by @ZijianZhang989 在 https://github.com/QwenLM/qwen-code/pull/9500
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/pr-9806-verification-assets...v0.22.2-preview.1
<!-- Release notes generated using configuration in .github/release.yml at release/v0.22.2-preview.1 -->
## What's Changed
* fix(goal): converge the three continuation prompts on one guarded contract by @qqqys in https://github.com/QwenLM/qwen-code/pull/9834
* feat(core): require an explicit user opt-in before the model launches a workflow by @qqqys in https://github.com/QwenLM/qwen-code/pull/9806
* fix(review): ban unexecuted mutation claims in coverage briefs by @wenshao in https://github.com/QwenLM/qwen-code/pull/9923
* fix(ci): scope workflow-size ratchet to the PR that grew the file by @wenshao in https://github.com/QwenLM/qwen-code/pull/9931
* feat(review): run the reviewed repository's own commands behind a container (#9556) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9723
* feat(core): add a per-project outside-repo artifact landing by @wenshao in https://github.com/QwenLM/qwen-code/pull/9776
* fix(web-shell): reduce streaming thought render jank by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9914
* feat(review): report findings to clients as a typed contract by @wenshao in https://github.com/QwenLM/qwen-code/pull/9794
* fix(ci): neutralize legacy ##[ commands in autofix stdout echoes by @wenshao in https://github.com/QwenLM/qwen-code/pull/9871
* fix(core): refuse a workflow script before it can spend anything by @qqqys in https://github.com/QwenLM/qwen-code/pull/9873
* feat(review): engage the severity floor early on a sustained convergence signal (#9903) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9938
* fix(serve): Repair persisted session lifecycle by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9626
* fix(cli): degrade gracefully when messageRewrite.promptFile cannot be read by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9753
* fix(webui): hydrate Goal independently of session metadata by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9977
* test(core): pin transport retry diagnostics and correct the replay-safety comment by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/8861
* refactor(core): break config client runtime cycle by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9959
* refactor(cli): reuse trusted workspace runtime resolver by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9958
* feat(desktop): remove the Electron package after OpenWork fork; keep the Tauri upgrade bridge by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9085
* fix(goal): resume an evidence-limited Goal from a fresh window by @qqqys in https://github.com/QwenLM/qwen-code/pull/9840
* chore(github): add @qqqys as core package codeowner by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9982
* feat(daemon): Add ACP channel transport liveness by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9976
* fix(core): allow scoped Git credential config by @callmeYe in https://github.com/QwenLM/qwen-code/pull/9870
* feat(channels): add DingTalk Workspace channel by @qqqys in https://github.com/QwenLM/qwen-code/pull/9394
* fix(session): preserve source titles when branching by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/9764
* fix(telemetry): restore usage aggregate when a session swap fails by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9844
* fix(channels/qqbot): key the cron textChunk guard on active prompts, not streamState by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9971
* fix(cli): mark estimated compression token counts in banners by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9568
* fix(core): emit OpenRouter's reasoning disable when thinking is off by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9758
* fix(core): validate skill commands against the live provider to survive late attach by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9824
* fix(cli): keep in-flight tool calls pending during live session replay by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9705
* test(cli): teach session-swap telemetry fakes the /branch title prerequisites by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9998
* fix(core): reject unverifiable validated read inodes by @AaronZ345 in https://github.com/QwenLM/qwen-code/pull/9857
* feat(review): add a --topology minimal single-pass A/B arm by @wenshao in https://github.com/QwenLM/qwen-code/pull/9919
* feat(cli): Manage agent view session lifecycle by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/9986
* fix(review): the sandbox default named an image that does not exist by @wenshao in https://github.com/QwenLM/qwen-code/pull/9972
* fix(web-shell): localize vision bridge notices by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10003
* fix(web-shell): allow reasoning selection before session creation by @callmeYe in https://github.com/QwenLM/qwen-code/pull/10008
* refactor(acp-bridge): narrow workspace event capabilities by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9957
* refactor(web-shell): extract shared contexts by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9954
* fix(core): subordinate the coordinate skill's teammate count to the configured cap by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9403
* fix: repair the Windows and macOS test lane failures by @wenshao in https://github.com/QwenLM/qwen-code/pull/9728
* fix(ci): give the macOS and Windows lanes a trigger again by @wenshao in https://github.com/QwenLM/qwen-code/pull/9370
* fix(core): make permissions.allow restrict the tool schemas sent to the model by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9829
* fix(webui): preserve hydrated Goal state during event startup by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10012
* refactor(web-shell): reuse canonical todo parser by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9956
* fix(cli): graft the review anchor forward across fail-closed rounds by @wenshao in https://github.com/QwenLM/qwen-code/pull/9932
* feat(goal): make get_goal's default view a summary instead of the whole catalog by @qqqys in https://github.com/QwenLM/qwen-code/pull/9973
* refactor(cli): remove unused EnumSelector component by @qqqys in https://github.com/QwenLM/qwen-code/pull/9997
* fix(live): restore Live Host after desktop removal by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9994
* fix(goal): cite this turn's delivered output instead of refusing over it by @qqqys in https://github.com/QwenLM/qwen-code/pull/9880
* fix(serve): let channel workers reach TLS-enabled daemons by @qqqys in https://github.com/QwenLM/qwen-code/pull/9392
* feat(goal): stop a Goal whose checkpoints stall three times in a row by @qqqys in https://github.com/QwenLM/qwen-code/pull/9975
* fix(cli): drop duplicate fake properties breaking the main build by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10022
* fix(core): register report_findings in the permission alias table by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10033
* feat(web-shell): make compact view the only mode by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9993
* fix(cli): preserve bridge timeouts for mid-turn media by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9995
* ci: take the macOS and Windows lanes off pull requests by @wenshao in https://github.com/QwenLM/qwen-code/pull/10059
* fix(mcp): recover restarted HTTP MCP servers in-session and in CLI by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9962
* fix(core): sync loaded-skill state with history eviction by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/9500
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/pr-9806-verification-assets...v0.22.2-preview.1