execute_command
execute_commandツールは、ユーザーシステム上でCLI(コマンドラインインターフェース)コマンドを実行するために使用されます。これにより、VJSPはシステム操作、依存関係のインストール、プロジェクトのビルド、サーバーの起動、その他の端末ベースのタスクを実行して、ユーザーの目標を達成することができます。
パラメータ
このツールは以下のパラメータを受け取ります:
command(必須):実行するCLIコマンド。ユーザーのオペレーティングシステムで有効でなければなりません。cwd(オプション):コマンドを実行する作業ディレクトリ。指定されていない場合は、現在の作業ディレクトリが使用されます。
機能
このツールはユーザーシステム上で直接端末コマンドを実行し、ファイル操作から開発サーバーの実行まで、多様な操作をサポートします。コマンドはホストされた端末インスタンスで実行され、リアルタイムに出力がキャプチャされ、最適なパフォーマンスとセキュリティのために統合開発環境の端末システムとシームレスに統合されます。
使用シナリオ
- プロジェクトの依存関係のインストール(
npm install、pip installなど) - コードのビルドまたはコンパイル(
make、npm run buildなど) - 開発サーバーの起動またはアプリケーションの実行
- 新しいプロジェクトの初期化(
git init、npm initなど) - 他のツールの機能を超えた高度なファイル操作の実行
- テストスイートまたはコードチェック(lint)操作の実行
- 特定の技術スタックに必要な専用コマンドの実行
主な機能
- 信頼性の高い端末実行のためのIDEシェルAPIとの深度な統合
- レジストリシステムによる端末インスタンスのインテリジェントな再利用、リソース消費の削減
- コマンド出力のリアルタイムキャプチャとストリーミング
- 長時間実行するバックグラウンドコマンド(開発サーバーなど)のサポート
- 実行コンテキストを柔軟に制御するためのカスタム作業ディレクトリの指定許可
- コマンド実行間での端末履歴と環境状態の維持
- ユーザーのシェルに適した複雑なコマンドチェーン(パイプ、リダイレクトなど)のインテリジェントな処理
- 詳細なコマンド完了状態と終了コードの説明
- ユーザーフィードバックを必要とするインタラクティブな端末アプリケーションのサポート
- 操作の透明性を確保するために実行中の端末をリアルタイムで表示
- shell-quote解析技術を使用したコマンドの安全性の検証
- 潜在的に危険なサブシェル実行パターン(
$(...)、バッククォートなど)の積極的なブロック - コマンドのファイル操作権限を精確に制御するためのファイルアクセス制御ルールとの統合
- 出力内容を整理して読みやすくするための端末エスケープシーケンスの自動処理
制限事項
- コマンドのアクセスはセキュリティポリシーと検証ルールによって制限される場合があります
- システム特権の昇格を必要とするコマンドは、追加のユーザー設定が必要になる場合があります
- 特定のコマンドの動作は、オペレーティングシステムによって異なる場合があります
- 長時間実行するコマンドは、特別なリソース管理処理が必要になる場合があります
- ファイルパスは、オペレーティングシステムのシェルルールに従って正しくエスケープする必要があります
- リモート開発シナリオでは、一部の高度な端末機能が制限される場合があります
動作原理
execute_commandツールが呼び出されると、以下のシステム的なプロセスに従います:
コマンドの検証とセキュリティチェック:
- shell-quoteを使用してコマンドを解析し、個々のコンポーネントを識別
- セキュリティポリシーに従ってコマンドを検証(サブシェルの使用、制限されたファイルアクセスなどのチェック)
- ファイルアクセス制御ルールに従ってコマンドのファイル操作権限をチェック
- コマンドがシステムのセキュリティ要件とベストプラクティスに準拠していることを確認
端末管理:
- TerminalRegistryを通じて端末インスタンスを取得または作成
- 指定された作業ディレクトリのコンテキストを設定
- 出力キャプチャのためのイベントリスナーを構成
- ユーザーが実行をリアルタイムで監視できるように端末インターフェースを表示
コマンドの実行と監視:
- IDEのシェル統合APIを介してコマンドを実行
- エスケープシーケンスを含む出力をキャプチャし、インテリジェントに処理
- UIの過負荷を防ぐために100msのスロットリング間隔で出力を処理
- コマンドの完了状態またはエラー状態を継続的に監視
- 「ホット」プロセス(コンパイラ、開発サーバーなど)を検出して特別な最適化処理を行う
結果処理:
- 出力を整理するためにANSI/IDEエスケープシーケンスを自動的に削除
- 終了コードを解析・解釈し、詳細なシグナル情報を提供
- 作業ディレクトリの変更を自動的に追跡・更新
- 完全なコンテキストを含むコマンド実行状態レポートを提供
端末実装の詳細
このツールは、高度で効率的な端末管理システムを採用しています:
インテリジェントな端末再利用:
- TerminalRegistryは既存の端末インスタンスの再利用を優先
- 端末インスタンスの数を減らし、パフォーマンスを大幅に向上
- コマンド実行間で端末状態(作業ディレクトリ、履歴、環境変数)を保持
多層セキュリティ検証:
- shell-quote解析を使用したコマンドコンポーネントの深層分析
$(...)やバッククォートなどの危険な実行パターンを積極的にブロック- ファイルアクセス制御ルールに従ってコマンドのファイル操作権限をチェック
- コマンドパターンの安全性を検証するプレフィックス許可リストシステムを実装
パフォーマンス最適化戦略:
- 100msのスロットリング間隔で出力を処理し、リアルタイムパフォーマンスとシステムリソース消費のバランスを図る
- 処理効率を最大化するためのインデックスベースのゼロコピーバッファ管理
- コンパイルプロセスや「ホット」プロセスに特別なパフォーマンス最適化を実装
- Windows PowerShellなどの環境向けのプラットフォーム固有の適応最適化を含む
ロバストなエラーとシグナル処理:
- 終了コードを詳細なシグナル情報(SIGTERM、SIGKILLなど)にマッピング
- コアダンプを検出して重大なシステム障害を迅速に識別
- 作業ディレクトリの変更を自動的に追跡・処理
- 端末の切断などの異常シナリオからグレースフルに回復
使用例
- 新しいプロジェクトを設定する場合、VJSPは初期化コマンド(
npm init -yなど)を実行し、必要な依存関係をインストールします - Webアプリケーションをビルドする場合、リソースをコンパイルして最適化するためのビルドコマンド(
npm run buildなど)を実行します - コードをデプロイする場合、リモートリポジトリに変更をコミットしてプッシュするためのgitコマンドを実行します
- トラブルシューティングする場合、システムとアプリケーションの情報を収集するための診断コマンドを実行します
- 開発環境を起動する場合、適切なサーバーコマンド(
npm startなど)を実行します - 品質保証フェーズでは、プロジェクトのテストフレームワークのテスト実行コマンドを実行します
使用構文
現在のディレクトリで簡単なコマンドを実行する:
<execute_command>
<command>npm run dev</command>
</execute_command>プロジェクトの依存関係をインストールする:
<execute_command>
<command>npm install express mongodb mongoose dotenv</command>
</execute_command>複数のコマンドを順次実行する:
<execute_command>
<command>mkdir -p src/components && touch src/components/App.js</command>
</execute_command>特定のディレクトリでコマンドを実行する:
<execute_command>
<command>git status</command>
<cwd>./my-project</cwd>
</execute_command>プロジェクトをビルドして起動する:
<execute_command>
<command>npm run build && npm start</command>
</execute_command>