<!-- 使用 release/v0.23.1-preview.0 分支中 .github/release.yml 的配置生成的发布说明 -->
## 更新内容
* feat(web-shell): 可视化并管理动态工作流运行 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10594
* perf(web-shell): 仅一次派生会话工作流投影 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10871
* test(integration): 同步中途 /quit 补全 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10926
* feat(ipc): 消息被拒时通知发送方,并使持有消息过期 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10809
* fix(web-shell): 使 30 秒概览轮询端到端测试确定性 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10934
* feat(serve): 添加会话资源目录 by @w9lsky in https://github.com/QwenLM/qwen-code/pull/10837
* fix(cli): 从实时输入提交精确的斜杠命令 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10929
* fix(web-shell): 分支落后于上游时禁用 Push by @wenshao in https://github.com/QwenLM/qwen-code/pull/10754
* fix(cli): 按请求解析会话管理设置,而非使用过期的 this.settings 缓存 by @tomsen02 in https://github.com/QwenLM/qwen-code/pull/10095
* fix(ci): 主 CI 运行报告无测试结果时命名失败作业 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10855
* test(cli): 在共享池上保持对脱敏 ReDoS 防护的断言 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10912
* fix(cli): 补全实时斜杠提交依赖与测试夹具 (#10944) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10961
* fix(test): 结束测试从未关闭的交互式 PTY 会话 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10971
* feat(web-shell): 在对话记录中为运行中的子代理提供实时状态 by @wenshao in https://github.com/QwenLM/qwen-code/pull/10939
* ci(e2e): 在托管运行器上构建一次,并在每个阶段解压 by @wenshao in https://github.com/QwenLM/qwen-code/pull/10894
* fix(cli): 从实时输入提交精确的 OpenTUI 斜杠命令 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10987
* fix(cli): 在按回车时从实时缓冲区解析 OpenTUI 斜杠提交 by @wenshao in https://github.com/QwenLM/qwen-code/pull/10986
* docs(web-shell): 对齐后续建议文案 by @Theater-ahyeon in https://github.com/QwenLM/qwen-code/pull/10851
* fix(channels/dingtalk): 防止 SDK 连接日志打印 clientSecret 和 stream ticket by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10945
* feat(cli): 在 VP 模式下通过普通点击打开 OSC 8 链接 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/10979
* feat(channels): 添加工作树隔离的命名任务 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10643
* feat(serve): 添加会话轮次导航协议 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10751
* fix(cli): 修复 OpenTUI 中命令、/clear 和 steers 的对话记录可见性 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/10947
* fix(docs): 同步守护进程能力计数 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11012
* feat(web-shell): 恢复环境面板状态 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10627
* feat(ipc): 保持对等方收件箱可达,不可达时予以提示 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10800
* feat: 支持聊天对话记录导出为 mr2a HTML by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/10076
* feat(serve): 通过强制会话租约限制对话写入器 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10924
* fix(dws): 识别机器人提及后的斜杠命令 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10930
* feat: 从 ~/.qwen/output-styles 和 .qwen/output-styles 加载自定义输出样式 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10761
* fix(ci): 重试注册表端 npm audit 失败,而非将其报告为 CVE by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11006
* fix(cli): 允许在斜杠命令加载前退出 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11029
* fix(test): 停止在共享 E2E 池上测量模型延迟 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11004
* refactor(cli): 将每个请求的运行时根目录固定路由通过 runWithPinnedRuntimeBaseDir by @tomsen02 in https://github.com/QwenLM/qwen-code/pull/10988
* docs(web-shell): 添加全局轮次导航第二阶段设计 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11020
* fix(cli): 在聊天初始化完成前保持输入关闭 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11000
* fix: 恢复与 ACP 相关的主 CI 检查 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11033
* refactor(rewind): 统一 ACP 和 TUI 用户提示分类器 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10959
* test(web-shell): 在可视化预览中渲染会话工作流驾驶舱 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11014
* fix(web-shell): 正确标记用量受限的目标卡片 by @yu-xin-c in https://github.com/QwenLM/qwen-code/pull/10553
* feat(ui): 添加 ui.showToolCallArgs 以行内渲染工具调用参数 by @TianYuan1024 in https://github.com/QwenLM/qwen-code/pull/10565
* fix(test): 同步固定的无 AK 集成脚本列表 (#11050) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11052
* fix(web-shell): 将单元格值对话框中的全选范围限制为值 by @LizunovSergey in https://github.com/QwenLM/qwen-code/pull/10857
* fix(test): 提高内联 E2E 守护进程生成的 ACP 初始化预算 (#11034) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11041
* fix(core): 允许在自动模式阻塞后手动重试 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11025
* feat(ipc): 跨审查类保持对等消息,仅允许仓库收紧入站设置 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11026
* fix(cli): 通过运行时根节点固定值路由轮次索引读取 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11036
* feat(skills): 添加内置的 zvec-grep 安装程序 by @zhourrr in https://github.com/QwenLM/qwen-code/pull/10723
* docs(cli): 在 qwen 认证移除通知中提及 Token Plan 环境变量设置 by @now-ing in https://github.com/QwenLM/qwen-code/pull/10993
* fix(core): 合并并发 Config.initialize() 调用 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11037
* fix(cli): 修复 main 分支上实时斜杠门控的遗留问题 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10940
* feat(core): 将会话 ID 发送至 Routify 端点 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10896
* feat(core): 将 todo_write 设为可选启用 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10645
* perf(cli): 避免对无效的内联图像缓存命中进行哈希计算 by @zjunothing in https://github.com/QwenLM/qwen-code/pull/10626
* fix(core): 拒绝歧义的 send_message 目标 by @GCGH159 in https://github.com/QwenLM/qwen-code/pull/10090
* fix(core): 从 Cerebras 请求中剥离 reasoning_content by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11049
* feat(serve): 添加工作区范围的 Skills 运行时 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10697
* feat(channels): 按配置的的前缀过滤消息 by @qqqys in https://github.com/QwenLM/qwen-code/pull/10817
* fix(goal): 在验证检查点结束守护进程轮次 by @qqqys in https://github.com/QwenLM/qwen-code/pull/11011
* refactor!: 弃用 @qwen-code/webui by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9812
* docs: 记录后台代理的显示位置及其所有者 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10951
* chore(ci): 移除已弃用的 WebUI 依赖检查 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11095
* docs(core): 说明为何 Todo 依赖语义不置于功能标志后 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11078
* fix(core): 强化 Config.initialize() 合并路径 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11075
## 新贡献者
* @w9lsky 在 https://github.com/QwenLM/qwen-code/pull/10837 中首次贡献
* @Theater-ahyeon 在 https://github.com/QwenLM/qwen-code/pull/10851 中首次贡献
* @LizunovSergey 在 https://github.com/QwenLM/qwen-code/pull/10857 中首次贡献
* @zhourrr 在 https://github.com/QwenLM/qwen-code/pull/10723 中首次贡献
* @GCGH159 在 https://github.com/QwenLM/qwen-code/pull/10090 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.23.0...v0.23.1-preview.0
<!-- Release notes generated using configuration in .github/release.yml at release/v0.23.1-preview.0 -->
## What's Changed
* feat(web-shell): visualize and manage dynamic workflow runs by @qqqys in https://github.com/QwenLM/qwen-code/pull/10594
* perf(web-shell): derive the session workflow projection once by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10871
* test(integration): synchronize mid-turn /quit completion by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10926
* feat(ipc): tell senders when a message is refused, and expire held ones by @qqqys in https://github.com/QwenLM/qwen-code/pull/10809
* fix(web-shell): make the 30 s overview-poll e2e deterministic by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10934
* feat(serve): add session resource catalog by @w9lsky in https://github.com/QwenLM/qwen-code/pull/10837
* fix(cli): submit exact slash commands from the live input by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10929
* fix(web-shell): disable Push while the branch is behind its upstream by @wenshao in https://github.com/QwenLM/qwen-code/pull/10754
* fix(cli): resolve session-management settings per request, not from the stale this.settings cache by @tomsen02 in https://github.com/QwenLM/qwen-code/pull/10095
* fix(ci): name the failing job when a main CI run reports no test result by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10855
* test(cli): keep the redaction ReDoS guard asserting on the shared pool by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10912
* fix(cli): complete the live slash-submit deps and fixture (#10944) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10961
* fix(test): end interactive PTY sessions a test never closed by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10971
* feat(web-shell): give running subagents a live status in the transcript by @wenshao in https://github.com/QwenLM/qwen-code/pull/10939
* ci(e2e): build once on a hosted runner and unpack it on every leg by @wenshao in https://github.com/QwenLM/qwen-code/pull/10894
* fix(cli): submit exact OpenTUI slash commands from live input by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10987
* fix(cli): resolve the OpenTUI slash submit from the live buffer on Enter by @wenshao in https://github.com/QwenLM/qwen-code/pull/10986
* docs(web-shell): align follow-up suggestion copy by @Theater-ahyeon in https://github.com/QwenLM/qwen-code/pull/10851
* fix(channels/dingtalk): keep SDK connect logging from printing clientSecret and stream ticket by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10945
* feat(cli): Open OSC 8 links with a plain click in VP mode by @chiga0 in https://github.com/QwenLM/qwen-code/pull/10979
* feat(channels): Add worktree-isolated named tasks by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10643
* feat(serve): add session turn navigation protocol by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10751
* fix(cli): OpenTUI transcript visibility for commands, /clear and steers by @chiga0 in https://github.com/QwenLM/qwen-code/pull/10947
* fix(docs): sync daemon capability count by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11012
* feat(web-shell): restore environment panel state by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10627
* feat(ipc): keep the peer inbox reachable, and say so when it is not by @qqqys in https://github.com/QwenLM/qwen-code/pull/10800
* feat: chat transcript mr2a html export by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/10076
* feat(serve): Fence Conversations writers with mandatory session leases by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/10924
* fix(dws): recognize slash commands after bot mentions by @qqqys in https://github.com/QwenLM/qwen-code/pull/10930
* feat: load custom output styles from ~/.qwen/output-styles and .qwen/output-styles by @qqqys in https://github.com/QwenLM/qwen-code/pull/10761
* fix(ci): retry a registry-side npm audit failure instead of reporting it as a CVE by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11006
* fix(cli): allow quit before slash commands load by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11029
* fix(test): stop measuring model latency on the shared E2E pool by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11004
* refactor(cli): route every per-request runtime-root pin through runWithPinnedRuntimeBaseDir by @tomsen02 in https://github.com/QwenLM/qwen-code/pull/10988
* docs(web-shell): add global turn navigation Phase 2 design by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/11020
* fix(cli): keep input closed until chat initialization completes by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11000
* fix: restore ACP-related main CI checks by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11033
* refactor(rewind): unify the ACP and TUI user-prompt classifiers by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10959
* test(web-shell): render the Session Workflow cockpit in the visuals preview by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11014
* fix(web-shell): label usage-limited goal cards correctly by @yu-xin-c in https://github.com/QwenLM/qwen-code/pull/10553
* feat(ui): add ui.showToolCallArgs to render tool-call arguments inline by @TianYuan1024 in https://github.com/QwenLM/qwen-code/pull/10565
* fix(test): sync the pinned no-AK integration script list (#11050) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11052
* fix(web-shell): scope select-all in the cell value dialog to the value by @LizunovSergey in https://github.com/QwenLM/qwen-code/pull/10857
* fix(test): raise the ACP initialize budget for inline E2E daemon spawns (#11034) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/11041
* fix(core): allow manual retry after auto mode blocks by @qqqys in https://github.com/QwenLM/qwen-code/pull/11025
* feat(ipc): hold peer messages across review classes, let repositories only tighten inbound settings by @qqqys in https://github.com/QwenLM/qwen-code/pull/11026
* fix(cli): route turn-index reads through runtime-root pin by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11036
* feat(skills): add built-in zvec-grep installer by @zhourrr in https://github.com/QwenLM/qwen-code/pull/10723
* docs(cli): mention Token Plan env setup in the qwen auth removal notice by @now-ing in https://github.com/QwenLM/qwen-code/pull/10993
* fix(core): coalesce concurrent Config.initialize() calls by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11037
* fix(cli): repair the live slash gate fallout on main by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/10940
* feat(core): send session ID to Routify endpoints by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10896
* feat(core): make todo_write opt-in by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/10645
* perf(cli): avoid hashing invalid inline image cache hits by @zjunothing in https://github.com/QwenLM/qwen-code/pull/10626
* fix(core): reject ambiguous send_message destinations by @GCGH159 in https://github.com/QwenLM/qwen-code/pull/10090
* fix(core): strip reasoning_content from Cerebras requests by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11049
* feat(serve): add workspace-scoped Skills runtime by @ytahdn in https://github.com/QwenLM/qwen-code/pull/10697
* feat(channels): filter messages by configured prefix by @qqqys in https://github.com/QwenLM/qwen-code/pull/10817
* fix(goal): end daemon turns at verification checkpoints by @qqqys in https://github.com/QwenLM/qwen-code/pull/11011
* refactor!: retire @qwen-code/webui by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/9812
* docs: record where a background agent shows up, and who owns it by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/10951
* chore(ci): remove retired WebUI dependency guard by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11095
* docs(core): say why the Todo dependency semantics are not behind the flag by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11078
* fix(core): harden Config.initialize() join path by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/11075
## New Contributors
* @w9lsky made their first contribution in https://github.com/QwenLM/qwen-code/pull/10837
* @Theater-ahyeon made their first contribution in https://github.com/QwenLM/qwen-code/pull/10851
* @LizunovSergey made their first contribution in https://github.com/QwenLM/qwen-code/pull/10857
* @zhourrr made their first contribution in https://github.com/QwenLM/qwen-code/pull/10723
* @GCGH159 made their first contribution in https://github.com/QwenLM/qwen-code/pull/10090
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.23.0...v0.23.1-preview.0