ツール使用概要
VJSP は、AI モデルが開発環境と制御され安全な方法で対話できる高度なツールシステムを実装しています。このドキュメントでは、ツールの仕組み、呼び出されるタイミング、および管理方法について説明します。
コアコンセプト
ツールグループ
ツールは機能ごとに論理的にグループ分けされています:
| カテゴリ | 目的 | ツール | 主なユースケース |
|---|---|---|---|
| Read Group(読み取りグループ) | ファイルシステムの読み取りおよび検索 | read_file、search_files、list_files、list_code_definition_names | コードの探索および分析 |
| Edit Group(編集グループ) | ファイルシステムの変更 | apply_diff、write_to_file | コード変更およびファイル操作 |
| Browser Group(ブラウザグループ) | Web 自動化 | browser_action | Web テストおよびインタラクション |
| Command Group(コマンドグループ) | システムコマンド実行 | execute_command | スクリプト実行、プロジェクトビルド |
| MCP Group(MCP グループ) | 外部ツール統合 | use_mcp_tool、access_mcp_resource | 外部サーバー経由での特殊機能利用 |
| Workflow Group(ワークフローグループ) | モードおよびタスク管理 | switch_mode、new_task、ask_followup_question、attempt_completion | コンテキスト切り替えおよびタスク整理 |
常時利用可能なツール
以下のツールはどのモードでも利用可能です:
- ask_followup_question:ユーザーから追加情報を収集
- attempt_completion:タスク完了をマーク
- switch_mode:動作モードを変更
- new_task:サブタスクを作成
- update_todo_list:ステップバイステップのタスク進捗を管理
利用可能なツール
読み取りツール
これらのツールは VJSP がコードやプロジェクトを理解するのに役立ちます:
- read_file – ファイルの内容を確認
- search_files – 複数ファイルにわたってパターンを検索
- list_files – プロジェクトのファイル構造をマッピング
- list_code_definition_names – コード構造のマップを生成
編集ツール
これらのツールは VJSP がコードを変更するのに役立ちます:
- apply_diff – 正確なコード修正を適用
- write_to_file – 新規ファイル作成または既存ファイルの完全上書き
ブラウザツール
これらのツールは VJSP が Web アプリケーションと対話するのに役立ちます:
- browser_action – ブラウザ操作を自動化
コマンドツール
これらのツールは VJSP がコマンドを実行するのに役立ちます:
- execute_command – システムコマンドおよびプログラムを実行
MCP ツール
これらのツールは VJSP が外部サービスに接続するのに役立ちます:
- use_mcp_tool – 専門的な外部ツールを利用
- access_mcp_resource – 外部データソースにアクセス
ワークフローツール
これらのツールは会話およびタスクフローの管理に役立ちます:
- ask_followup_question – ユーザーから追加情報を収集
- attempt_completion – 最終結果を提示
- switch_mode – 専門タスク向けに異なるモードに切り替え
- new_task – 新しいサブタスクを作成
- update_todo_list – ステップバイステップのチェックリストでタスク進捗を追跡
ツール呼び出しメカニズム
ツールが呼び出されるタイミング
ツールは以下の特定の条件のもとで呼び出されます:
直接的なタスク要件
- LLM が判断したタスクを完了するために特定の操作が必要な場合
- ユーザーからのリクエストに応じて
- 自動化されたワークフロー内
モードに基づく可用性
- モードによって利用可能なツールセットが異なる
- モード切り替えによりツールの可用性が変化
- 一部のツールは特定のモードに限定
コンテキスト依存の呼び出し
- ワークスペースの現在の状態に基づいて
- システムイベントに応じて
- エラー処理および復旧中に
決定プロセス
システムは、ツールの可用性を判断するために複数のステップを踏みます:
モード検証
typescriptisToolAllowedForMode( tool: string, modeSlug: string, customModes: ModeConfig[], toolRequirements?: Record<string, boolean>, toolParams?: Record<string, any> )要件チェック
- システム機能の検証
- リソースの可用性
- 権限の検証
パラメータ検証
- 必須パラメータの存在確認
- パラメータ型チェック
- 値の検証
技術的実装
ツール呼び出し処理
初期化
- ツール名および引数の検証
- モード互換性のチェック
- 要件の確認
実行
typescriptconst toolCall = { type: "tool_call", name: chunk.name, arguments: chunk.input, callId: chunk.callId }結果処理
- 成功/失敗の判定
- 結果の整形
- エラー処理
セキュリティと権限
アクセス制御
- ファイルシステム制限
- コマンド実行制限
- ネットワークアクセス制御
検証レイヤー
- ツール固有の検証
- モードベースの制限
- システムレベルのチェック
モード統合
モードに基づくツールアクセス
ツールは現在のモードに基づいて利用可能になります:
- Code Mode(コードモード):ファイルシステムツール、コード編集機能、コマンド実行へのフルアクセス
- Ask Mode(質問モード):読み取りツールおよび情報収集機能に限定;ファイルシステムの変更不可
- Architect Mode(アーキテクトモード):設計指向のツールおよびドキュメント機能に特化し、実行権限は限定
- Custom Modes(カスタムモード):特殊なワークフロー向けに設定可能なツールアクセス
モード切り替え
プロセス
- 現在のモード状態を保存
- ツールの可用性を更新
- コンテキスト切り替えを実行
ツールへの影響
- 利用可能なツールセットの変化
- 権限の調整
- コンテキストの保持
ベストプラクティス
ツール使用ガイドライン
効率性
- タスクに最も適したツールを使用
- 冗長なツール呼び出しを避ける
- 可能な限りバッチ処理を行う
セキュリティ
- ツール呼び出し前に入力を検証
- 最小権限の原則を適用
- セキュリティに関するベストプラクティスに従う
エラー処理
- 適切なエラーチェックを実装
- 意味のあるエラーメッセージを提供
- エラーをグレースフルに処理
一般的なパターン
- 情報収集
[ask_followup_question](/feature/tools/ask_followup_question) → [read_file](/feature/tools/read_file) → [search_files](/feature/tools/search_files)- コード変更
[read_file](/feature/tools/read_file) → [apply_diff](/feature/tools/apply_diff) → [attempt_completion](/feature/tools/attempt_completion)- タスク管理
[new_task](/feature/tools/new_task) → [switch_mode](/feature/tools/switch_mode) → [execute_command](/feature/tools/execute_command)- 進捗追跡
[update_todo_list](/feature/tools/update_todo_list) → [execute_command](/feature/tools/execute_command) → [update_todo_list](/feature/tools/update_todo_list)エラー処理と復旧
エラーの種類
ツール固有のエラー
- パラメータ検証エラー
- 実行エラー
- リソースアクセス問題
システムエラー
- 権限拒否
- リソース利用不可
- ネットワーク障害
コンテキストエラー
- ツールに対して無効なモード
- 必須要件の欠如
- 状態の不整合
復旧戦略
自動復旧
- リトライ機構
- フォールバックオプション
- 状態復元
ユーザー介入
- エラー通知
- 復旧提案
- 手動介入オプション
