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