switch_mode
switch_mode ツールは、VJSPが異なる実行モード間を切り替えることをサポートします。各モードは特定のタスクタイプに対応した専門的な機能を備えています。現在のタスクが異なる専門的な能力を必要とする場合、コードモード、アーキテクチャモード、コンサルティングモード、デバッグモードなどのモード間をシームレスに切り替えることができます。
パラメータ説明
このツールは以下のパラメータを受け付けます:
mode_slug(必須):切り替え先の目標モードの識別子(例:"code"、"ask"、"architect")reason(オプション):モード切り替えの理由。ユーザーに操作のコンテキスト説明を提供します。
機能作用
現在のタスクが他のモードの機能によってより適切に処理される場合、このツールを使用してモード切り替え要求を発行できます。ツールはモード切り替えを完了すると、VJSPのコアフォーカス方向と利用可能なツールセットを新しいタスクフェーズの要件に合わせて調整し、同時にタスクコンテキストの継続性を維持します。
適用シナリオ
- 情報収集フェーズからコード実装フェーズに移行する場合
- コード開発からアーキテクチャ設計に切り替える場合
- 現在のタスクが他のモードにのみ存在する専用機能の呼び出しを必要とする場合
- 複雑なプロジェクトの特定のフェーズで専門分野の能力が必要とされる場合
コア特性
- クロスモード切り替え時にタスクコンテキストの継続性を維持
- モード切り替えの提案に明確な理由を提供
- すべてのモード切り替え操作にはユーザーの確認が必要
- 各モード固有のツールグループ使用制限を厳格に実行
- 選択されたモードに基づいて利用可能なツールセットをシームレスに適応
- 標準モードとカスタムモードの両方の切り替えをサポート
- ユーザーインターフェースにモード切り替え操作と対応する理由を表示
- XML形式を採用してパラメータ定義を規格化
- 特定のモードに対応するファイルタイプ制限ルールに適応
制限事項
- システムで定義されていないモードには切り替えられません
- 各モード切り替えにはユーザーの明示的な確認が必要
- モード切り替えが完了するまで、目標モードの専用ツールを呼び出すことはできません
- モード切り替え後に500ミリ秒の遅延がトリガーされ、切り替え操作が有効になることを確保します
- 一部のモードにはファイルタイプの制限があります(例:アーキテクチャモードではMarkdownファイルの編集のみがサポートされます)
- モード復元保持メカニズムは
new_task機能にのみ適用され、通常のモード切り替え操作には作用しません
実行フロー
switch_modeツールを呼び出すと、以下のフローで実行されます:
リクエスト検証
- 切り替え先の目標モードがシステムで定義されているかを検証
- 必須パラメータ
mode_slugが渡されているか、また形式が適切であるかを検証 - 現在のシステムがすでに目標モードではないことを確認
- オプションパラメータ
reasonが渡されている場合、その形式が適切であるかを検証
切り替え準備
- モード切り替え要求と渡された理由情報をパッケージ化
- ユーザーにモード切り替え要求を表示し、確認を待ちます
モードアクティベーション(ユーザー確認後)
- ユーザーインターフェースを更新し、現在切り替えられた新しいモードを表示
- 目標モードのツールグループ設定に従って、システムの利用可能なツールセットを調整
- 目標モード固有のプロンプトと行動規則をロード
- 後続のツール呼び出しを実行する前にモード切り替えが有効になることを確保するために、500ミリ秒の遅延をトリガー
- 目標モードに対応するファイルタイプ制限ルールを有効にする
タスク続行
- 新しいモードの機能に基づいて現在のタスクを受け取り、実行を続けます
- 前のインタラクションプロセスの関連するタスクコンテキストを保持
ツールグループ所属
switch_modeツールは「モード(modes)」ツールグループに属し、同時に「グローバル可用(always available)」ツールリストに含まれており、以下の特性を備えています:
- モードツールグループの設定に制限されず、任意のモードで呼び出すことができます
ask_followup_question、attempt_completionなどのコアツールとグローバルに共存- タスクの要件が変更された場合、ワークフローの任意のノードでモード切り替えを発行できます
モード構造
システム内の各モードは以下の固定構造定義に従っています:
slug:モードの一意の識別子(例:"code"、"ask")name:モードのインターフェース表示名(例:"Code"、"Ask")roleDefinition:モードの専用役割位置づけとコア能力の説明customInstructions:オプション設定で、モードの行動を指導する専用ルールgroups:モードが呼び出すことのできるツールグループのリストで、専用使用制限の設定をサポート
モード能力
システムのコアモードは以下の専用能力を備えています:
- コードモード:コード開発タスクに特化し、全量のコード編集ツールの呼び出しをサポート
- アーキテクチャモード:システム設計とアーキテクチャ計画専用で、Markdownファイルの編集のみをサポート
- コンサルティングモード:質問応答と情報提供のシナリオに最適化
- デバッグモード:体系的な問題診断と故障解決能力を装備
カスタムモード
コアモードに加えて、システムは特定のプロジェクト要件に基づいてカスタムモードを定義することをサポートしており、以下の特性を備えています:
- カスタムモードに専用に有効にするツールグループを設定できます
- モードの役割位置づけと行動規則をカスタマイズできます
- システムはカスタムモードを優先的に検証し、一致しない場合はコアモードを呼び出します
- カスタムモードがコアモードと同じ識別子(slug)を持つ場合、カスタムモードの定義がコアモードを上書きします
ファイルタイプ制限
異なるモードは専用のファイルタイプ制限ルールを設定でき、コアルールは以下の通りです:
- アーキテクチャモード:拡張子が
.mdのファイルの編集のみをサポート - 制限されたファイルタイプを編集しようとすると、システムは
FileRestrictionError例外をスローします - この制限メカニズムは、異なるモードの責任境界を明確にし、タスクの分担を明確にするために使用されます
典型的な応用例
- 新機能の要件について討論する場合、VJSPはコンサルティングモードからアーキテクチャモードに切り替え、システム構造設計を支援します
- アーキテクチャ計画がアーキテクチャモードで完了した後、VJSPはコードモードに切り替え、設計された機能を実装します
- 開発中にプログラムの不具合に遭遇した場合、VJSPはコードモードからデバッグモードに切り替え、体系的な問題調査を実施します
呼び出し例
機能実装のためにコードモードに切り替える:
<switch_mode>
<mode_slug>code</mode_slug>
<reason>確認済みのアーキテクチャ方案に基づき、ログイン機能モジュールを実装</reason>
</switch_mode>方案設計のためにアーキテクチャモードに切り替える:
<switch_mode>
<mode_slug>architect</mode_slug>
<reason>機能実装前に、システム全体のアーキテクチャ方案設計を完了</reason>
</switch_mode>問題調査のためにデバッグモードに切り替える:
<switch_mode>
<mode_slug>debug</mode_slug>
<reason>認証フローで発生した異常に対して体系的な診断調査を実施</reason>
</switch_mode>質問応答のためにコンサルティングモードに切り替える:
<switch_mode>
<mode_slug>ask</mode_slug>
<reason>実装済みの機能モジュールに関する相談質問に回答</reason>
</switch_mode>