abtesting-design について
OpenClaw向けのA/Bテスト設計スキルです。実験の仮説やグループを定め、ハッシュによる割り当てと層化で偏りを抑えます。
主な機能
- 01帰無仮説と対立仮説の設定
- 02対照群とバリアント群の構成
- 03ハッシュによるランダム割り当て
- 04ユーザー属性による層化抽出
活用シーン
- 01メール件名の開封率比較
- 02アプリ機能の変更テスト
- 03ユーザー層ごとの実験群の均衡化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill abtesting-designインストール後、Claude Code で/abtesting-designを入力して読み込まれたか確認します。
詳細
abtesting-design
目的
このスキルでは、OpenClaw 向けに精密な A/B テストを設計できます。仮説の定式化(帰無仮説や対立仮説など)、対照群とバリアント群の設定、ハッシュベースのランダム化、バランスの取れた実験を実現するための層化を扱います。
使用する場面
ウェブサイトのレイアウト、アプリの機能、マーケティングキャンペーンなどを比較する実験を設計し、統計的な厳密さをもって仮説を検証し、バイアスを最小限に抑える場合に使用します。
主な機能
- 仮説を定式化する:帰無仮説(例:「クリック率に差はない」)と対立仮説(例:「バリアントによってクリック数が 10%増加する」)を定義します。
- グループを設定する:サンプルサイズや指標などのパラメーターを指定して、対照群とバリアント群を構成します。
- ランダム化を実装する:選択バイアスを減らすため、ユーザー ID に対する SHA-256 などのハッシュベースの方法で割り当てます。
- 層化を適用する:層化サンプリングなどのアルゴリズムを使い、ユーザーを(属性などに基づいて)層に分けてグループのバランスを取ります。
使用パターン
まず仮説とグループを定義してください。簡単に設計する場合は CLI を、プログラムから統合する場合は API を使用します。必要な入力(仮説文字列やバリアント名など)は、1 つのコマンドまたはリクエストにまとめて指定します。繰り返し使用する場合は、設定を JSON ファイルに保存し、フラグから参照してください。実行時エラーを避けるため、実行前に入力を検証します。
主なコマンド/API
- CLI コマンド:
openclaw abtesting-design --hypothesis-null "No effect on conversion" --hypothesis-alt "Variant increases conversion" --variants control,variantA --randomize hash --stratify age,genderを実行してテストを設計します。{"variants": ["control", "variantA"], "strata": ["age", "gender"]} のような JSON 設定には、--config path/to/config.jsonを使用します。 - API エンドポイント:JSON ボディ(例:{"hypothesis_null": "No difference", "hypothesis_alt": "Increase in engagement", "variants": ["control", "variantB"], "randomization": "hash", "stratification": ["device_type"]})を指定して、
/api/abtesting/designに POST リクエストを送信します。ヘッダーで認証を設定します:Authorization: Bearer $OPENCLAW_API_KEY。 - コードスニペット(Python):
import requests headers = {'Authorization': f'Bearer {os.environ["OPENCLAW_API_KEY"]}'} data = {"hypothesis_null": "No effect", "variants": ["control", "variant"]} response = requests.post('https://api.openclaw.com/api/abtesting/design', json=data, headers=headers) - コードスニペット(スクリプト内の CLI):
export OPENCLAW_API_KEY=your_key_here openclaw abtesting-design --hypothesis-null "Baseline equal" --variants control,testVariant --output results.json
統合に関する注意
認証には、環境変数として $OPENCLAW_API_KEY を設定して統合します。複数のサービスを使用する構成では、このスキルをデータツールと連携させます(例:OpenClaw のワークフロー API の /api/workflows/add 経由)。一貫性を保つため、{"api_endpoint": "/api/abtesting/design", "auth_env": "OPENCLAW_API_KEY"} のような JSON 設定を使用します。アプリケーションで、/api/abtesting/status/{job_id} をポーリングして非同期レスポンスを処理できるようにしてください。
エラー処理
レスポンスコードを解析してエラーを確認します。無効な入力(仮説の欠落など)では HTTP 400、認証の失敗では 401 が返されます。コードでは try-except ブロックを使用します:
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
except requests.exceptions.HTTPError as e:
print(f"Error: {e.response.status_code} - {e.response.text}")
# Retry with corrected inputs, e.g., add missing fields
CLI では、出力を取得し、"Error: Invalid hypothesis format" のような文字列を確認してから、必要に応じてフラグを調整します。
具体的な使用例
- メール件名のテスト:2 つのメール件名を比較するには、
openclaw abtesting-design --hypothesis-null "Open rates are equal" --hypothesis-alt "Subject B increases opens" --variants control,subjectB --randomize hash --stratify locationを実行し、出力された JSON を使って、メールシステム内でユーザー ID に基づきユーザーを割り当てます。 - アプリ機能の A/B テスト:新しいログインボタンをテストするには、API を使用します。{"hypothesis_null": "No change in login time", "variants": ["old_button", "new_button"], "stratification": ["user_type"]} を指定して
/api/abtesting/designに POST リクエストを送信し、返されたランダム化関数(ハッシュベースなど)をアプリのコードに適用してユーザーをセグメント化します。
グラフの関係
- 関連クラスター:abtesting(設計後の手順に使用する abtesting-analysis などのスキルへのリンク)。
- 関連タグ:experiment-design(データ収集スキルと連携)、hypothesis(統計モデリングツールと関連)、randomization(ユーザーセグメンテーションユーティリティと連携)。