ホットリロード全体計画
このディレクトリは、issue #3696 の設計作業を追跡するものです。これは、skill、extension、MCP サーバー、LSP サーバー、およびランタイム設定のための包括的なホットリロードシステムに関するものです。
目標
ユーザーは、現在の Qwen Code セッションを再起動することなく、skill、extension の状態、MCP/LSP の設定、およびサポートされている設定を更新できるようにする必要があります。システムは、ランタイム状態の変更を予測可能かつ可視化しつつ、会話のコンテキストを保持する必要があります。
サブタスクの内訳
ホットリロード計画には 6 つの最上位サブタスク があります。現在追跡中の issue では、実装を明確にするためにサブタスク 3 を 3a と 3b に分割しているため、実行チェックリストには 7 つのエントリ が含まれています。
| タスク | 範囲 | ステータス | 設計ドキュメント |
|---|---|---|---|
| 1 | 設定ファイルの変更検出 | #4933 で完了 | settings-change-detection.md |
| 2 | skill のホットリロードの改善 | #2415 および #3923 により完了 | このディレクトリにはありません |
| 3a | MCP サーバーのランタイム再初期化 | #5561 により進行中 | mcp-runtime-reinitialization.md |
| 3b | LSP サーバーのランタイム再初期化 | 進行中 | lsp-runtime-reinitialization.md |
| 4 | 統合されたリフレッシュ/キャッシュのオーケストレーション | 未開始 | 保留中 |
| 5 | ユーザー向け /reload スラッシュコマンド | 未開始 | 保留中 |
| 6 | needsRefresh アプリ状態/UI 通知 | 未開始 | 保留中 |
ドキュメントのマッピング
settings-change-detection.mdは サブタスク 1: 設定ファイルの変更検出 に対応します。これはウォッチャーインフラストラクチャを提供します。サポートされている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 を基盤として維持します。設定の変更が検出およびディスパッチされますが、何をリフレッシュするかはコンシューマーが決定します。
- サブタスク 3a を完了させ、MCP サーバーの追加、削除、および設定の編集がランタイムで有効になるようにします。
- 同じ原則を使用して LSP ランタイム再初期化のためのサブタスク 3b を追加します。ランタイム設定を更新し、影響を受けるサーバーを停止し、変更されたもののみを再起動します。
- skill、command、prompt、extension、MCP、および LSP 全体でのキャッシュおよびランタイムリフレッシュのための共有オーケストレーションレイヤーとして、サブタスク 4 を導入します。
- 手動のユーザーエントリーポイントとしてサブタスク 5 を追加します。
/reloadは統合オーケストレーションパスを呼び出し、何が変更されたかを報告する必要があります。 - バックグラウンド変更の UX のためにサブタスク 6 を追加します。検出された変更を自動的に完全に適用できない、または適用すべきでない場合に
needsRefreshを設定し、ユーザーに/reloadの実行を促します。
設計原則
各レイヤーの範囲を狭く保ちます。
- ファイルウォッチングは設定の変更を検出して報告します。
- サブシステムの再初期化は、影響を受けたランタイム状態のみを更新します。
- 統合オーケストレーションは、既存のリフレッシュ操作を順序立てて実行します。
- UI コマンドと通知は、リロードロジックを重複させることなく、この動作を公開します。
Last updated on