mcpField
A
alibabacloud-agentbay-aio-skills

alibabacloud-agentbay-aio-skills

github.com/aliyun開発281112 回インストール1 日前に更新
リポジトリ

alibabacloud-agentbay-aio-skills について

alibabacloud-agentbay-aio-skillsは、ユーザーコードをローカルではなくAgentBayのリモートサンドボックスで実行するスキルです。Python、JavaScript、R、Javaに対応し、構造化出力や生成ファイルの取り扱い手順も備えています。

主な機能

  1. 01リモートサンドボックスでのコード実行
  2. 02Python、JavaScript、R、Javaに対応
  3. 03コード入力とファイル実行
  4. 04JSON形式の構造化出力
  5. 05生成ファイルの検証手順

活用シーン

  1. 01ユーザースクリプトをローカルで実行せずに処理
  2. 02実行結果をJSON形式で取得
  3. 03サンドボックス生成画像の保存と検証
  4. 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」と報告した場合にのみ、ユーザーを案内してください。

  1. AgentBay Console で申請します
  2. 設定ファイルに保存します:~/.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 メタデータが誤って出力ファイルに含まれるのを防げます。

結果の報告:スクリプトの元の出力をそのまま引用してください。値を推測、省略、再計算してはいけません。出力が長い場合は、省略箇所を明示しつつ、引用する値は一字一句そのままにしてください。

ファイルのダウンロード検証

サンドボックスで生成されたファイル(例:チャート画像)をローカル環境に保存する場合:

  1. --json モードを使用し、Python(json モジュール)で base64 コンテンツを抽出してください。base64 文字列の抽出にシェルツール(grep/sed/awk)を使用してはいけません。長い文字列が切り詰められるためです。
  2. 次の方法でデコードします:python -c "import base64,json,sys; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['result']))" < output.json
  3. 保存したファイルを検証します。サイズが 0 バイトより大きいことを確認し、画像(PNG/JPEG)の場合はマジックバイト(89 50 4E 47/FF D8 FF)を確認してください。
  4. チャート画像のファイルサイズは 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、アクセス認証情報)が含まれている場合があります。

コメント