2121
2222- Command Executor MCP Serverを使用してコマンド実行をサポートする
2323- 実行環境はDockerで独立してタスク毎に初期化される
24+ - ** 計画フェーズで適切な言語環境を選択し、その環境でコンテナを起動する**
25+ - ** 各言語用イメージにはgitとCommand Executor MCPの基盤機能をあらかじめインストールしておき、即座に起動可能な状態にする**
2426- 実行環境にはあらかじめプロジェクトファイルをダウンロードしておく
2527- タスク終了時に実行環境を削除する
2628
2931- [ Command Executor MCP Server(外部)] ( https://zenn.dev/sunwood_ai_labs/articles/command-executor-mcp-server-v0-1-0-release )
3032- [ 基本仕様] ( spec.md )
3133- [ 継続動作モード仕様] ( CONTINUOUS_MODE_SPECIFICATION.md )
34+ - ** [ 複数言語対応実行環境仕様] ( MULTI_LANGUAGE_ENVIRONMENT_SPECIFICATION.md ) **
3235
3336---
3437
4043flowchart TD
4144 subgraph CodingAgent[コーディングエージェント]
4245 TaskHandler[TaskHandler]
46+ PlanningCoordinator[PlanningCoordinator]
4347 MCPClient[MCPToolClient]
4448 ExecutionManager[ExecutionEnvironmentManager]
4549 end
@@ -50,6 +54,13 @@ flowchart TD
5054
5155 subgraph DockerHost[Docker Host]
5256 DockerAPI[Docker API]
57+ subgraph DockerImages[言語別Dockerイメージ]
58+ ImgPython[Python イメージ]
59+ ImgMiniforge[Miniforge イメージ]
60+ ImgNode[Node.js イメージ]
61+ ImgJava[Java イメージ]
62+ ImgGo[Go イメージ]
63+ end
5364 subgraph ExecutionContainer[実行環境コンテナ]
5465 ProjectFiles[プロジェクトファイル]
5566 WorkDir[作業ディレクトリ]
@@ -61,11 +72,13 @@ flowchart TD
6172 GitLab[GitLab]
6273 end
6374
75+ TaskHandler --> PlanningCoordinator
76+ PlanningCoordinator -->|環境選択| ExecutionManager
6477 TaskHandler --> MCPClient
6578 MCPClient --> CommandMCP
66- TaskHandler --> ExecutionManager
6779 ExecutionManager --> DockerAPI
68- DockerAPI --> ExecutionContainer
80+ DockerAPI --> DockerImages
81+ DockerImages --> ExecutionContainer
6982 ExecutionManager -->|git clone| GitPlatform
7083 CommandMCP -->|コマンド実行| ExecutionContainer
7184```
@@ -77,7 +90,9 @@ flowchart TD
7790実行環境の生成、管理、削除を担当するコンポーネントです。
7891
7992** 責務:**
80- - タスク毎のDockerコンテナの生成
93+ - ** 利用可能な言語環境リストの提供**
94+ - ** 計画フェーズからの環境選択受付**
95+ - タスク毎のDockerコンテナの生成(** 選択された言語イメージを使用** )
8196- プロジェクトファイルのダウンロードとマウント
8297- コンテナの状態監視
8398- タスク終了時のコンテナ削除
@@ -122,18 +137,33 @@ coding-agent-exec-{task_uuid}
122137
123138この命名規則により、タスクとコンテナの紐付けを明確にし、クリーンアップ時の特定を容易にします。
124139
125- ### 3.3 ベースイメージの設定
140+ ### 3.3 言語別イメージの設定
141+
142+ 実行環境は計画フェーズでLLMが選択した言語に応じた専用イメージを使用します。各イメージには以下の共通機能があらかじめインストールされています:
143+
144+ ** 共通プリインストール済みツール:**
145+ - git(バージョン管理)
146+ - curl / wget(ファイルダウンロード)
147+ - jq(JSON処理)
148+ - tree(ディレクトリ構造表示)
149+ - その他基本的なコマンドラインツール
126150
127- 実行環境のベースイメージは設定ファイルで指定可能とします。デフォルトでは汎用的な開発環境イメージを使用します。
151+ ** 利用可能な言語環境: **
128152
129- ** デフォルトイメージ:**
130- - Node.js、Python、Go、Java等の主要言語のランタイムを含む
131- - Git、curl、wget等の基本ツールを含む
132- - 非rootユーザーで実行
153+ | 環境名 | イメージ名 | 説明 | 主な用途 |
154+ | --------| -----------| ------| ----------|
155+ | python | coding-agent-executor-python: latest | Python 3.11 + pip + pytest/black/flake8/mypy | 純粋Pythonプロジェクト、Webフレームワーク |
156+ | miniforge | coding-agent-executor-miniforge: latest | conda/mamba + Python + データサイエンスツール | 科学計算、ML/AI、condaenv.yaml使用プロジェクト |
157+ | node | coding-agent-executor-node: latest | Node.js 20 + npm/yarn/pnpm + TypeScript/ESLint | フロントエンド、Node.jsバックエンド |
158+ | java | coding-agent-executor-java: latest | Java 21 + Maven + Gradle | Spring Boot、Java/Kotlinプロジェクト |
159+ | go | coding-agent-executor-go: latest | Go 1.22 + golangci-lint | Goプロジェクト、CLIツール |
133160
134- ** カスタムイメージ:**
135- - プロジェクト毎にカスタムイメージを指定可能
136- - プロジェクトルートの設定ファイルで上書き可能
161+ ** 環境選択の判断基準:**
162+ - プロジェクトルートの依存関係ファイル(package.json, requirements.txt等)
163+ - Issue/MRの内容から推測される言語・フレームワーク
164+ - デフォルト環境: python(選択に失敗した場合)
165+
166+ 詳細は[ 複数言語対応実行環境仕様] ( MULTI_LANGUAGE_ENVIRONMENT_SPECIFICATION.md ) を参照してください。
137167
138168### 3.4 リソース制限
139169
@@ -172,24 +202,32 @@ coding-agent-exec-{task_uuid}
172202
173203### 4.1 ダウンロードフロー
174204
205+ ** 注意:** コンテナ作成は計画フェーズ完了後、環境選択フェーズで実行されます。
206+
175207``` mermaid
176208sequenceDiagram
177- participant TH as TaskHandler
209+ participant PC as PlanningCoordinator
178210 participant EM as ExecutionEnvironmentManager
179211 participant Docker as Docker API
180212 participant Git as Git Platform
181213
182- TH->>EM: 実行環境準備要求(task)
183- EM->>Docker: コンテナ作成
214+ Note over PC: 計画フェーズ完了
215+ PC->>EM: 利用可能環境リスト取得
216+ EM-->>PC: 環境リスト
217+ PC->>PC: LLMによる環境選択
218+ PC->>EM: prepare(task, selected_environment)
219+ EM->>Docker: コンテナ作成(選択されたイメージで)
184220 Docker-->>EM: コンテナID
185221 EM->>Docker: コンテナ起動
222+ Note over Docker: gitはイメージにプリインストール済み
186223 EM->>Docker: git clone実行
187224 Docker->>Git: リポジトリクローン
188225 Git-->>Docker: ファイル取得
189226 Docker-->>EM: クローン完了
190227 EM->>Docker: ブランチチェックアウト(PR/MRの場合)
191228 Docker-->>EM: チェックアウト完了
192- EM-->>TH: 実行環境準備完了
229+ EM-->>PC: 実行環境準備完了
230+ Note over PC: 実行フェーズ開始
193231```
194232
195233### 4.2 クローン対象の決定
@@ -238,20 +276,26 @@ sequenceDiagram
238276
239277## 5. タスク毎の環境初期化仕様
240278
241- ### 5.1 初期化フロー
279+ ### 5.1 初期化フロー(計画後に実行)
280+
281+ ** 変更点:** コンテナ作成タイミングが「タスク開始時」から「計画フェーズ完了後」に変更されました。
242282
243283``` mermaid
244284flowchart TD
245- A[タスク開始] --> B[ExecutionEnvironmentManager.prepare]
246- B --> C{既存コンテナ確認}
247- C -->|存在する| D[既存コンテナ削除]
248- C -->|存在しない| E[新規コンテナ作成]
249- D --> E
250- E --> F[コンテナ起動]
251- F --> G[プロジェクトファイルダウンロード]
252- G --> H[依存関係インストール]
253- H --> I[初期化完了]
254- I --> J[タスク処理開始]
285+ A[タスク開始] --> B[計画フェーズ]
286+ B --> C[計画作成完了]
287+ C --> D[環境選択フェーズ]
288+ D --> E[LLMが環境を選択]
289+ E --> F[ExecutionEnvironmentManager.prepare]
290+ F --> G{既存コンテナ確認}
291+ G -->|存在する| H[既存コンテナ削除]
292+ G -->|存在しない| I[選択されたイメージでコンテナ作成]
293+ H --> I
294+ I --> J[コンテナ起動]
295+ J --> K[プロジェクトファイルダウンロード]
296+ K --> L[依存関係インストール]
297+ L --> M[初期化完了]
298+ M --> N[実行フェーズ開始]
255299```
256300
257301### 5.2 クリーン環境の保証
@@ -260,8 +304,8 @@ flowchart TD
260304
261305** 初期化時の処理:**
2623061 . 同一task_uuidのコンテナが存在する場合は削除
263- 2 . 新規コンテナを作成
264- 3 . プロジェクトファイルを新規にクローン
307+ 2 . ** 選択された言語環境のイメージを使用して ** 新規コンテナを作成
308+ 3 . ** gitは既にインストール済みのため、即座に ** プロジェクトファイルをクローン
2653094 . 必要に応じて依存関係をインストール
266310
267311** 前タスクの影響排除:**
0 commit comments