← 返回更新日志

Qwen Code v0.21.1

2026-07-28 · GitHub 原文
<!-- qwen-release-notes:v1 --> ## 亮点 _详见下方的完整变更列表。_ ## 破坏性变更 暂无已知的破坏性变更。 ## 完整变更列表 ### 新功能 - feat(core): 对齐 GenAI 内容遥测字段 ([#7667](https://github.com/QwenLM/qwen-code/pull/7667)) by @doudouOUC - feat(core): 添加 Goal v3 运行时编排 ([#7664](https://github.com/QwenLM/qwen-code/pull/7664)) by @qqqys - feat(triage): 停止代理内 CI 轮询,在 CI 完成后最终确定证据和审批 ([#7693](https://github.com/QwenLM/qwen-code/pull/7693)) by @wenshao - feat(serve): 暴露工作区 Channel 管理 API ([#7637](https://github.com/QwenLM/qwen-code/pull/7637)) by @qqqys - feat(web-shell): 添加只读的 GitHub Pull Requests 面板 ([#7683](https://github.com/QwenLM/qwen-code/pull/7683)) by @wenshao - 为外部语料库添加了仅检索的 context_search 工具,由管理员配置,不具备自动召回或写入能力。 ([#7586](https://github.com/QwenLM/qwen-code/pull/7586)) by @doudouOUC - 引入 `qwen review comment-status` 子命令,用于快速分类现有的行内评论,并在审查运行期间减少 API 调用。 ([#7690](https://github.com/QwenLM/qwen-code/pull/7690)) by @wenshao - 对审查提交强制执行严格的写入契约,并添加警戒线以检测并标记任何通过终端命令进行的绕过尝试。 ([#7691](https://github.com/QwenLM/qwen-code/pull/7691)) by @wenshao - 启用运行中守护进程的工作区信任更改热重载,无需重启进程即可立即应用新策略。 ([#7268](https://github.com/QwenLM/qwen-code/pull/7268)) by @doudouOUC - 添加 `retryInitialDelayMs` 和 `retryMaxDelayMs` 设置,用于配置流侧速率限制重试延迟,以提升提供商兼容性。 ([#7674](https://github.com/QwenLM/qwen-code/pull/7674)) by @jay666mnj - 更新 `/stats` 命令和 Session 标签页,以显示生成时序指标,包括 TTFT、耗时、输出 token 数和 TPS。 ([#7677](https://github.com/QwenLM/qwen-code/pull/7677)) by @destire-mio - 添加 GitHub channel 适配器,通过轮询通知并使用基于信号唤醒的架构发布评论来响应提及。 ([#7632](https://github.com/QwenLM/qwen-code/pull/7632)) by @OrbitZore - 添加可选的 `retryInitialDelayMs` 和 `retryMaxDelayMs` 设置,用于为特定提供商配额窗口配置 SSE 流速率限制重试延迟。 ([#7666](https://github.com/QwenLM/qwen-code/pull/7666)) by @hogeheer499-commits - 为技能引入可覆盖的默认禁用状态,允许软默认值在显式启用时让步,而硬禁用仍保持绝对。 ([#7357](https://github.com/QwenLM/qwen-code/pull/7357)) by @samuelhsin - feat(webui): 添加工作区 Channel 管理钩子 ([#7728](https://github.com/QwenLM/qwen-code/pull/7728)) by @qqqys - feat(review): 将中等工作量重新定义为平衡的验证通过 ([#7733](https://github.com/QwenLM/qwen-code/pull/7733)) by @wenshao - feat(review): 在测试覆盖率阶段对测试进行变异测试(Agent 5) ([#7735](https://github.com/QwenLM/qwen-code/pull/7735)) by @wenshao - feat(review): 将维护者审查视角引入代理简报 ([#7736](https://github.com/QwenLM/qwen-code/pull/7736)) by @wenshao - feat(web-shell): 持久化终端历史记录的分页错误 ([#7709](https://github.com/QwenLM/qwen-code/pull/7709)) by @PratikWayase - feat(triage): 添加沙箱化的 /verify 深度验证通道 ([#7710](https://github.com/QwenLM/qwen-code/pull/7710)) by @wenshao - feat(review): 赋予验证器探测能力——运行可运行的声明,而不仅仅是读取它 ([#7756](https://github.com/QwenLM/qwen-code/pull/7756)) by @wenshao - feat(core): 为子代理生成添加模型等级选择 (#7685) ([#7702](https://github.com/QwenLM/qwen-code/pull/7702)) by @yiliang114 - feat(dingtalk): 支持出站图像传输 ([#7698](https://github.com/QwenLM/qwen-code/pull/7698)) by @qqqys - feat(web-shell): 允许将侧边栏拓宽至窗口宽度的一半 ([#7778](https://github.com/QwenLM/qwen-code/pull/7778)) by @wenshao - feat(core): 添加 Goal v3 工作器工具 ([#7729](https://github.com/QwenLM/qwen-code/pull/7729)) by @qqqys - feat(review): 将 script-lint 作为确定性门控——compose-review 读取报告,无需代理 ([#7751](https://github.com/QwenLM/qwen-code/pull/7751)) by @wenshao - feat(web-shell): 添加监控任务详情 ([#7817](https://github.com/QwenLM/qwen-code/pull/7817)) by @ytahdn - feat(web-shell): 将语音范围限定为 composer 工作区 ([#7754](https://github.com/QwenLM/qwen-code/pull/7754)) by @doudouOUC - feat(hooks): 添加已提交提示词的溯源信息 ([#7762](https://github.com/QwenLM/qwen-code/pull/7762)) by @doudouOUC - feat(autofix): 重试一次确定性拒绝 ([#7796](https://github.com/QwenLM/qwen-code/pull/7796)) by @qqqys - feat(web-shell): 添加 Channel 管理页面 ([#7793](https://github.com/QwenLM/qwen-code/pull/7793)) by @qqqys - feat(acp): 添加会话级运行时 MCP ([#7847](https://github.com/QwenLM/qwen-code/pull/7847)) by @qqqys - feat(core): 持久化并回放 Goal v3 状态 ([#7815](https://github.com/QwenLM/qwen-code/pull/7815)) by @qqqys - feat(core): 添加全分辨率图像缩放工具 ([#7809](https://github.com/QwenLM/qwen-code/pull/7809)) by @qqqys - feat(web-shell): 添加 composer 页脚渲染器 ([#7856](https://github.com/QwenLM/qwen-code/pull/7856)) by @dreamWB - feat: 将会话写入者租约置于 opt-in 机制之后 ([#7894](https://github.com/QwenLM/qwen-code/pull/7894)) by @doudouOUC - feat(ci): 通过在现有 issue 上评论来去重 E2E 失败问题 ([#7792](https://github.com/QwenLM/qwen-code/pull/7792)) by @yiliang114 - feat(triage): 添加 revert-pattern 高风险路径检测 ([#7414](https://github.com/QwenLM/qwen-code/pull/7414)) by @yiliang114 - feat(web-shell): 添加原生工作区文件夹选择器 ([#7849](https://github.com/QwenLM/qwen-code/pull/7849)) by @qqqys - feat(web-shell): 添加 Channel 配置流程 ([#7893](https://github.com/QwenLM/qwen-code/pull/7893)) by @qqqys - feat(core): 添加 ARMS 会话用户 ID ([#7921](https://github.com/QwenLM/qwen-code/pull/7921)) by @doudouOUC - feat(channels): 在守护进程会话中暴露循环工具 ([#7891](https://github.com/QwenLM/qwen-code/pull/7891)) by @qqqys - feat(web-shell): 遵循语音保持模式 ([#7839](https://github.com/QwenLM/qwen-code/pull/7839)) by @callmeYe - feat(web-shell): 管理 Channel 配对请求 ([#7909](https://github.com/QwenLM/qwen-code/pull/7909)) by @qqqys - feat(channels): 按原因分发 GitHub 通知 ([#7826](https://github.com/QwenLM/qwen-code/pull/7826)) by @yiliang114 - feat(web-shell): 添加 git 分支选择器、提交对话框和创建 PR 流程 ([#7731](https://github.com/QwenLM/qwen-code/pull/7731)) by @wenshao - feat(triage): 在 CI 路径上显示沙盒通道 ([#7917](https://github.com/QwenLM/qwen-code/pull/7917)) by @wenshao - feat(web-shell): 为次要问题建议 BTW ([#7935](https://github.com/QwenLM/qwen-code/pull/7935)) by @carffuca - feat(triage): 使验证报告可读为中文 ([#7918](https://github.com/QwenLM/qwen-code/pull/7918)) by @wenshao ### Bug Fixes - fix(cli): 在所有地方使用本地时间测量洞察天数和小时数 ([#7670](https://github.com/QwenLM/qwen-code/pull/7670)) by @ComplexSimply - fix(ci): 当无可清理内容时,不使 triage 清理失败 ([#7688](https://github.com/QwenLM/qwen-code/pull/7688)) by @wenshao - fix(ci): 更新 runner 活动 npm 前缀中的 qwen ([#7689](https://github.com/QwenLM/qwen-code/pull/7689)) by @yiliang114 - fix(acp): 在每个提示轮次结束时清理审查 worktree 租约 ([#7694](https://github.com/QwenLM/qwen-code/pull/7694)) by @wenshao - fix(core): 写入状态 sidecar,使模型不再误读安静的后台 shell ([#7669](https://github.com/QwenLM/qwen-code/pull/7669)) by @ComplexSimply - fix(core): exit_plan_mode 返回 execute() 的指导错误,而非权限拒绝 ([#7673](https://github.com/QwenLM/qwen-code/pull/7673)) by @qwen-code-dev-bot - fix(core): 告知模型用户何时手动退出计划模式 ([#7682](https://github.com/QwenLM/qwen-code/pull/7682)) by @zjunothing - fix(core): 为同一仓库的插件分配不同的扩展 ID ([#7676](https://github.com/QwenLM/qwen-code/pull/7676)) by @zjunothing - fix(core): 允许无需确认提示即可读取已保存的计划文件 ([#7678](https://github.com/QwenLM/qwen-code/pull/7678)) by @zjunothing - fix(cli): 当代理在轮次中途自动恢复时,清除过期的重试错误 ([#7681](https://github.com/QwenLM/qwen-code/pull/7681)) by @qwen-code-dev-bot - fix(mcp): 强化 OAuth 回调处理 ([#7510](https://github.com/QwenLM/qwen-code/pull/7510)) by @gauravyad86 - fix(web-shell): 为 GitHub PR 列表行添加 :focus-visible 轮廓 ([#7704](https://github.com/QwenLM/qwen-code/pull/7704)) by @wenshao - fix(triage): 在补丁时通过标记解析阶段评论 ID,强化模型注入 ([#7703](https://github.com/QwenLM/qwen-code/pull/7703)) by @wenshao - fix(triage): 从开放 PR 列表解析最终化 PR,而非提交关联 ([#7706](https://github.com/QwenLM/qwen-code/pull/7706)) by @wenshao - 修复内联数学识别,以正确处理正文和表格中的单字符表达式、转义美元符号和代码跨度。 ([#7701](https://github.com/QwenLM/qwen-code/pull/7701)) by @CubeLander - 修复桌面文件大小显示,以正确渲染太字节及更大值,避免对超大文件显示 undefined。 ([#7623](https://github.com/QwenLM/qwen-code/pull/7623)) by @chinesepowered - 确保在 OpenAPI 3.0 转换期间正确字符串化由 const 派生的枚举,以满足严格的 schema 要求。 ([#7547](https://github.com/QwenLM/qwen-code/pull/7547)) by @chinesepowered - 修复 schema 转换,即使属性名匹配 JSON Schema 约束关键字(如 maximum)也能正确处理嵌套对象。 ([#7546](https://github.com/QwenLM/qwen-code/pull/7546)) by @chinesepowered - 静默 headless shell 终端中的 xterm.js 解析器诊断日志,以防止命令发出无效 ANSI 转义序列时泄露错误消息。 ([#7663](https://github.com/QwenLM/qwen-code/pull/7663)) by @mvanhorn - 通过声明 CommentStatusArgs 中的可选 host 参数并改进认证或网络故障的错误处理,强化审查技能。 ([#7708](https://github.com/QwenLM/qwen-code/pull/7708)) by @wenshao - 确保在流式循环中检测到循环触发提前返回时,StopFailure 钩子能正确触发,而不仅限于 API 错误。 ([#7592](https://github.com/QwenLM/qwen-code/pull/7592)) by @qwen-code-dev-bot - 通过将正确的 git 工作目录贯穿整个栈,为 Web Shell 中的 worktree 会话启用更改和历史记录对话框。 ([#7695](https://github.com/QwenLM/qwen-code/pull/7695)) by @wenshao - 严格解析 heatmapDays 查询参数,拒绝负数或小数等格式错误的值,回退到默认值而非钳位无效输入。 ([#7218](https://github.com/QwenLM/qwen-code/pull/7218)) by @VectorPeak - 将默认实时日志上限提高至 10,000 个事件和 8 MiB,同时暴露 --max-journal-events 和 --max-journal-bytes 标志以供配置。 ([#7715](https://github.com/QwenLM/qwen-code/pull/7715)) by @wenshao - 允许在 Web Shell 侧边栏中固定和分组次要工作区会话,无需先锁定工作区。 ([#7716](https://github.com/QwenLM/qwen-code/pull/7716)) by @wenshao - 修正审查提交门控审计,避免在检测到来自其他来源(如 triage 机器人)的有效同账户写入时错误声称已绕过。 ([#7718](https://github.com/QwenLM/qwen-code/pull/7718)) by @wenshao - 修复 QQ Bot 会话恢复问题:通过从 AcpBridge 返回输入的会话 ID,并确保即使验证失败也会运行会话补丁。 ([#7722](https://github.com/QwenLM/qwen-code/pull/7722)) by @Eric-GoodBoy-Tech - fix(core): 防止更新由扩展提供的代理 ([#7245](https://github.com/QwenLM/qwen-code/pull/7245)) by @destire-mio - fix(core): 当内置 ripgrep 无法运行时回退到系统 rg ([#7203](https://github.com/QwenLM/qwen-code/pull/7203)) by @harjothkhara - fix(core): 在 DashScope 思考过程中避免使用必需工具 ([#7661](https://github.com/QwenLM/qwen-code/pull/7661)) by @hogeheer499-commits - fix(channels): 在 GitHub 适配器中使用用户名作为 senderId 以修复白名单门控 ([#7727](https://github.com/QwenLM/qwen-code/pull/7727)) by @OrbitZore - fix(web-shell): 在 parseAnsi 中解析 256 色和真彩色 SGR 序列 ([#7620](https://github.com/QwenLM/qwen-code/pull/7620)) by @chinesepowered - fix(triage): 仅机器人自身的审批才算作已批准 ([#7737](https://github.com/QwenLM/qwen-code/pull/7737)) by @wenshao - fix(core): 停止为永远不会发生的间隔生成 humanReadableCron 名称 ([#7529](https://github.com/QwenLM/qwen-code/pull/7529)) by @chinesepowered - fix(cli): 在页脚更新后保持 IME 光标对齐 ([#7711](https://github.com/QwenLM/qwen-code/pull/7711)) by @water-in-stone - fix(core): 在批准退出 plan_mode 后从历史记录中脱敏计划参数 ([#7197](https://github.com/QwenLM/qwen-code/pull/7197)) by @zjunothing - fix(review): 修正借用透镜和空测试的严重性(#7735/#7736 的后续) ([#7746](https://github.com/QwenLM/qwen-code/pull/7746)) by @wenshao - fix(core): 可靠地传递手动计划退出通知 ([#7744](https://github.com/QwenLM/qwen-code/pull/7744)) by @doudouOUC - fix(review): 当计划省略 Han 标志时,从实时 PR 恢复双语寄存器 ([#7739](https://github.com/QwenLM/qwen-code/pull/7739)) by @wenshao - fix(cli): 补全重复的技能斜杠命令 ([#7720](https://github.com/QwenLM/qwen-code/pull/7720)) by @Sparkle6979 - fix(cli): 处理内联数学公式周围的转义美元符号 ([#7741](https://github.com/QwenLM/qwen-code/pull/7741)) by @CubeLander - fix(cli): 在多工具紧凑摘要中显示工具描述 ([#7589](https://github.com/QwenLM/qwen-code/pull/7589)) by @ovochouovo - fix(ci): 重命名 triage 状态标记以避免重复守卫冲突 ([#7723](https://github.com/QwenLM/qwen-code/pull/7723)) by @yiliang114 - fix(core): 将无 ID 的连续块路由到冲突的工具调用打开者的槽位 ([#6981](https://github.com/QwenLM/qwen-code/pull/6981)) by @he-yufeng - fix(autofix): 回复每个审查线程,仅解决实际已修复的线程 ([#7758](https://github.com/QwenLM/qwen-code/pull/7758)) by @wenshao - fix(core): 在 toOpenAPI30 中将 properties 视为名称映射 ([#7760](https://github.com/QwenLM/qwen-code/pull/7760)) by @chinesepowered - fix(core): 保留 gitignore 模式中的前导空格 ([#7763](https://github.com/QwenLM/qwen-code/pull/7763)) by @chinesepowered - fix(core): 防止尾部斜杠锚定嵌套的 gitignore 模式 ([#7764](https://github.com/QwenLM/qwen-code/pull/7764)) by @chinesepowered - fix(core): 当模型 ID 携带变体标签时保留模型名称 ([#7766](https://github.com/QwenLM/qwen-code/pull/7766)) by @chinesepowered - fix(weixin): 创建时即设为私有的账户凭证文件 ([#7726](https://github.com/QwenLM/qwen-code/pull/7726)) by @chinesepowered - fix(core): 停止重写 gitignore 模式中的反斜杠转义 ([#7765](https://github.com/QwenLM/qwen-code/pull/7765)) by @chinesepowered - fix(core): 将超时否决的范围限制在其出现的片段内 ([#7776](https://github.com/QwenLM/qwen-code/pull/7776)) by @chinesepowered - fix(core): 拒绝以 ] 开头的括号表达式的 sed 模式 ([#7775](https://github.com/QwenLM/qwen-code/pull/7775)) by @chinesepowered - fix(web-shell): 稳定移动端语音输入 ([#7806](https://github.com/QwenLM/qwen-code/pull/7806)) by @ytahdn - fix(test): 为每个 E2E 测试用例重新提供干净目录 ([#7811](https://github.com/QwenLM/qwen-code/pull/7811)) by @wenshao - fix(web-shell): 允许在无会话的新任务中执行 shell 命令 ([#7724](https://github.com/QwenLM/qwen-code/pull/7724)) by @wenshao - fix(triage): 将 /verify 通道的加固措施同步至 /tmux ([#7753](https://github.com/QwenLM/qwen-code/pull/7753)) by @wenshao - fix(web-shell): 将任务通知渲染为系统消息 ([#7822](https://github.com/QwenLM/qwen-code/pull/7822)) by @ytahdn - fix(ci): 在 qwen-triage 的容器作业中添加默认 bash shell ([#7838](https://github.com/QwenLM/qwen-code/pull/7838)) by @qwen-code-dev-bot - fix(web-shell): 在 composer 中保留粘贴的文本 ([#7824](https://github.com/QwenLM/qwen-code/pull/7824)) by @ytahdn - fix(ci): 为容器作业添加 git safe.directory 配置 ([#7843](https://github.com/QwenLM/qwen-code/pull/7843)) by @qwen-code-dev-bot - fix(ci): 为容器作业添加 --init 参数以回收僵尸进程 ([#7848](https://github.com/QwenLM/qwen-code/pull/7848)) by @qwen-code-dev-bot - fix(core): 在结算后台 shell 前等待输出流刷新完成 ([#7833](https://github.com/QwenLM/qwen-code/pull/7833)) by @ComplexSimply - fix(scripts): 重试模型调用并展示降级版的发布说明 ([#7535](https://github.com/QwenLM/qwen-code/pull/7535)) by @he-yufeng - fix(ci): 防止 worktree 清理操作导致 verify 作业失败 ([#7857](https://github.com/QwenLM/qwen-code/pull/7857)) by @qwen-code-dev-bot - fix(release): 发布所有通道包,而不仅仅是 channel-base ([#7845](https://github.com/QwenLM/qwen-code/pull/7845)) by @yiliang114 - fix(scripts): 强化重试分类逻辑并保留超时错误上下文 ([#7854](https://github.com/QwenLM/qwen-code/pull/7854)) by @yiliang114 - fix(core): 对永久性配额耗尽的 429 错误快速失败,而非静默重试 ([#7842](https://github.com/QwenLM/qwen-code/pull/7842)) by @yiliang114 - fix(web-shell): 隔离历史记录与会话草稿 ([#7810](https://github.com/QwenLM/qwen-code/pull/7810)) by @ytahdn - fix(triage): 在归咎于 PR 之前,先重试一次瞬态的 npm ci ([#7884](https://github.com/QwenLM/qwen-code/pull/7884)) by @wenshao - fix(webui): 在转录分页锚点处回退使用 history_truncated 标记的 recordId ([#7829](https://github.com/QwenLM/qwen-code/pull/7829)) by @wenshao - fix(review): 让审查重试使用剩余的时间预算 ([#7852](https://github.com/QwenLM/qwen-code/pull/7852)) by @wenshao - fix(integration): 为已提交提示词溯源测试配置 Docker 沙箱网络 (#7879) ([#7881](https://github.com/QwenLM/qwen-code/pull/7881)) by @qwen-code-dev-bot - fix(cli): 报告真实的 $0.00 成本而非 N/A ([#7784](https://github.com/QwenLM/qwen-code/pull/7784)) by @chinesepowered - fix(core): 拒绝 socks5h 和 socks4a 代理 URL ([#7786](https://github.com/QwenLM/qwen-code/pull/7786)) by @chinesepowered - fix(core): 修正 checkContentLoop 中的字符类 ([#7788](https://github.com/QwenLM/qwen-code/pull/7788)) by @chinesepowered - fix(web-shell): 使仅带索引的 /copy 命令生效 ([#7789](https://github.com/QwenLM/qwen-code/pull/7789)) by @chinesepowered - fix(core): 拒绝 -i 不在末尾的合并 sed 标志 ([#7790](https://github.com/QwenLM/qwen-code/pull/7790)) by @chinesepowered - fix(core): 将 Grep 模式放在 -e 之后传递,以避免前导连字符被误认为选项 ([#7863](https://github.com/QwenLM/qwen-code/pull/7863)) by @chinesepowered - fix(core): 像其他所有 getErrorMessage 路径一样,限制裸 Error 消息的长度 ([#7865](https://github.com/QwenLM/qwen-code/pull/7865)) by @chinesepowered - fix(cli): 使 wrapToVisualLines 像其兄弟函数一样计算零宽字符 ([#7873](https://github.com/QwenLM/qwen-code/pull/7873)) by @chinesepowered - fix(core): 将分隔符和省略号计入预览预算 ([#7874](https://github.com/QwenLM/qwen-code/pull/7874)) by @chinesepowered - fix(cli): 在重新打开分割围栏时,不计算部分尾部行 ([#7875](https://github.com/QwenLM/qwen-code/pull/7875)) by @chinesepowered - fix(cli): 使 /copy <message> <index> 选择代码块 ([#7883](https://github.com/QwenLM/qwen-code/pull/7883)) by @chinesepowered - fix(test): 恢复首次输出基准测试的测量有效性并修正其制品架构 ([#7820](https://github.com/QwenLM/qwen-code/pull/7820)) by @doudouOUC - fix(daemon): 加固 Todo 停止守卫的延续逻辑 ([#7821](https://github.com/QwenLM/qwen-code/pull/7821)) by @doudouOUC - fix(core): 从公共 git 目录读取 stash reflog ([#7774](https://github.com/QwenLM/qwen-code/pull/7774)) by @chinesepowered - fix(core): 在 toOpenAPI30 中保留 Draft 4 布尔值的互斥边界 ([#7782](https://github.com/QwenLM/qwen-code/pull/7782)) by @chinesepowered - fix(core): 将 maxDepth 应用于平面格式内存导入 ([#7851](https://github.com/QwenLM/qwen-code/pull/7851)) by @chinesepowered - fix(core): 渲染思考部分的推理内容而非布尔标志 ([#7866](https://github.com/QwenLM/qwen-code/pull/7866)) by @chinesepowered - fix(core): 为纯文本模型桥接工具结果图片 ([#7484](https://github.com/QwenLM/qwen-code/pull/7484)) by @LaZzyMan - fix(cli): 修补 ink 以在间接子树移除时清除 staticNode ([#7816](https://github.com/QwenLM/qwen-code/pull/7816)) by @chiga0 - fix(core): 在 API 调用期间自动重试瞬态网络错误 ([#7898](https://github.com/QwenLM/qwen-code/pull/7898)) by @chiga0 - fix(cli): 隐藏来自之前轮次的过期粘性待办事项 ([#7900](https://github.com/QwenLM/qwen-code/pull/7900)) by @chiga0 - fix(serve): 在关闭时释放托管会话写入器锁 ([#7812](https://github.com/QwenLM/qwen-code/pull/7812)) by @doudouOUC - fix(cli): 为 git 分支名称显示添加轮询回退机制 ([#7830](https://github.com/QwenLM/qwen-code/pull/7830)) by @qwen-code-dev-bot - fix(cli): 从 @mention 工具卡片中移除冗余的“Read file”前缀 ([#7902](https://github.com/QwenLM/qwen-code/pull/7902)) by @qwen-code-dev-bot - fix(safe-mode): 保留调用方提供的一级 MCP 服务器 ([#7827](https://github.com/QwenLM/qwen-code/pull/7827)) by @VitaliBabkin - fix(ci): 保持 main 分支上合并后的 E2E 信号存活 ([#7795](https://github.com/QwenLM/qwen-code/pull/7795)) by @wenshao - fix(core): 当输出流无法刷新时,短路刷新等待 ([#7905](https://github.com/QwenLM/qwen-code/pull/7905)) by @ComplexSimply - fix(core): 在 splitCommands 中跟踪命令替换内部的引号 ([#7870](https://github.com/QwenLM/qwen-code/pull/7870)) by @chinesepowered - fix(core): 将每个服务器和每个工具的 always-allow 结果计为批准 ([#7869](https://github.com/QwenLM/qwen-code/pull/7869)) by @chinesepowered - fix(web-shell): 在启动新聊天时向主机报告预期的工作区 ([#7910](https://github.com/QwenLM/qwen-code/pull/7910)) by @wenshao - fix(cli): 默认使用虚拟化的终端历史 ([#5738](https://github.com/QwenLM/qwen-code/pull/5738)) by @ZevGit - fix(ci): 在清理过程中恢复工作区所有权以防止 EACCES ([#7931](https://github.com/QwenLM/qwen-code/pull/7931)) by @qwen-code-dev-bot - fix(review): 当未重新传递 --effort 时恢复已解决的 effort ([#7855](https://github.com/QwenLM/qwen-code/pull/7855)) by @wenshao - fix(scripts): 精简发布说明模型提示词并记录请求耗时 ([#7941](https://github.com/QwenLM/qwen-code/pull/7941)) by @yiliang114 - fix(release): 在发布版本升级期间将 channel-base 依赖固定为确切版本 ([#7953](https://github.com/QwenLM/qwen-code/pull/7953)) by @yiliang114 - fix(triage): 使构建过程守卫具备可诊断性和僵尸进程感知能力 ([#7858](https://github.com/QwenLM/qwen-code/pull/7858)) by @wenshao - fix(ci): 为每个作业分配独立的代理包装器目录 ([#7951](https://github.com/QwenLM/qwen-code/pull/7951)) by @wenshao ### 性能优化 - perf(cli): 在守护进程路由中缓存 GitHub PR 列表,TTL 设为 60 秒 ([#7705](https://github.com/QwenLM/qwen-code/pull/7705)) by @wenshao - perf(core): 将易变的自动记忆部分置于系统提示词末尾 ([#7651](https://github.com/QwenLM/qwen-code/pull/7651)) by @DragonnZhang - perf(web-shell): 在 git 状态检查完成前预渲染 composer 的 git 标识 ([#7680](https://github.com/QwenLM/qwen-code/pull/7680)) by @wenshao - perf(core): 首次使用时懒加载依赖项 ([#7686](https://github.com/QwenLM/qwen-code/pull/7686)) by @doudouOUC - perf(cli): 替换 comment-json 配置解析器 ([#7747](https://github.com/QwenLM/qwen-code/pull/7747)) by @doudouOUC - perf(acp): 会话创建后预加载提供者 ([#7767](https://github.com/QwenLM/qwen-code/pull/7767)) by @doudouOUC - perf(core): 在稳定的系统前缀处添加早期 Anthropic 缓存断点 ([#7912](https://github.com/QwenLM/qwen-code/pull/7912)) by @DragonnZhang - perf(ci): 将 E2E 测试套件运行时间从约 40 分钟缩短至约 24 分钟 ([#7798](https://github.com/QwenLM/qwen-code/pull/7798)) by @wenshao ### 文档 - docs(channels): 补充循环与主动推送机制的文档说明 ([#7628](https://github.com/QwenLM/qwen-code/pull/7628)) by @wenshao ### 内部改进 - refactor(autofix): 提取审查验证运行器 ([#7644](https://github.com/QwenLM/qwen-code/pull/7644)) by @qqqys - test(web-shell): 在可视化测试套件中捕获 git 模式的新分支子状态 ([#7672](https://github.com/QwenLM/qwen-code/pull/7672)) by @wenshao - 重构系统提示词组装逻辑,采用分层构建器以显式管理稳定层、上下文层和易变指令层。 ([#7707](https://github.com/QwenLM/qwen-code/pull/7707)) by @DragonnZhang - 新增回归测试,验证恢复会话的对话记录分页能正确对边界进行 URL 编码,并在重试时保持状态。 ([#7657](https://github.com/QwenLM/qwen-code/pull/7657)) by @jay666mnj - test(cli): 覆盖虚拟列表底部固定行为的测试用例 ([#7652](https://github.com/QwenLM/qwen-code/pull/7652)) by @jay666mnj - ci: 当 npm 无法响应时,确保关键审计门禁机制严格把关 ([#7743](https://github.com/QwenLM/qwen-code/pull/7743)) by @wenshao - test(integration): 修复工具控制权限测试用例的不稳定问题 ([#7725](https://github.com/QwenLM/qwen-code/pull/7725)) by @yiliang114 - revert: 移除陈旧基础分支的恢复机制 (#7602) ([#7640](https://github.com/QwenLM/qwen-code/pull/7640)) by @wenshao - test(serve): 新增首字输出延迟基准测试 ([#7761](https://github.com/QwenLM/qwen-code/pull/7761)) by @doudouOUC - test(channels): 在 CI 中运行飞书、微信和 QQ 机器人测试套件 ([#7853](https://github.com/QwenLM/qwen-code/pull/7853)) by @chinesepowered ## 新贡献者 - @jay666mnj 在 [#7674](https://github.com/QwenLM/qwen-code/pull/7674) 中完成了首次贡献 - @harjothkhara 在 [#7203](https://github.com/QwenLM/qwen-code/pull/7203) 中完成了首次贡献 - @PratikWayase 在 [#7709](https://github.com/QwenLM/qwen-code/pull/7709) 中完成了首次贡献 - @Sparkle6979 在 [#7720](https://github.com/QwenLM/qwen-code/pull/7720) 中完成了首次贡献 - @VitaliBabkin 在 [#7827](https://github.com/QwenLM/qwen-code/pull/7827) 中完成了首次贡献 **完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.21.0...v0.21.1