Skip to Content
设计Hot Reload热重载整体方案

热重载整体方案

本目录跟踪 issue #3696  的设计工作:为 skill、extension、MCP 服务器、LSP 服务器和运行时配置构建一个全面的热重载系统。

目标

用户应能够在不重启当前 Qwen Code 会话的情况下,更新 skill、extension 状态、MCP/LSP 配置以及支持的设置。系统应在保留对话上下文的同时,使运行时状态的变化可预测且可见。

子任务拆解

热重载方案包含 6 个顶层子任务。为了便于实现,当前的跟踪 issue 将子任务 3 拆分为 3a3b,因此执行清单包含 7 个条目

任务范围状态设计文档
1设置文件变更检测已在 #4933 中完成settings-change-detection.md
2Skill 热重载改进已通过 #2415 和 #3923 完成不在本目录中
3aMCP 服务器运行时重新初始化正通过 #5561 进行中mcp-runtime-reinitialization.md
3bLSP 服务器运行时重新初始化进行中lsp-runtime-reinitialization.md
4统一的刷新/缓存编排未开始待定
5面向用户的 /reload 斜杠命令未开始待定
6needsRefresh 应用状态/UI 通知未开始待定

文档映射

  • settings-change-detection.md 对应 子任务 1:设置文件变更检测。它提供了 watcher 基础设施:检测受支持的 settings.json 变更,从磁盘重新加载设置,并通知监听器。它有意不将更新后的值推送到 Config 快照中,也不重启运行时子系统。
  • mcp-runtime-reinitialization.md 对应 子任务 3a:MCP 服务器运行时重新初始化。它消费设置变更事件,更新运行时 MCP 配置,并增量协调活跃的 MCP 连接。原始 issue 将 MCP 和 LSP 归在顶层子任务 3 下;本文档仅涵盖 MCP 部分。
  • lsp-runtime-reinitialization.md 对应 子任务 3b:LSP 服务器运行时重新初始化。它监听工作区 .lsp.json 的变更,复用现有的原生 LSP 客户端,并增量协调活跃的 LSP 服务器。

实现顺序

  1. 将子任务 1 作为基础:检测并分发设置变更,但由消费者决定刷新什么。
  2. 完成子任务 3a,使 MCP 服务器的添加、移除和配置编辑能够在运行时生效。
  3. 添加子任务 3b 以实现 LSP 运行时重新初始化,采用相同的原则:更新运行时配置,停止受影响的服务器,并仅重启发生变更的部分。
  4. 引入子任务 4 作为跨 skill、命令、提示词、extension、MCP 和 LSP 的缓存与运行时刷新的共享编排层。
  5. 添加子任务 5 作为用户的手动入口:/reload 应调用统一的编排路径并报告变更内容。
  6. 添加子任务 6 以处理后台变更的 UX:当检测到的变更无法或不应自动完全应用时,设置 needsRefresh,然后提示用户运行 /reload

设计原则

保持各层职责专一:

  • 文件监听负责检测并报告设置变更;
  • 子系统重新初始化仅更新受影响的运行时状态;
  • 统一编排负责按顺序执行现有的刷新操作;
  • UI 命令和通知对外暴露该行为,而不重复实现重载逻辑。
Last updated on