## 更新内容
* feat(cli): 使用 OSC 8 包装 Markdown 链接,使换行后的 URL 保持可点击状态 by @BZ-D in https://github.com/QwenLM/qwen-code/pull/4037
* fix(core): 将累积的 OpenAI 流增量标准化为后缀 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/3896
* fix(cli): 取消时自动恢复提示词并保留队列 by @wenshao in https://github.com/QwenLM/qwen-code/pull/4023
* docs(auth): 添加自定义 API 密钥向导的产品需求文档 (PRD) by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/3583
* feat(cli): 在 /delete 命令中支持会话批量删除 by @qqqys in https://github.com/QwenLM/qwen-code/pull/3733
* feat(cli,sdk): qwen serve 守护进程(第一阶段) by @wenshao in https://github.com/QwenLM/qwen-code/pull/3889
* fix(core): 为子代理的 OpenAI JSON 日志添加标签 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4099
* feat(subagents): 为 Explore 子代理使用 fastModel by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4086
* fix(dashscope): 使用 URL 主机名检查替代正则表达式以避免 ReDoS(CodeQL) by @qqqys in https://github.com/QwenLM/qwen-code/pull/4112
* fix(core): 改进运行时 fetch 选项的错误处理与文档 by @ZevGit in https://github.com/QwenLM/qwen-code/pull/3997
* fix(telemetry): 解决 PR #3847 审查后续问题以优化链路追踪关联 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4058
* feat(perf): 渐进式 MCP 可用性 — MCP 不再阻塞首次输入 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/3994
* fix(search): 使空查询退出变为同步操作,并标准化 Windows 退格键行为 by @B-A-M-N in https://github.com/QwenLM/qwen-code/pull/3981
* chore(release): v0.15.11 版本发布 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/4100
* fix(anthropic): 允许在 tool_result 块上使用 cache_control by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4121
* feat(core): 在对话压缩摘要前移除内联媒体 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4101
* ci(deps): 将 docker/* actions 升级至 Node 24 主版本(消除 GitHub Node 20 弃用警告) by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4131
* fix(core): 将 IDE 上下文合并至用户提示词 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/3980
* fix(cli): 无需重启即可将 /language 输出应用到运行中的会话 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4143
* feat(tools): 添加通用 worktree 支持 — EnterWorktree/ExitWorktree + 代理隔离 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4073
* feat(cli): 将 ModelScope 添加为内置第三方 API 提供商 by @Col0ring in https://github.com/QwenLM/qwen-code/pull/4150
* fix(core): 修正上下文使用 Footer 以准确显示提示词大小与 Anthropic 缓存 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4109
* fix(core): 支持跨认证快速侧边查询 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4117
* test(integration): 在 #4163 修复前,将 simple-mcp-server 锁定至旧版 MCP 路径 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4164
* refactor(serve): 1 个守护进程对应 1 个工作区 (#3803 §02) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4113
* fix(vscode): 保留思考状态并恢复缺失的编辑快照 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4147
* fix(cli): 将 MinTTY 的 Ctrl+Backspace 处理为删除前一个单词 by @dreamWB in https://github.com/QwenLM/qwen-code/pull/4059
* refactor(serve): 提取 createInMemoryChannel 辅助函数 (#4156 A1) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4160
* fix(cli): 在沙箱重启时保留调试会话 by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4060
* feat(core): 为 Qwen3.6-35B-A3B 量化变体添加图像+视频支持 by @Dinsmoor in https://github.com/QwenLM/qwen-code/pull/4106
* fix(hooks): 将 SessionStart 的 additionalContext 注入到聊天上下文中 by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/4115
* fix(i18n): 修正 zh-TW 翻译以符合繁体中文习惯 by @MikeWang0316tw in https://github.com/QwenLM/qwen-code/pull/4129
* feat(hooks): 为待办事项生命周期事件添加 TodoCreated 和 TodoCompleted 钩子 by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/3378
* refactor(cli): 回滚动态斜杠命令的 LLM 翻译 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4145
* chore(deps): 重新升级 ink 6 → 7.0.3(上游 Static 重新挂载修复已合入) by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4119
* feat(hooks): 添加支持 LLM 评估的 prompt 钩子类型 by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/3388
* perf(cli): 对 lowlight 进行代码分割以降低启动时 V8 解析开销 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4070
* fix(core): 在 setTools() 中刷新 systemInstruction,使渐进式 MCP 工具能送达模型 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4166
* feat(core,cli): 添加通用的 atomicWriteFile,接入 Write/Edit 工具,并升级 @types/node by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4096
* fix(vscode-ide-companion): 使用现有编辑器组进行差异对比,而非强制创建新组 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4130
* feat(cli): 警告用户 IDE 模式下已禁用回退(rewind)功能 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4122
* feat(cli): 为 /rename 命令添加参数提示与 --auto 自动补全 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4048
* feat(cli): 添加基础的 /doctor 内存诊断功能 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4180
* [codex] feat(serve): 添加能力注册表协议版本 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4191
* feat(cli): 添加会话级 /goal 命令,支持基于评估器的回合继续 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4123
* feat(rewind): 为 /rewind 命令添加文件恢复支持 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4064
* feat(skills): 为冻结会话添加 /stuck 诊断技能 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4133
* feat(telemetry): 统一分层追踪树的 span 创建路径 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4126
* refactor(core): TaskBase 信封 + 前台子代理持久化 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/3970
* feat(cli): 使用 readline Ctrl+P/N 进行历史记录与选择导航 by @dreamWB in https://github.com/QwenLM/qwen-code/pull/4082
* feat(cli): 添加带有交互式对话框的内置状态栏预设 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4120
* fix(core): 添加堆内存压力自动压缩安全机制 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4186
* feat(serve): 在 POST /session 上实现每次请求的 sessionScope 覆盖 (#4175 Wave 2 PR 5) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4209
* fix(cli): 修复 rewind 选择器测试属性传递 by @wenshao in https://github.com/QwenLM/qwen-code/pull/4211
* feat(cli): 添加 fork-session 恢复标志 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4159
* feat(telemetry): 添加交互 span 及详细敏感属性 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4097
* test(perf): 添加守护进程基线测试框架 (#4175 Wave 1 PR 1) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4205
* feat(sdk): 添加 DaemonSessionClient 骨架 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4201
* fix(lsp): 暴露状态与启动诊断信息 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/3649
* fix(serve): 对齐集成测试与用户文档以匹配已合并的 sessionScope 覆盖 (#4175 后续) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4214
* fix(rewind): 恢复上游 TOCTOU 排序 + 修复粘性失败标记 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4216
* 添加停止钩子阻塞上限 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4208
* fix(test): 清除 boundedPromise 定时器以防止 abort-and-lifecycle 测试中的未处理拒绝 by @wenshao in https://github.com/QwenLM/qwen-code/pull/4220
* fix(ui): 修剪后台任务结果并按最新优先显示 (#4094) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4125
* feat(protocol): 类型化守护进程事件 schema v1 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4217
* [codex] 允许 /export 命令使用自定义输出目录 by @qqqys in https://github.com/QwenLM/qwen-code/pull/4193
* [codex] 添加守护进程会话加载/恢复功能 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4222
* feat(sdk): 加固守护进程会话客户端 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4225
* fix(core): 使 shell 工具描述与配置的 shell 保持一致 by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4170
* fix(cli): 在斜杠命令中包含技能基础目录 by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4224
* feat(serve): 添加带守护进程标记的客户端身份 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4231
* feat(serve): 添加会话级权限路由 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4232
* test(perf): 在沙箱环境下跳过守护进程基线测试 by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4234
* feat(core): PR-2.5 — 提升后流重定向 + 自然退出注册表结算 (#3831 后续) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4102
## 新贡献者
* @ZevGit 在 https://github.com/QwenLM/qwen-code/pull/3997 中完成了首次贡献
* @Col0ring 在 https://github.com/QwenLM/qwen-code/pull/4150 中完成了首次贡献
* @Dinsmoor 在 https://github.com/QwenLM/qwen-code/pull/4106 中完成了首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.15.11...v0.15.12-preview.3
## What's Changed
* feat(cli): wrap markdown links in OSC 8 so wrapped URLs stay clickable by @BZ-D in https://github.com/QwenLM/qwen-code/pull/4037
* fix(core): normalize cumulative OpenAI stream deltas to suffixes by @chiga0 in https://github.com/QwenLM/qwen-code/pull/3896
* fix(cli): auto-restore prompt and preserve queue on cancel by @wenshao in https://github.com/QwenLM/qwen-code/pull/4023
* docs(auth): add custom API key wizard PRD by @pomelo-nwu in https://github.com/QwenLM/qwen-code/pull/3583
* feat(cli): support batch deletion of sessions in /delete by @qqqys in https://github.com/QwenLM/qwen-code/pull/3733
* feat(cli,sdk): qwen serve daemon (Stage 1) by @wenshao in https://github.com/QwenLM/qwen-code/pull/3889
* fix(core): tag subagent OpenAI JSON logs by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4099
* feat(subagents): use fastModel for Explore subagent by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4086
* fix(dashscope): use URL hostname check instead of regex to avoid ReDoS (CodeQL) by @qqqys in https://github.com/QwenLM/qwen-code/pull/4112
* fix(core): improve runtime fetch options error handling and documentation by @ZevGit in https://github.com/QwenLM/qwen-code/pull/3997
* fix(telemetry): address PR #3847 review follow-ups for trace correlation by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4058
* feat(perf): progressive MCP availability — MCP no longer blocks first input by @chiga0 in https://github.com/QwenLM/qwen-code/pull/3994
* fix(search): make empty-query exit synchronous and normalize Windows Backspace by @B-A-M-N in https://github.com/QwenLM/qwen-code/pull/3981
* chore(release): v0.15.11 by @qwen-code-ci-bot in https://github.com/QwenLM/qwen-code/pull/4100
* fix(anthropic): allow cache_control on tool_result blocks by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4121
* feat(core): strip inline media before chat compaction summary by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4101
* ci(deps): bump docker/* actions to Node 24 majors (silences GitHub Node 20 deprecation warning) by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4131
* fix(core): merge IDE context into user prompt by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/3980
* fix(cli): apply /language output to running session without restart by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4143
* feat(tools): add generic worktree support — EnterWorktree/ExitWorktree + Agent isolation by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/4073
* feat(cli): add ModelScope as a built-in third-party API provider by @Col0ring in https://github.com/QwenLM/qwen-code/pull/4150
* fix(core): correct context-usage Footer for prompt size and Anthropic caches by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4109
* fix(core): support cross-auth fast side queries by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4117
* test(integration): pin simple-mcp-server to legacy MCP path until #4163 is fixed by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4164
* refactor(serve): 1 daemon = 1 workspace (#3803 §02) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4113
* fix(vscode): preserve thinking state and recover missing edit snapshots by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4147
* fix(cli): handle MinTTY Ctrl+Backspace as delete-previous-word by @dreamWB in https://github.com/QwenLM/qwen-code/pull/4059
* refactor(serve): extract createInMemoryChannel helper (#4156 A1) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4160
* fix(cli): preserve debug session across sandbox relaunch by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4060
* feat(core): add image+video support for Qwen3.6-35B-A3B quant variants by @Dinsmoor in https://github.com/QwenLM/qwen-code/pull/4106
* fix(hooks): inject SessionStart additionalContext into chat context by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/4115
* fix(i18n): Correct zh-TW translations to match Traditional Chinese conventions by @MikeWang0316tw in https://github.com/QwenLM/qwen-code/pull/4129
* feat(hooks): Add TodoCreated and TodoCompleted hooks for todo lifecycle events by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/3378
* refactor(cli): revert dynamic slash command LLM translation by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4145
* chore(deps): re-upgrade ink 6 → 7.0.3 (upstream Static remount fix landed) by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4119
* feat(hooks): add prompt hook type with LLM evaluation support by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/3388
* perf(cli): code-split lowlight to cut startup V8 parse cost by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4070
* fix(core): refresh systemInstruction in setTools() so progressive MCP tools reach the model by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4166
* feat(core,cli): add generic atomicWriteFile, wire into Write/Edit tools, upgrade @types/node by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4096
* fix(vscode-ide-companion): use existing editor group for diff instead of forcing a new one by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4130
* feat(cli): warn users that rewind is disabled in IDE mode by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4122
* feat(cli): argument hint + --auto completion for /rename by @qqqys in https://github.com/QwenLM/qwen-code/pull/4048
* feat(cli): add baseline /doctor memory diagnostics by @qqqys in https://github.com/QwenLM/qwen-code/pull/4180
* [codex] feat(serve): add capability registry protocol versions by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4191
* feat(cli): add session-scoped /goal command with judge-driven turn continuation by @qqqys in https://github.com/QwenLM/qwen-code/pull/4123
* feat(rewind): add file restoration support to /rewind command by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4064
* feat(skills): add /stuck diagnostic skill for frozen sessions by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4133
* feat(telemetry): unify span creation paths for hierarchical trace tree by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4126
* refactor(core): TaskBase envelope + foreground subagent persistence by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/3970
* feat(cli): readline Ctrl+P/N for history and selection navigation by @dreamWB in https://github.com/QwenLM/qwen-code/pull/4082
* feat(cli): add built-in status line presets with interactive dialog by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/4120
* fix(core): add heap-pressure auto-compaction safety net by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/4186
* feat(serve): per-request sessionScope override on POST /session (#4175 Wave 2 PR 5) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4209
* fix(cli): pass rewind selector test props by @wenshao in https://github.com/QwenLM/qwen-code/pull/4211
* feat(cli): add fork-session resume flag by @qqqys in https://github.com/QwenLM/qwen-code/pull/4159
* feat(telemetry): add interaction span and detailed sensitive attributes by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4097
* test(perf): add daemon baseline harness (#4175 Wave 1 PR 1) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4205
* feat(sdk): add DaemonSessionClient skeleton by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4201
* fix(lsp): expose status and startup diagnostics by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/3649
* fix(serve): align integration test + user doc with merged sessionScope override (#4175 follow-up) by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4214
* fix(rewind): restore upstream TOCTOU ordering + heal sticky failed marker by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4216
* Add stop hook blocking cap by @qqqys in https://github.com/QwenLM/qwen-code/pull/4208
* fix(test): clear boundedPromise timers to prevent unhandled rejections in abort-and-lifecycle test by @wenshao in https://github.com/QwenLM/qwen-code/pull/4220
* fix(ui): trim background task results and show newest first (#4094) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4125
* feat(protocol): typed daemon event schema v1 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4217
* [codex] Allow custom output directory for /export by @qqqys in https://github.com/QwenLM/qwen-code/pull/4193
* [codex] Add daemon session load/resume by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/4222
* feat(sdk): harden daemon session client by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4225
* fix(core): align shell tool description with configured shell by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4170
* fix(cli): include skill base dir in slash commands by @kkhomej33-netizen in https://github.com/QwenLM/qwen-code/pull/4224
* feat(serve): add daemon-stamped client identity by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4231
* feat(serve): add session-scoped permission route by @chiga0 in https://github.com/QwenLM/qwen-code/pull/4232
* test(perf): skip daemon baseline harness under sandbox by @tanzhenxin in https://github.com/QwenLM/qwen-code/pull/4234
* feat(core): PR-2.5 — post-promote stream redirect + natural-exit registry settle (#3831 follow-up) by @wenshao in https://github.com/QwenLM/qwen-code/pull/4102
## New Contributors
* @ZevGit made their first contribution in https://github.com/QwenLM/qwen-code/pull/3997
* @Col0ring made their first contribution in https://github.com/QwenLM/qwen-code/pull/4150
* @Dinsmoor made their first contribution in https://github.com/QwenLM/qwen-code/pull/4106
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.15.11...v0.15.12-preview.3