airtap について
airtap は、付属の Python コマンドラインツールでモバイルアプリのタスクを Airtap デバイスに委任するエージェントスキルです。タスクの作成、監視、追加指示、キャンセルに対応し、OpenClaw への更新転送も選択できます。
主な機能
- 01Airtap タスクの作成と管理
- 02レシーバーとモデルの選択
- 03タスクのポーリングと結果確認
- 04追加メッセージや画像の送信
- 05OpenClaw 経由の更新転送
活用シーン
- 01モバイルアプリ操作を Airtap デバイスに委任
- 02長時間タスクをローカルで監視
- 03一時停止中のタスクに説明を追加
- 04タスクの進捗を OpenClaw チャンネルに転送
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ airtap-ai/ airtap-skill --skill airtapインストール後、Claude Code で/airtapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
requirements.txtagents/openai.yamlreferences/openclaw.mdscripts/airtap_common.pyairtap.pyenv.example.txt詳細
Airtap
同梱されている scripts/airtap.py CLI を使用して、Airtap タスクを操作します。
安全性
- Airtap デバイスに委任できる Airtap またはモバイルアプリのリクエストには、このスキルを使用してください。
--receiver-id cloudを優先してください。ユーザーからそのデバイスを明示的に指定された場合を除き、物理レシーバーを指定しないでください。task pollはデフォルトでローカルのみで実行されます。ホストが更新のミラーリングを明示的に希望している場合にのみ、OpenClaw への配信を使用してください。- トークンをチャットに貼り付けるようユーザーに求めないでください。事前設定された環境変数またはローカルの
scripts/.envファイルを使用してください。 - OpenClaw のターゲット、スレッド ID、返信 ID、アカウントスコープを決して捏造しないでください。
セットアップ
スキルディレクトリからコマンドを実行してください。
まず、https://airtap.ai/app にサインインし、Settings を開いて、個人用アクセストークンを作成してコピーします。
以下の内容で scripts/.env を作成または更新します。
python3 scripts/airtap.py --add-token "your-personal-access-token"
または、テンプレートをコピーして、個人用アクセストークンを入力します。
cp scripts/env.example.txt scripts/.env
スクリプトは起動時に scripts/.env を読み込み、このファイル内の値は、同名のシェル環境変数より優先されます。
requests と python-dotenv が必要です。インストールされていない場合は、次を実行します。
pip3 install -r requirements.txt
コマンドリファレンス
すべてのコマンドは python3 scripts/airtap.py <resource> <action> ... として実行します。
| コマンド | 使用する場面 | 備考 |
|---|---|---|
receiver get-list | レシーバーを選ぶ必要がある場合。 | タスクの作成前に実行すると便利です。 |
model get-list | タスクでモデルの選択が重要な場合。 | Airtap の主な選択肢は airtap-1.0 と airtap-1.0-flash です。 |
task create | 新しいタスクを開始する場合。 | デフォルトのモデルを上書きする場合にのみ、--model-id <id> を追加します。 |
task get-list | 最近のタスクが必要な場合。 | taskId の復元が必要な場合に便利です。 |
task get-details | タスクのスナップショットを一度だけ取得する場合。 | デバッグや最終状態の確認に便利です。 |
task poll | 実行中のタスクを監視する場合。 | デフォルトではローカルでポーリングし、必要に応じて更新を OpenClaw に転送できます。 |
task add-user-message | タスクに追加の入力が必要な場合。 | 明確化、続行、または作業の再開に使用します。 |
task cancel | タスクを停止する場合。 | ユーザーがタスクの続行を望まなくなったときに使用します。 |
user update-location | タスクがユーザーの位置情報に依存する場合。 | 位置情報は未加工の JSON として送信します。 |
モデルの選択
- モデルの選択が重要な場合にのみ、モデル一覧を取得してください。すべてのタスクで
model get-listを呼び出さないでください。 - タスク作成時に
modelIdを送信しない場合、Airtap はデフォルトでairtap-1.0-flashを使用します。 Airtap 1.0 Flash(airtap-1.0-flash)はデフォルトです。レイテンシの低さが役立つ短いタスクに使用してください。Airtap 1.0(airtap-1.0)はより低速です。レイテンシが増えても信頼性の向上が重要となる、より複雑なタスクに使用してください。model get-listは、現在のアカウントで利用可能なモデルを返します。ほとんどのユーザーにはairtap-1.0とairtap-1.0-flashが表示されます。デバッグユーザーにはairtap-1.0-liteも表示される場合があります。
長時間実行されるタスクの監視
Airtap のタスクは、数秒から数分かかることがあります。長時間実行されるジョブとして扱ってください。
- タスクを作成し、返された
taskIdを取得します。 - ローカルで待機ループを実行するだけでよい場合は、
python3 scripts/airtap.py task poll --task-id "<task-id>"を呼び出します。 - ホストが OpenClaw チャネルでの更新を明示的に必要としている場合は、
references/openclaw.mdを読み、 宛先の会話に必要な--openclaw-targetとルーティングフィールドを指定してtask pollを呼び出します。 task pollが、以下のタスク状態の用語集に記載されている状態にtaskStateが到達するまで、ポーリングを続けるようにします。task pollから最終的な JSON レスポンスを読み取ります。
task poll は、主な監視コマンドです。
- デフォルトでは、内部で
task get-detailsを 10 秒ごとにポーリングします。 - タスクが完了、失敗、キャンセル、またはユーザー入力待ちになると、自動的に停止します。
- 同じタスク詳細のペイロードに
_pollの概要を加えて返します。 task poll --task-id ...のみを指定した場合は、Airtap をローカルでのみポーリングします。- OpenClaw への配信には
--openclaw-targetが必要です。 - OpenClaw への配信はデフォルトでマイルストーン方式です。確認応答、計画/開始の更新 1 件、そして最終状態または待機状態の更新が配信されます。
- Airtap エージェントの更新をすべて転送するようホストが明示的に求めている場合にのみ、
--openclaw-verboseを追加します。 - OpenClaw の詳細なルーティングフラグと例は、
references/openclaw.mdに記載されています。
task poll または task get-details から返されるタスク詳細の読み取り方:
messagesは順序付きの会話履歴です。最初のメッセージは通常、元のユーザーリクエストです。後続の項目は、通常、エージェントからの更新です。- 進捗の更新の大半は、最新の
type: "agent"メッセージに含まれます。 - エージェントのメッセージ内では、まずテキスト部分を確認します。
textは主な進捗更新です。groupとsubGroupは、更新を分類するのに役立つ UI グループ化フィールドです。queuedUserMessagesには、受け付けられたものの、まだ処理されていないユーザーからの追加メッセージが含まれる場合があります。
タスクの状態
COMPLETED:タスクは正常に完了しました。FAILED:タスクを完了できませんでした。CANCELLED:タスクはキャンセルされました。WAITING_FOR_USER_INTERVENTION:ユーザーがデバイス上で操作を行う必要があります。WAITING_FOR_USER_INPUT:タスクを続行する前に、エージェントが確認を必要としています。WAITING_FOR_USER_CONTINUE:タスクが最大ステップ数に達したため、続行するには承認が必要です。
エージェントに求められる動作
- Airtap の実行中にホストが OpenClaw チャネルでの更新を期待している場合は、
--openclaw-targetと必要なルーティングフラグを指定してtask pollを呼び出します。それ以外の場合は、ローカルのみのtask pollを使用します。 - OpenClaw への配信は、デフォルトでマイルストーンのみとします。Airtap のすべてのステップを転送するようホストが明示的に求めている場合にのみ、
--openclaw-verboseを追加します。 WAITING_FOR_USER_INPUTの場合は、必要な確認事項をユーザーに尋ね、その回答をtask add-user-messageで転送します。WAITING_FOR_USER_INTERVENTIONの場合は、デバイス上で行う必要がある操作をユーザーに正確に伝え、確認を待ってから、task add-user-messageで再開します。WAITING_FOR_USER_CONTINUEの場合は、これまでの進捗を要約して続行するかどうかを尋ねます。ユーザーが承認した場合は、task add-user-messageで再開します。COMPLETEDの場合は、最新のエージェント更新を基に結果を要約します。FAILEDまたはCANCELLEDの場合は、最終状態と、最新のエージェントメッセージに含まれる有用な情報を報告します。- Airtap API の呼び出しで
404またはその他のリクエストエラーが返された場合は、再試行する前に Airtap スキルの最新バージョンを入手するようユーザーに伝えます。
例
デフォルトのモデルでタスクを作成します:
python3 scripts/airtap.py task create --message "Open Instagram" --receiver-id cloud
タスクが複雑な場合は、利用可能なモデルを一覧表示します:
python3 scripts/airtap.py model get-list
より信頼性の高い Airtap モデルでタスクを作成します:
python3 scripts/airtap.py task create \
--message "Compare the price of a product on Amazon and Zepto" \
--receiver-id cloud \
--model-id airtap-1.0
実行中のタスクをローカルのみで監視します:
python3 scripts/airtap.py task poll --task-id "task_abc123"
確認要求に回答するか、一時停止中のタスクを続行します:
python3 scripts/airtap.py task add-user-message --task-id "task_abc123" --message "Continue"
タスクをキャンセルします:
python3 scripts/airtap.py task cancel --task-id "task_abc123"
注記
--image-fileを使用して、task createおよびtask add-user-messageに画像を添付できます。- OpenClaw のリレーに関する詳細と例は、
references/openclaw.mdをお読みください。