Skip to content

ツール使用概要

VJSP は、AI モデルが開発環境と制御され安全な方法で対話できる高度なツールシステムを実装しています。このドキュメントでは、ツールの仕組み、呼び出されるタイミング、および管理方法について説明します。

コアコンセプト

ツールグループ

ツールは機能ごとに論理的にグループ分けされています:

カテゴリ目的ツール主なユースケース
Read Group(読み取りグループ)ファイルシステムの読み取りおよび検索read_filesearch_fileslist_fileslist_code_definition_namesコードの探索および分析
Edit Group(編集グループ)ファイルシステムの変更apply_diffwrite_to_fileコード変更およびファイル操作
Browser Group(ブラウザグループ)Web 自動化browser_actionWeb テストおよびインタラクション
Command Group(コマンドグループ)システムコマンド実行execute_commandスクリプト実行、プロジェクトビルド
MCP Group(MCP グループ)外部ツール統合use_mcp_toolaccess_mcp_resource外部サーバー経由での特殊機能利用
Workflow Group(ワークフローグループ)モードおよびタスク管理switch_modenew_taskask_followup_questionattempt_completionコンテキスト切り替えおよびタスク整理

常時利用可能なツール

以下のツールはどのモードでも利用可能です:

利用可能なツール

読み取りツール

これらのツールは VJSP がコードやプロジェクトを理解するのに役立ちます:

編集ツール

これらのツールは VJSP がコードを変更するのに役立ちます:

  • apply_diff – 正確なコード修正を適用
  • write_to_file – 新規ファイル作成または既存ファイルの完全上書き

ブラウザツール

これらのツールは VJSP が Web アプリケーションと対話するのに役立ちます:

コマンドツール

これらのツールは VJSP がコマンドを実行するのに役立ちます:

  • execute_command – システムコマンドおよびプログラムを実行

MCP ツール

これらのツールは VJSP が外部サービスに接続するのに役立ちます:

ワークフローツール

これらのツールは会話およびタスクフローの管理に役立ちます:

ツール呼び出しメカニズム

ツールが呼び出されるタイミング

ツールは以下の特定の条件のもとで呼び出されます:

  1. 直接的なタスク要件

    • LLM が判断したタスクを完了するために特定の操作が必要な場合
    • ユーザーからのリクエストに応じて
    • 自動化されたワークフロー内
  2. モードに基づく可用性

    • モードによって利用可能なツールセットが異なる
    • モード切り替えによりツールの可用性が変化
    • 一部のツールは特定のモードに限定
  3. コンテキスト依存の呼び出し

    • ワークスペースの現在の状態に基づいて
    • システムイベントに応じて
    • エラー処理および復旧中に

決定プロセス

システムは、ツールの可用性を判断するために複数のステップを踏みます:

  1. モード検証

    typescript
    isToolAllowedForMode(
        tool: string,
        modeSlug: string,
        customModes: ModeConfig[],
        toolRequirements?: Record<string, boolean>,
        toolParams?: Record<string, any>
    )
  2. 要件チェック

    • システム機能の検証
    • リソースの可用性
    • 権限の検証
  3. パラメータ検証

    • 必須パラメータの存在確認
    • パラメータ型チェック
    • 値の検証

技術的実装

ツール呼び出し処理

  1. 初期化

    • ツール名および引数の検証
    • モード互換性のチェック
    • 要件の確認
  2. 実行

    typescript
    const toolCall = {
        type: "tool_call",
        name: chunk.name,
        arguments: chunk.input,
        callId: chunk.callId
    }
  3. 結果処理

    • 成功/失敗の判定
    • 結果の整形
    • エラー処理

セキュリティと権限

  1. アクセス制御

    • ファイルシステム制限
    • コマンド実行制限
    • ネットワークアクセス制御
  2. 検証レイヤー

    • ツール固有の検証
    • モードベースの制限
    • システムレベルのチェック

モード統合

モードに基づくツールアクセス

ツールは現在のモードに基づいて利用可能になります:

  • Code Mode(コードモード):ファイルシステムツール、コード編集機能、コマンド実行へのフルアクセス
  • Ask Mode(質問モード):読み取りツールおよび情報収集機能に限定;ファイルシステムの変更不可
  • Architect Mode(アーキテクトモード):設計指向のツールおよびドキュメント機能に特化し、実行権限は限定
  • Custom Modes(カスタムモード):特殊なワークフロー向けに設定可能なツールアクセス

モード切り替え

  1. プロセス

    • 現在のモード状態を保存
    • ツールの可用性を更新
    • コンテキスト切り替えを実行
  2. ツールへの影響

    • 利用可能なツールセットの変化
    • 権限の調整
    • コンテキストの保持

ベストプラクティス

ツール使用ガイドライン

  1. 効率性

    • タスクに最も適したツールを使用
    • 冗長なツール呼び出しを避ける
    • 可能な限りバッチ処理を行う
  2. セキュリティ

    • ツール呼び出し前に入力を検証
    • 最小権限の原則を適用
    • セキュリティに関するベストプラクティスに従う
  3. エラー処理

    • 適切なエラーチェックを実装
    • 意味のあるエラーメッセージを提供
    • エラーをグレースフルに処理

一般的なパターン

  1. 情報収集
[ask_followup_question](/feature/tools/ask_followup_question) → [read_file](/feature/tools/read_file) → [search_files](/feature/tools/search_files)
  1. コード変更
[read_file](/feature/tools/read_file) → [apply_diff](/feature/tools/apply_diff) → [attempt_completion](/feature/tools/attempt_completion)
  1. タスク管理
[new_task](/feature/tools/new_task) → [switch_mode](/feature/tools/switch_mode) → [execute_command](/feature/tools/execute_command)
  1. 進捗追跡
   [update_todo_list](/feature/tools/update_todo_list) → [execute_command](/feature/tools/execute_command) → [update_todo_list](/feature/tools/update_todo_list)

エラー処理と復旧

エラーの種類

  1. ツール固有のエラー

    • パラメータ検証エラー
    • 実行エラー
    • リソースアクセス問題
  2. システムエラー

    • 権限拒否
    • リソース利用不可
    • ネットワーク障害
  3. コンテキストエラー

    • ツールに対して無効なモード
    • 必須要件の欠如
    • 状態の不整合

復旧戦略

  1. 自動復旧

    • リトライ機構
    • フォールバックオプション
    • 状態復元
  2. ユーザー介入

    • エラー通知
    • 復旧提案
    • 手動介入オプション