vsPilot VS Code Extension (Prototype)
vsPilot は、Python のパイプライン自動生成フレームワーク pilot(pilot_generator.py)とシームレスに連携する VS Code 拡張機能(Extension)プロトタイプです。
🌟 主な機能と UI 構成
1. 🚀 パイプライン生成 (Pipeline Generator)
- Base Workspace 連動: 現在開いている VS Code ワークスペース(例:
pilot_test)を自動検出し、ルート基準として認識。
- ベース Properties 自動連携 & パラメータ連番生成:
- ワークスペース内の
config/*.properties を自動検索・一覧表示。
- ベースとなる
.properties を選択すると、Sub Project No を自動インクリメント(例: 010 ➔ 020)。
Sub Project Name や Source Folder、Sub Source Folder などの各パラメータを自動補完コピー。
- プロパティの
work_space パスも UI から柔軟に指定・参照可能。
- コンパクト 4 行 UI:
- ラベルを左側、入力ボックスを右側に配置した 2 カラムレイアウト。
- 余計な縦スクロールバーを抑え、IDE 設定のフォントサイズに自動追従。
- 👁️ 静的フォルダ構造・差分プレビュー (Folder Diff Tree):
- ワークスペース内の既存 Pilot モジュール構造を静的ツリーで可視化。
- 今回新規生成されるモジュールや設定ファイルを
+ NEW(緑色ハイライト)、上書き対象を OVERWRITE、既存を EXIST バッジで一目瞭然に差分表示。
- 画面の高さを 100% 活用したレスポンシブなプレビュー領域。
- 一括生成アクション:
- 「🚀 パイプラインを一括生成」ボタンを押すことで、
config/*.properties、*_job.py、*_unit.py、*_control.py、job_000.py などの一連のパイプラインコードを自動生成。
2. 🧩 ジョブ追加 (Add Job)
- 対象 Properties 選択: 追加先の properties ファイルを選択。
- ジョブ番号指定: 例
020, 030 など。
- Base Class Type 選択カード:
- 📝 Prompt: LLM プロンプト実行+
template.prompt 自動生成
- 🏷️ JSON: JSON 構造化出力型ジョブ
- 📄 Text: テキスト出力型ジョブ
- ⚙️ Job: 汎用ベースジョブ
- 反映プレビュー & ジョブ追加:
- 生成される
job_{job_no}.py、unit.py への import/登録、properties の STEP_NAME 更新内容を事前に確認して追加実行。
3. 💬 アシスタントチャット & 実行ログ
- コード解説や質問応答、生成ログのリアルタイム確認が可能なコンソール。
4. ⚡ エディタ・ステータスバー連携
- ステータスバーの
$(rocket) vsPilot からワンクリックで展開。
- エディタ選択コードの右クリックメニュー(
vsPilot: Send Selection to Assistant)からサイドバーへの転送。
📁 プロジェクト構成
vsPilot/
├── .vscode/
│ ├── launch.json # F5キーで [拡張機能開発ホスト] を pilot_test ワークスペースで起動
│ └── tasks.json # ビルド (npm run watch) タスク
├── resources/
│ └── icon.svg # アクティビティバーアイコン
├── src/
│ ├── extension.ts # エントリーポイント (コマンド・ステータスバー・プロバイダー登録)
│ ├── sidebarProvider.ts # WebviewViewProvider(各イベントハンドラーへのディスパッチ)
│ ├── pilotService.ts # Pilot ドメインロジック (ファイル探索・差分計算・Python生成実行)
│ ├── types/
│ │ └── messages.ts # Webview ⇔ Extension 間の双方向メッセージ・パラメータ型定義
│ ├── handlers/ # イベント別ハンドラー群 (イベント毎のファイル分割)
│ │ ├── initHandler.ts # 初期化・ファイル再スキャン (requestInit, scanPilotFiles, refreshProperties)
│ │ ├── browseHandler.ts # フォルダ/ファイル選択 (browseFolder, browseWorkSpaceFolder, browsePropertiesFile, openFile)
│ │ ├── propertiesHandler.ts # プロパティ自動解析・連番インクリメント (loadBaseProperties)
│ │ ├── generatorHandler.ts # パイプライン一括生成・ジョブ追加 (runGenerateCode, runAddJob)
│ │ └── chatHandler.ts # AIチャット・エディタ挿入・選択テキスト取得 (askAi, insertToEditor, fetchSelection)
│ └── ui/ # Webview UI レイヤーの分離
│ ├── tabs/ # ★ 3つのタブ毎に完全に独立した TypeScript ファイル
│ │ ├── generateTab.ts# タブ1: パイプライン作成 (HTML & 差分ツリー/パラメータ制御JS)
│ │ ├── addJobTab.ts # タブ2: ジョブ追加 (HTML & ジョブ種別選択/反映プレビューJS)
│ │ └── chatTab.ts # タブ3: AIチャット (HTML & メッセージ送受信JS)
│ ├── template.ts # HTML 構造マークアップ統合
│ ├── styles.ts # CSS スタイルシート
│ ├── clientScript.ts # クライアント側 JS 統合 (タブ切り替え・グローバル通信)
│ └── getWebviewHtml.ts # Webview HTML 統合ビルダー
├── dist/ # esbuild コンパイル出力
├── esbuild.js # esbuild バンドル設定
├── package.json # 拡張機能マニフェスト
├── tsconfig.json # TypeScript 設定
└── README.md
🚀 動作確認・デバッグ手順 (F5)
- デバッグ起動:
- VS Code でキーボードの
F5 キーを押す(または「実行とデバッグ」から 「Run Extension」 を実行)。
- 自動起動:
- 新しい VS Code ウィンドウ([拡張機能開発ホスト])が起動し、自動的に
pilot_test ワークスペースが開きます。
- サイドバーを開く:
- 左側のアクティビティバーに表示された vsPilot アイコン(または右下のステータスバー
$(rocket) vsPilot)をクリック。
- 機能確認:
- 「ベース Properties」ドロップダウンから既存ファイル(例:
001_pilot_design_main_step1.properties)を選択。
Sub Project No が自動的に連番にインクリメントされ、差分ツリーに新規生成ファイルが表示されることを確認。
- 「🚀 パイプラインを一括生成」や「ジョブ追加」をテスト実行。
| |