<!-- 使用 .github/release.yml 中的配置生成的发布说明,提交哈希为 56b003be0785412ed06673948f781dc70a686b5a -->
## 更新内容
* fix(cli): 将 ACP 权限队列的作用域限制在会话内 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11802
* feat(channels): 添加支持钉钉的共享输出模式 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11822
* feat(web-shell): 在标签页之间滑动显示当前激活的指示器(pill) by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11844
* refactor(goal): 删除第一代 Stop-hook Goal 实现 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11900
* fix(ci): 将 autofix 运行器标签与排队中的代码审查分离 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11912
* feat(daemon): 在本地枚举已安装的扩展技能 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11281
* feat(web-shell): 在全局轮次导航中跟随阅读位置 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11801
* feat(workflows): 通过 +Nk 指令共享每轮次 token 预算 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11917
* feat(serve): 添加基于预算的 ACP 子进程准入机制 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11911
* feat(cli): 为 Linux 添加 bwrap 内核沙箱后端 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11614
* fix(cli): 恢复共享 Skill 状态及运行器 CI 检查 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11933
* fix(vscode): 弃用旧版 ACP 输入桥接 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11928
* feat(core): 支持外部推理配置文件及默认值 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11856
* feat(settings): 默认开启跨会话消息传递 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11840
* fix(web-shell): 在会话侧边栏中显示 Qwen Live 任务 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11830
* fix(ci): 隔离运行器计划测试夹具(fixture)的模块作用域 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11938
* feat(core): 按名称运行已保存的工作流,并将工作流权限绑定到脚本内容 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11943
* feat(workflow): 在运行和恢复期间保留源引用 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11931
* refactor(vscode): 移除未使用的 token 限制镜像 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11946
* fix(core): 在调用时传递 PTY 加载原因,而非存储在模块状态中 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11923
* feat(workflow): 关联智能体调度与嵌套工作流调用 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11932
* docs(goal): 在实现被移除后,废弃 Stop-hook 时代的文档说明 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11922
* fix(core): 在修剪 hook 匹配器时保留转义的后导空白 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11871
* feat(workflows): 添加尺寸指南、结构预览及大规模运行警告 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11939
* fix(core): 展开 ${session_id} 并在 Responses 协议线上添加 User-Agent by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11947
* feat(workflows): 允许模型调用声明了 whenToUse 的扩展工作流 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11957
* feat(daemon): 为 prompt 和 replay API 支持摘要投影 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11920
* ci(desktop): 在 CLI 发布时同步发布桌面应用 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11575
* test(cli): 修复 Windows 环境下的 bwrap 沙箱测试套件 (#11968) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11970
* fix(core): 在 MiniMax chat-completions 协议线上保留工具参数 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11842
* fix(web-shell): 修复阅读时审批面板持续调整大小的问题 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11930
* fix(release): 基于磁盘最低阈值限制池路由验证任务的运行 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11972
* feat(web-shell): 添加脚注预览及每轮次来源 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11480
* fix(web-shell): 保留工具描述路径中的分隔符 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11977
* feat(telemetry): 生成 Goal 生命周期事件及指标 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11927
* feat(cli): 当 /hooks 打开时重新加载 hook 注册表 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11904
* fix(core): 将 Goal 轮次结束状态持久化至模型历史记录之外 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11924
* feat(serve): 当准入满载时回收空闲的 ACP 子进程 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11940
* feat(web-shell): 连接至选定的远程守护进程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11548
* fix(web-shell): 将摘要保持在轮次输出下方并进行去重 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11986
* feat(web-shell): 从展开的工具详情中预览文件 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11982
* fix(ci): 修复 e2e-test-linux 中的 docker 锁缓存所有权问题 (#11990) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11992
* feat(serve): 使用参数、sourceRef 及调用方提供的脚本启动工作流运行 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11979
* refactor(serve): 分离 ACP 控制平面与通道组件 by @wenshao in https://github.com/QwenLM/qwen-code/pull/11916
* fix(cli): 在无头轮次运行前注册可由模型调用的命令 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11994
* fix(vscode): 允许从远程窗口的 webview 访问工作区守护进程 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11983
* feat(web-shell): 自定义上下文详情并折叠快照 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11996
* docs(serve): 明确守护进程事件恢复契约 by @wenshao in https://github.com/QwenLM/qwen-code/pull/12015
* test(serve): 强化 REST 文档契约检查 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12009
* feat(goal): 对前台子代理和验证器的 token 使用进行计费 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11998
* docs(users): 将新用户引导指向 Token Plan 而非 Coding Plan by @wenshao in https://github.com/QwenLM/qwen-code/pull/11980
* feat(dingtalk): 在私信中携带发送者身份 by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/12017
* feat(goal): 显示对话轮次与活跃时长预算 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11999
* fix(cli): 使 ink useBoxMetrics 循环守卫与机器速度解耦 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11835
* fix(ci): 跳过已完成的桌面版发布 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12013
* fix(web-shell): 在独立 Web Shell 中遵循 ui.theme 和 general.language 配置 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11961
* feat(omni): 将多模态媒体管线集成至主分支 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/12019
* docs(daemon): 完善集成路径指南 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12005
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/cua-driver-rs-v0.20.9...desktop-v0.24.0
<!-- Release notes generated using configuration in .github/release.yml at 56b003be0785412ed06673948f781dc70a686b5a -->
## What's Changed
* fix(cli): scope the ACP permission queue to the session by @chiga0 in https://github.com/QwenLM/qwen-code/pull/11802
* feat(channels): add shared output modes with DingTalk support by @qqqys in https://github.com/QwenLM/qwen-code/pull/11822
* feat(web-shell): slide the active pill between tabs by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11844
* refactor(goal): delete the first-generation Stop-hook Goal implementation by @qqqys in https://github.com/QwenLM/qwen-code/pull/11900
* fix(ci): separate autofix runner labels from queued reviews by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11912
* feat(daemon): enumerate installed extension skills locally by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11281
* feat(web-shell): follow the reading position in the global turn navigation by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11801
* feat(workflows): share a per-turn token budget from a +Nk directive by @qqqys in https://github.com/QwenLM/qwen-code/pull/11917
* feat(serve): add budget-based ACP child admission by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11911
* feat(cli): add bwrap kernel sandbox backend for Linux by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11614
* fix(cli): restore shared Skill status and runner CI checks by @qqqys in https://github.com/QwenLM/qwen-code/pull/11933
* fix(vscode): retire legacy ACP input bridges by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11928
* feat(core): support external reasoning profiles and defaults by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11856
* feat(settings): turn cross-session messaging on by default by @qqqys in https://github.com/QwenLM/qwen-code/pull/11840
* fix(web-shell): show Qwen Live tasks in session sidebar by @qqqys in https://github.com/QwenLM/qwen-code/pull/11830
* fix(ci): isolate runner schedule fixture module scope by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11938
* feat(core): run saved workflows by name and pin workflow grants to script content by @qqqys in https://github.com/QwenLM/qwen-code/pull/11943
* feat(workflow): preserve source references across runs and resumes by @qqqys in https://github.com/QwenLM/qwen-code/pull/11931
* refactor(vscode): remove unused token limit mirror by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11946
* fix(core): carry the PTY load reason on the call, not in module state by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11923
* feat(workflow): correlate agent dispatches and nested workflow calls by @qqqys in https://github.com/QwenLM/qwen-code/pull/11932
* docs(goal): retire the Stop-hook era prose after the implementation was removed by @qqqys in https://github.com/QwenLM/qwen-code/pull/11922
* fix(core): keep escaped trailing whitespace when trimming hook matchers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11871
* feat(workflows): size guideline, structure preview and large-run warning by @qqqys in https://github.com/QwenLM/qwen-code/pull/11939
* fix(core): expand ${session_id} and stamp User-Agent on the Responses wire by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11947
* feat(workflows): let the model invoke extension workflows that declare whenToUse by @qqqys in https://github.com/QwenLM/qwen-code/pull/11957
* feat(daemon): support summary projection for prompt and replay APIs by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11920
* ci(desktop): publish the desktop app when the CLI releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11575
* test(cli): unbreak the bwrap sandbox suites on the Windows lane (#11968) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11970
* fix(core): keep tool parameters on the MiniMax chat-completions wire by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11842
* fix(web-shell): stop the approval sheet resizing while reading by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11930
* fix(release): gate pool-routed validation jobs on a disk floor by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11972
* feat(web-shell): add footnote previews and per-turn sources by @callmeYe in https://github.com/QwenLM/qwen-code/pull/11480
* fix(web-shell): preserve separators in tool description paths by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11977
* feat(telemetry): emit a Goal lifecycle event and metrics by @qqqys in https://github.com/QwenLM/qwen-code/pull/11927
* feat(cli): reload hook registry when /hooks opens by @qqqys in https://github.com/QwenLM/qwen-code/pull/11904
* fix(core): persist Goal turn endings outside model history by @qqqys in https://github.com/QwenLM/qwen-code/pull/11924
* feat(serve): reclaim idle ACP children when admission is full by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11940
* feat(web-shell): connect to a selected remote daemon by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11548
* fix(web-shell): keep the recap below a turn's outputs and dedupe it by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11986
* feat(web-shell): preview files from expanded tool details by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11982
* fix(ci): heal the docker lock cache ownership in e2e-test-linux (#11990) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11992
* feat(serve): start workflow runs with args, sourceRef and a caller-supplied script by @qqqys in https://github.com/QwenLM/qwen-code/pull/11979
* refactor(serve): separate ACP control plane and channel harness by @wenshao in https://github.com/QwenLM/qwen-code/pull/11916
* fix(cli): register model-invocable commands before headless turns by @qqqys in https://github.com/QwenLM/qwen-code/pull/11994
* fix(vscode): reach the workspace daemon from a remote window's webview by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11983
* feat(web-shell): customize context details and collapse snapshots by @ytahdn in https://github.com/QwenLM/qwen-code/pull/11996
* docs(serve): clarify daemon event recovery contracts by @wenshao in https://github.com/QwenLM/qwen-code/pull/12015
* test(serve): harden REST docs contract checks by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12009
* feat(goal): bill foreground subagents and verifier token usage by @qqqys in https://github.com/QwenLM/qwen-code/pull/11998
* docs(users): point onboarding at Token Plan instead of Coding Plan by @wenshao in https://github.com/QwenLM/qwen-code/pull/11980
* feat(dingtalk): carry sender identity in direct messages by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/12017
* feat(goal): show turn and active-time budgets by @qqqys in https://github.com/QwenLM/qwen-code/pull/11999
* fix(cli): make the ink useBoxMetrics loop guard independent of machine speed by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11835
* fix(ci): skip completed desktop releases by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12013
* fix(web-shell): honor ui.theme and general.language in the standalone Web Shell by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11961
* feat(omni): integrate multimodal media pipeline into main by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/12019
* docs(daemon): complete integration path guide by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/12005
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/cua-driver-rs-v0.20.9...desktop-v0.24.0