<!-- 使用 .github/release.yml 中的配置生成发布说明,提交哈希为 7b69293266441dc60846d6d8a50efa1b2cad1eb4 -->
## 更新内容
* fix(goal): 将三个连续提示词收敛至一个受保护的契约中 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9834
* feat(core): 模型启动工作流前需获得用户明确授权 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9806
* fix(review): 在覆盖率简报中禁止未执行的变更声明 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9923
* fix(ci): 将工作流大小增长限制(ratchet)范围限定于导致文件增大的 PR by @wenshao in https://github.com/QwenLM/qwen-code/pull/9931
* feat(review): 在容器内运行被审查仓库的自有命令 (#9556) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9723
* feat(core): 为每个项目添加外部仓库制品落地页 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9776
* fix(web-shell): 减少流式思考渲染的卡顿 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9914
* feat(review): 以类型化契约形式向客户端报告发现结果 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9794
* fix(ci): 在 autofix 标准输出回显中屏蔽旧的 ##[ 命令 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9871
* fix(core): 在脚本消耗任何资源前拒绝执行工作流脚本 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9873
* feat(review): 在持续收敛信号出现时提前触发严重性下限 (#9903) by @wenshao in https://github.com/QwenLM/qwen-code/pull/9938
* fix(serve): 修复持久化会话的生命周期 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9626
* fix(cli): 无法读取 messageRewrite.promptFile 时优雅降级 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9753
* fix(webui): 独立于会话元数据初始化 Goal by @ytahdn in https://github.com/QwenLM/qwen-code/pull/9977
* test(core): 固定传输重试诊断信息并更正重放安全注释 by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/8861
* refactor(core): 打破配置客户端运行时循环 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9959
* refactor(cli): 复用可信工作区运行时解析器 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9958
* feat(desktop): OpenWork 分叉后移除 Electron 包;保留 Tauri 升级桥接 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9085
* fix(goal): 从新窗口恢复证据受限的 Goal by @qqqys in https://github.com/QwenLM/qwen-code/pull/9840
* chore(github): 将 @qqqys 添加为核心包代码所有者 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9982
* feat(daemon): 添加 ACP 通道传输活性检测 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9976
* fix(core): 允许作用域化的 Git 凭据配置 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/9870
* feat(channels): 添加钉钉工作区通道 by @qqqys in https://github.com/QwenLM/qwen-code/pull/9394
* fix(session): 分支操作时保留源标题 by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/9764
* fix(telemetry): 会话切换失败时恢复使用量聚合 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9844
* fix(channels/qqbot): 将 cron textChunk 守卫的键基于活跃提示词而非 streamState by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9971
* fix(cli): 在横幅中标记预估压缩 token 数量 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9568
* fix(core): 当思考功能关闭时,输出 OpenRouter 的推理禁用指令 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9758
* fix(core): 针对实时提供程序验证技能命令以支持延迟附加 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9824
* fix(cli): 实时会话重放期间保持进行中的工具调用处于挂起状态 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9705
* test(cli): 使会话切换遥测模拟 /branch 标题前置条件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9998
* fix(core): 拒绝无法验证的已验证读取 inode by @AaronZ345 in https://github.com/QwenLM/qwen-code/pull/9857
* feat(review): 添加 --topology 最小单次遍历 A/B 测试分支 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9919
* feat(cli): 管理智能体视图会话生命周期 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/9986
* fix(review): 修复沙箱默认命名了不存在的镜像的问题 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9972
* fix(web-shell): 本地化视觉桥接通知 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10003
* fix(web-shell): 允许在会话创建前选择推理模式 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/10008
* refactor(acp-bridge): 缩小工作区事件能力范围 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9957
* refactor(web-shell): 提取共享上下文 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/9954
* fix(core): 将协同技能的小组成员数量限制在配置上限内 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9403
* fix: 修复 Windows 和 macOS 测试通道失败问题 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9728
* fix(ci): 重新启用 macOS 和 Windows 通道的触发器 by @wenshao in https://github.com/QwenLM/qwen-code/pull/9370
* fix(core): 使 permissions.allow 限制发送给模型的工具模式 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9829
* fix(webui): 事件启动期间保留已初始化的 Goal 状态 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10012
* refactor(web-shell): 复用标准待办事项解析器 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): 使通道工作进程能够连接启用 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
* refactor(core): 移除未使用的 LruCache 工具 by @AaronZ345 在 https://github.com/QwenLM/qwen-code/pull/9926
* fix(core): 为多模态 DeepSeek 保留图片 by @shenyankm 在 https://github.com/QwenLM/qwen-code/pull/9854
* fix(ci): 在脚本测试之间让出事件循环,以避免 vitest RPC 超时 (#10037) by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/10050
* fix(vscode): 同步 Companion 令牌限制 by @AaronZ345 在 https://github.com/QwenLM/qwen-code/pull/9850
* fix(ui): 抑制单轮内重复且相同的 TodoList 面板 by @PratikWayase 在 https://github.com/QwenLM/qwen-code/pull/9692
* refactor(cli): 移除未使用的 useInputHistoryStore 钩子 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/10041
* feat(daemon): 支持当前会话的定时任务 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/9838
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/pr-9806-verification-assets...desktop-v0.2.2
<!-- Release notes generated using configuration in .github/release.yml at 7b69293266441dc60846d6d8a50efa1b2cad1eb4 -->
## 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
* refactor(core): remove unused LruCache utility by @AaronZ345 in https://github.com/QwenLM/qwen-code/pull/9926
* fix(core): preserve images for multimodal DeepSeek by @shenyankm in https://github.com/QwenLM/qwen-code/pull/9854
* fix(ci): yield the event loop between script tests to avoid vitest RPC timeouts (#10037) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10050
* fix(vscode): sync companion token limits by @AaronZ345 in https://github.com/QwenLM/qwen-code/pull/9850
* fix(ui): suppress duplicate identical TodoList panels in a single turn by @PratikWayase in https://github.com/QwenLM/qwen-code/pull/9692
* refactor(cli): remove unused useInputHistoryStore hook by @qqqys in https://github.com/QwenLM/qwen-code/pull/10041
* feat(daemon): Support current-session scheduled tasks by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/9838
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/pr-9806-verification-assets...desktop-v0.2.2