alibabacloud-das-agent について
alibabacloud-das-agentは、Alibaba Cloud DAS Agentに自然言語で質問し、データベース診断結果を得るスキルです。CLIチャットに加え、エージェント向けのパイプ出力とJSON形式に対応します。
主な機能
- 01自然言語によるDB診断
- 02回答のみのパイプ出力
- 03JSON形式の応答
- 04セッションの継続
活用シーン
- 01DBインスタンスの状態調査
- 02スロークエリやロックの分析
- 03診断結果への追加質問
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-das-agentインストール後、Claude Code で/alibabacloud-das-agentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-reference.mdram-policies.mdscripts/call_das_agent.pypyproject.toml詳細
DAS Agent Chat
自然言語で質問を Alibaba Cloud DAS(Database Autonomy Service)Agent に送信し、診断結果を受け取ります。
料金と無料枠
無料枠で試用できる有料サービスです。
- 無料枠:
ALIBABA_CLOUD_DAS_AGENT_IDが設定されていない場合、スクリプトはAgentIdパラメーターを省略し、API は試用目的の限定された無料クォータが付属するデフォルト Agent IDを使用します。 - 有料利用:本番環境のワークロードや、より多くの利用が必要な場合は、DAS Agent のサブスクリプションを購入し、専用のエージェントとクォータを紐付けるために独自の
ALIBABA_CLOUD_DAS_AGENT_IDを設定してください。
推奨:まず無料枠(デフォルト Agent ID)でサービスを評価してください。本番環境での採用を決めたら、サブスクリプションを購入し、独自の Agent ID を設定してください。
環境変数
このスクリプトには、デフォルトの認証情報チェーンで解決可能な Alibaba Cloud の認証情報が必要です。DAS Agent ID は任意です。指定しない場合、AgentId パラメーターは省略され、API は限定された無料クォータが付属するデフォルト Agent ID を使用します。
# Optional: Set your own Agent ID after purchasing DAS Agent service
export ALIBABA_CLOUD_DAS_AGENT_ID="<agent_id>" # Obtain from DAS console (optional)
Alibaba Cloud Credentials SDK は、複数のソース(環境変数、設定ファイル、ECS RAM ロールなど)から認証情報を自動的に解決します。設定手順については、公式の認証情報設定ドキュメントを参照してください。
DAS Agent のサブスクリプションを購入済みの場合は、こちらで Agent ID を作成、管理できます:https://das.console.aliyun.com/
トラブルシューティング
認証情報の解決に失敗する
スクリプトが認証情報に関するエラーで終了した場合、Alibaba Cloud Credentials SDK がデフォルトのプロバイダーチェーンから使用可能な認証情報を解決できなかったことを意味します。
対応している認証情報ソース:
- 環境変数(公式ドキュメントを参照)
- ローカルのプロファイルファイル:
~/.aliyun/config.jsonまたは~/.alibabacloud/credentials.ini - Alibaba Cloud ECS インスタンス上で実行する場合の ECS RAM ロールメタデータ
よくあるケース:
- 認証情報の環境変数が空、または設定されていない — 公式ドキュメントに従って設定してください。
~/.aliyun/config.jsonまたは~/.alibabacloud/credentials.iniに関するエラー SDK はローカルプロファイルベースの認証情報を試みましたが、ファイルが存在しないか、無効でした。ローカルプロファイルを使用する場合は、デフォルトプロファイルを作成または修正してください。100.100.100.200に関するエラー SDK は ECS メタデータを試みました。ECS 上では想定どおりの動作ですが、通常は ECS 以外のマシンで別の設定に問題があります。
ローカル開発で ECS RAM ロールの認証情報を使用しない場合は、ECS メタデータの検索を明示的に無効にできます:
export ALIBABA_CLOUD_ECS_METADATA_DISABLED=true
これにより、ECS 以外のマシンで 100.100.100.200 へのメタデータ接続エラーが発生して混乱するのを防ぎ、認証情報が見つからない場合のエラーを読み取りやすくできます。
実行方法
このスキルの scripts/ ディレクトリから実行します:
cd scripts
# Pipe mode (RECOMMENDED for agents) — clean output: progress to stderr, answer clearly delimited on stdout
uv run call_das_agent.py --question "<user's question>" --pipe
# Default mode (CLI chat UI) — real-time streaming with tool details
uv run call_das_agent.py --question "<user's question>"
# JSON mode — machine-readable JSONL, one JSON object per line on stdout
uv run call_das_agent.py --question "<user's question>" --json
# Multi-turn conversation — reuse the server-assigned session ID to maintain context
uv run call_das_agent.py --question "List my instances" --pipe # Returns session_id on first line
# Extract session_id (line starting with "SESSION:"), then reuse it:
uv run call_das_agent.py --question "Check the first one" --session "<session_id_from_above>" --pipe
エージェントとして実行する場合は、必ず --pipe を使用してください。すべての進行状況やツール呼び出しの出力を stderr に送り、明確な区切りで囲んだ DAS の回答のみを stdout に書き込むため、実際の回答を見落とすことがありません。
プログラムで応答を解析する必要がある場合は、--json を使用してください。JSON イベントの種類と出力モードの詳細については、references/api-reference.mdを参照してください。
動作に関する注意事項
DAS Agent は、1 つの質問に回答するために、内部で複数の API 呼び出しとツールの実行を調整します。これには重要な意味があります。
-
時間のかかるタスク:複雑な診断(複数インスタンスの検査、包括的なヘルスチェック、SQL の一括分析)では、DAS Agent が監視 API を順番に呼び出し、診断を実行して結果を統合するため、数分から最大 30 分かかることがあります。開始前にユーザーに伝え、定期的に進捗を知らせてください。
-
インスタンスの登録:対象のデータベースインスタンスを DAS Agent に登録する必要があります。エラーコード
-1810006が表示された場合、エージェントにインスタンスが関連付けられていないことを意味します。ユーザーにインスタンスを関連付けるため、DAS コンソールの設定に案内してください。 -
質問にインスタンス ID を含める:DAS Agent は ID(例:
rm-bp1xxx、pc-2zeyyy)でインスタンスを特定します。正確な結果を得るため、質問には必ず特定のインスタンス ID を含めてください。ユーザーが ID を指定していない場合は、確認するか、先にインスタンス一覧を取得してください。 -
並列実行:複数のインスタンスを診断する場合は、複数のスクリプトプロセスを並列で起動してください。各呼び出しは独立しており、ステートレスです(セッション ID を共有する場合を除きます)。
-
複数ターンの会話 — 関連する質問では必ずセッション ID を再利用する:ユーザーの質問が連続している、または文脈上つながっている場合(診断のフォローアップ、詳細分析、前回の結果への言及、調査結果の比較)は、後続の呼び出しすべてで
--session <session_id>を必ず渡してください。会話の途中で新しいセッションを開始すると、DAS Agent は過去の文脈をすべて最初から処理し直すことになり、時間が無駄になり、回答の質も低下します。判断基準:デフォルトではセッション ID を再利用してください。新しいセッションを開始するのは、ユーザーが明確に、まったく関係のない話題に切り替えるか、「最初からやり直す」よう求めた場合に限ります。
セッション ID はサーバーによって割り当てられ、すべての
--pipe呼び出しの最初の行に返されます。SESSION: <uuid>各呼び出しの直後に抽出し、以降の呼び出しに引き継いでください。
--jsonモードでは、最初の行に{"type": "session", "session_id": "..."}として表示されます。再利用が必須となる例:
- 「インスタンスを一覧表示して」→「最初のインスタンスの CPU を確認して」→「なぜ高いの?」
- 「rm-bp1xxx のヘルスチェックを実行して」→「スロークエリの上位を見せて」
- 「どのロックが保持されている?」→「そのセッションを強制終了して」
DAS Agent は会話履歴全体をサーバー側で保持するため、フォローアップの質問は短く自然なもので構いません。インスタンス ID や以前の文脈を繰り返す必要はありません。
出力
出力モードの比較と形式の詳細については、references/api-reference.mdを参照してください。
スクリプトの実行後、標準出力全体をそのままユーザーに伝えてください。 スクリプトの標準出力の要約、言い換え、一部省略はしないでください。DAS Agent の実際の診断回答は出力に含まれているため、ユーザーにはその全体を提示する必要があります。
API シグネチャの詳細と SSE イベントのドキュメントについては、references/api-reference.mdを参照してください。