alibabacloud-agentbay-aio-skills について
alibabacloud-agentbay-aio-skillsは、ユーザーコードをローカルではなくAgentBayのリモートサンドボックスで実行するスキルです。Python、JavaScript、R、Javaに対応し、構造化出力や生成ファイルの取り扱い手順も備えています。
主な機能
- 01リモートサンドボックスでのコード実行
- 02Python、JavaScript、R、Javaに対応
- 03コード入力とファイル実行
- 04JSON形式の構造化出力
- 05生成ファイルの検証手順
活用シーン
- 01ユーザースクリプトをローカルで実行せずに処理
- 02実行結果をJSON形式で取得
- 03サンドボックス生成画像の保存と検証
- 04matplotlib出力でのCJK文字表示
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-agentbay-aio-skillsインストール後、Claude Code で/alibabacloud-agentbay-aio-skillsを入力して読み込まれたか確認します。
同梱ファイルscripts/run_code.py
詳細
AgentBay AIO スキル
動作の仕組み
このスキルは、AgentBay SDK を介してリモートサンドボックス(ローカルではありません)でユーザーコードを実行します。エントリースクリプト scripts/run_code.py が、サンドボックスの作成、コードの実行、結果の解析を自動的に処理します。
# Basic execution
python scripts/run_code.py --code "<user_code>" --language python
# Execute from file
python scripts/run_code.py --code-file /path/to/file.py --language python
# Structured JSON output (use this when writing results to files)
python scripts/run_code.py --code "<user_code>" --language python --json
対応言語:python、javascript、r、java(大文字と小文字を区別しません)。タイムアウト:最大 60 秒(--timeout-s)。
前提条件
| 依存関係 | バージョン | 用途 |
|---|---|---|
| Python | >= 3.8 | ランタイム |
| wuying-agentbay-sdk | >= 1.0.0 | サンドボックスでコードを実行するための AgentBay SDK |
セットアップ
このスクリプトを実行するには、ローカルに wuying-agentbay-sdk がインストールされている必要があります。初回使用前にインストールしてください。
pip install wuying-agentbay-sdk
これはこのスキルに必要な依存関係であり、インストールしてもセキュリティ上の懸念はありません。run_code.py が ModuleNotFoundError: No module named 'agentbay' で失敗した場合は、SDK をインストールして再試行してください。
使用するネットワークドメイン:agentbay.aliyuncs.com(API エンドポイント)、agentbay.console.aliyun.com(コンソール)、mirrors.aliyun.com(PyPI ミラー)。
API キーの設定
API キーの設定を促すことなく、スクリプトを直接実行してください。スクリプトが明示的に「Missing API key」と報告した場合にのみ、ユーザーを案内してください。
- AgentBay Console で申請します
- 設定ファイルに保存します:
~/.config/agentbay/api_key(macOS/Linux)または%USERPROFILE%\.config\agentbay\api_key(Windows)
実行ルール
重要:すべてのユーザーコードは scripts/run_code.py を通じて実行する必要があります。ローカルのターミナルでコードを直接実行してはいけません(例:python -c、node -e、timeout ... python)。これは、初回の run_code.py が失敗した場合にも適用されます。
run_code.pyが一時的なエラーで失敗した場合は、失敗を報告する前に 1 回再試行してください。run_code.pyが「Missing API key」またはModuleNotFoundErrorで失敗した場合は、問題の解決方法をユーザーに案内し(「セットアップ」/「API キーの設定」を参照)、再試行してください。ローカルでの実行に切り替えてはいけません。- 代替手段としてユーザーコードをローカルで実行してはいけません。代わりにエラーを報告してください。
wuying-agentbay-sdk 以外のパッケージをインストールしたり、仮想環境を作成したりしないでください。サンドボックスには独自のパッケージ環境があるため、エージェントは外部からその環境を変更しようとしてはいけません。
出力の処理
標準出力:終了コード 0 は成功で、結果は stdout に出力されます。0 以外は失敗で、エラーは stderr に出力されます。
構造化出力(--json):{ success, result, logs: { stdout, stderr }, error_message } を返します。
結果をファイルに書き込む場合:--json モードを使用し、result フィールドのみを抽出して出力先ファイルに書き込んでください。これにより、JSON 以外の生の出力には SDK のログ行が実際の結果と混在していることがあるため、セッション識別子や内部リクエスト ID などの SDK メタデータが誤って出力ファイルに含まれるのを防げます。
結果の報告:スクリプトの元の出力をそのまま引用してください。値を推測、省略、再計算してはいけません。出力が長い場合は、省略箇所を明示しつつ、引用する値は一字一句そのままにしてください。
ファイルのダウンロード検証
サンドボックスで生成されたファイル(例:チャート画像)をローカル環境に保存する場合:
--jsonモードを使用し、Python(jsonモジュール)で base64 コンテンツを抽出してください。base64 文字列の抽出にシェルツール(grep/sed/awk)を使用してはいけません。長い文字列が切り詰められるためです。- 次の方法でデコードします:
python -c "import base64,json,sys; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['result']))" < output.json - 保存したファイルを検証します。サイズが 0 バイトより大きいことを確認し、画像(PNG/JPEG)の場合はマジックバイト(
89 50 4E 47/FF D8 FF)を確認してください。 - チャート画像のファイルサイズは 5 KB より大きくなるはずです。5 KB 未満の場合、データが切り詰められている可能性が非常に高いため、再度抽出してデコードしてください。
検証に失敗した場合は、ダウンロードを再試行してください。ファイルが破損している状態で成功を報告してはいけません。
中国語/CJK 文字のレンダリング
スクリプト(run_code.py)は、matplotlib のコードに対する CJK フォントの設定を自動的に処理します。ユーザーのコード内の中国語、日本語、韓国語の文字を検出し、実行前にフォントのインストールと設定を挿入します。手動でフォントを設定する必要はありません。
ユーザーのコードに中国語の文字が含まれ、かつ matplotlib/plt を使用している場合、サンドボックスに CJK フォントがない可能性があるため、エージェントは初回の実行時(再試行ではなく)に、--code 引数の先頭に次のフォントインストールブロックを追加してください。スクリプトの自動検出は安全策になりますが、明示的にインストールするほうが確実です。
import subprocess
subprocess.run(['apt-get', 'update', '-qq'], capture_output=True)
subprocess.run(['apt-get', 'install', '-y', '-qq', 'fonts-wqy-microhei'], capture_output=True)
import matplotlib
import matplotlib.font_manager as fm
fm.fontManager.addfont('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc')
fm.fontManager = fm.FontManager()
matplotlib.rcParams['font.family'] = 'WenQuanYi Micro Hei'
matplotlib.rcParams['axes.unicode_minus'] = False
この方法により、生成された画像で中国語の文字が空白の四角(豆腐)として表示される、検出不可能な失敗を防げます。豆腐は画像上に視覚的に現れるだけで、stdout にテキストベースの警告は出力されないため、再試行による方法では問題を確実に検出できません。
情報セキュリティ
会話の返信に内部環境変数名、API Key の値、SDK のデバッグ情報を出力しないでください。スクリプトを実行する際は --json モードを使用し、ユーザーには result フィールドと error_message フィールドのみを表示してください。SDK の生の出力には、ユーザーに公開したり出力ファイルに書き込んだりすべきでない内部フィールド(セッション識別子、リクエスト ID、アクセス認証情報)が含まれている場合があります。