Skip to Content

Terminal Sandbox

隔離されたサンドボックス環境でコードを実行し、コマンドを実行できます。各チャットルームごとに独立したサンドボックスが作成され、安全にコードをテストしてデータを処理できます。

主な機能

  • Python、JavaScript、Goコードの実行
  • シェルコマンドの実行
  • ファイルの作成と保存
  • 結果ファイルのダウンロード

基本情報

認証方式

認証は必要ありません。

サポート範囲

Terminal SandboxはAI Hubチャットでのみ使用できます。サードパーティMCPクライアントではサポートされていません。

サンドボックスの特徴

作業ディレクトリ

  • ホームディレクトリは /workspace です。
  • /workspace に作成されたファイルはセッション中保持されます。
  • /workspace 外のファイルは実行ごとにリセットされます。

セッション管理

  • チャットルームごとに独立したサンドボックスが作成されます。
  • 10分間リクエストがない場合、サンドボックスは自動的にリセットされます。
  • セッションが維持されている間、ファイルとデータは保存されます。

サポートされているMCPツール

execute_code

隔離されたサンドボックス環境でコードを実行します。

サポート言語:

  • Python (3.12)
  • JavaScript (Node.js 23.11)
  • Go (1.24)

入力パラメータ:

  • code (必須): 実行するコード
  • language (必須): プログラミング言語 (python, javascript, go)
  • libraries (オプション): インストールするライブラリのリスト(PythonはPip、JavaScriptはnpm)
  • timeout (オプション): 実行タイムアウト(秒、デフォルト: 30)

返り値情報:

  • 実行結果 (stdout)
  • エラーメッセージ (stderr)
  • 終了コード
  • 実行時間

execute_command

隔離されたサンドボックス環境でシェルコマンドを実行します。

入力パラメータ:

  • command (必須): 実行するシェルコマンド
  • timeout (オプション): 実行タイムアウト(秒、デフォルト: 30)

返り値情報:

  • 実行結果 (stdout)
  • エラーメッセージ (stderr)
  • 終了コード
  • 実行時間

upload_files

AI Hubチャットにアップロードされたファイルをサンドボックスの /workspace/files ディレクトリに取り込みます。

入力パラメータ:

  • file_ids (必須): AI HubチャットにアップロードしたファイルのIDリスト

export_file

サンドボックスで作成したファイルやディレクトリをダウンロード可能なURLとしてエクスポートします。

入力パラメータ:

  • file_path (必須): エクスポートするファイルまたはディレクトリのパス(例: /workspace/report.csv

特徴:

  • ディレクトリは自動的にZIPファイルに圧縮されます。
  • 返されたURLはMarkdownリンク形式で提供されます。
  • URLの有効期間は10分です。

使用例

Pythonでのデータ分析

ユーザー入力:

次の製品データをpandasで分析してCSVファイルとして保存してください: - Laptop: 価格$1200、在庫15個 - Mouse: 価格$25、在庫50個 - Keyboard: 価格$75、在庫30個 - Monitor: 価格$350、在庫20個 平均価格と総在庫価値も計算してください。

LLMは execute_code ツールを使用して、次のような類似のコードを生成して実行します:

import pandas as pd # データ生成 data = { 'Product': ['Laptop', 'Mouse', 'Keyboard', 'Monitor'], 'Price': [1200, 25, 75, 350], 'Stock': [15, 50, 30, 20] } df = pd.DataFrame(data) # 分析実行 print(f"平均価格: ${df['Price'].mean():.2f}") print(f"在庫価値: ${(df['Price'] * df['Stock']).sum():,}") # CSVとして保存 df.to_csv('/workspace/products.csv', index=False) print("\nCSVファイルが作成されました。")

その後、export_file ツールで生成されたCSVファイルをダウンロードリンクとして提供します。

JavaScriptでのJSON処理

ユーザー入力:

次のユーザーデータからactiveがtrueのユーザーのみをフィルタリングしてJSONファイルとして保存してください: - Alice (ID: 1, active: true) - Bob (ID: 2, active: false) - Charlie (ID: 3, active: true)

LLMは execute_code ツールを使用して、次のような類似のコードを生成して実行します:

const fs = require('fs'); // ユーザーデータ const users = [ { id: 1, name: 'Alice', active: true }, { id: 2, name: 'Bob', active: false }, { id: 3, name: 'Charlie', active: true } ]; // アクティブユーザーのみフィルタリング const activeUsers = users.filter(user => user.active); // ファイルとして保存 fs.writeFileSync( '/workspace/active_users.json', JSON.stringify(activeUsers, null, 2) ); console.log(`アクティブユーザー${activeUsers.length}名を保存しました`);

シェルコマンドでのテキストファイル分析

ユーザー入力:

/workspace/server.log ファイルを作成して次の内容を追加してください: 2025-12-02 10:15:23 INFO Server started 2025-12-02 10:16:45 ERROR Database connection failed 2025-12-02 10:17:12 INFO Request processed 2025-12-02 10:18:33 ERROR Timeout exception 2025-12-02 10:19:01 INFO User logged in そしてERRORを含む行のみを抽出してerrors.txtとして保存してください。

LLMは execute_command ツールを使用して、次のような類似のコマンドを実行します:

# ログファイル作成 cat > /workspace/server.log << 'EOF' 2025-12-02 10:15:23 INFO Server started 2025-12-02 10:16:45 ERROR Database connection failed 2025-12-02 10:17:12 INFO Request processed 2025-12-02 10:18:33 ERROR Timeout exception 2025-12-02 10:19:01 INFO User logged in EOF # ERRORを含む行を抽出 grep "ERROR" /workspace/server.log > /workspace/errors.txt # 結果確認 cat /workspace/errors.txt

複数言語の組み合わせ使用

ユーザー入力:

プロジェクトの進捗率を計算してください。全体1000件のうち850件が完了しました。 PythonでデータをJSONとして保存し、Goで完了率を計算してレポートファイルを作成してください。

LLMは次のような類似の方法で段階的に実行を進めます:

ステップ1: Pythonでデータ保存

import json data = {'total': 1000, 'completed': 850} with open('/workspace/data.json', 'w') as f: json.dump(data, f) print(f"データ保存完了: {data}")

ステップ2: Goでレポート生成

package main import ( "encoding/json" "fmt" "os" ) func main() { // JSONファイル読み取り data, _ := os.ReadFile("/workspace/data.json") var result map[string]int json.Unmarshal(data, &result) // 完了率計算 percentage := float64(result["completed"]) / float64(result["total"]) * 100 report := fmt.Sprintf("プロジェクト進捗率\n全体: %d\n完了: %d\n完了率: %.1f%%\n", result["total"], result["completed"], percentage) // レポートファイル保存 os.WriteFile("/workspace/report.txt", []byte(report), 0644) fmt.Print(report) }

注意事項

セキュリティ

  • サンドボックスは隔離された環境ですが、機密データの処理には注意してください。
  • APIキーやパスワードをコードに直接記述しないでください。

セッション管理

  • 10分間リクエストがない場合、サンドボックスはリセットされ、すべてのファイルが削除されます。
  • 重要な結果は export_file ツールでダウンロードしてください。

リソース制限

  • サンドボックスは限られたCPUとメモリを使用します。
  • 大容量データ処理や長時間実行されるタスクは制限される場合があります。

ファイル保存場所

  • 必ず /workspace ディレクトリにファイルを保存してください。
  • 他の場所のファイルは実行後に消える可能性があります。

ネットワーク制限

  • 外部ネットワークアクセスはライブラリインストール目的でのみ制限的に許可されます。
  • Python: pypi.org, files.pythonhosted.org
  • JavaScript: registry.npmjs.org, nodejs.org
  • Go: proxy.golang.org, sum.golang.org, index.golang.org
  • API呼び出し、Webスクレイピングなどの外部サービスアクセスは不可能です。

ライブラリインストール

  • Python: pandas、numpy、requestsなどの一般的なライブラリはインストール可能
  • 一部のシステム依存性が必要なライブラリはインストールできない場合があります(例: matplotlib)
  • JavaScript: npmパッケージはインストール可能ですが、ネイティブモジュールは制限される場合があります
Last updated on