エージェントタイプ
エージェントはOpenPR-Webhookのコアのディスパッチユニットです。各エージェントはマッチしたWebhookイベントの処理方法を定義します。単一のデプロイメントで複数のエージェントを設定でき、イベントはWebhookペイロードのbot_contextに基づいて適切なエージェントにルーティングされます。
概要
| タイプ | ユースケース | フィーチャーフラグが必要 |
|---|---|---|
openclaw | OpenClaw CLIを使用してSignal/Telegramで通知を送信 | いいえ |
openprx | OpenPRX Signal APIまたはCLIでメッセージを送信 | いいえ |
webhook | HTTPエンドポイント(Slack、Discordなど)にイベントを転送 | いいえ |
custom | 任意のシェルコマンドを実行 | いいえ |
cli | AIコーディングエージェント(codex、claude-code、opencode)を実行 | はい(cli_enabled) |
エージェント設定構造
すべてのエージェントは以下の共通フィールドを持ちます:
toml
[[agents]]
id = "unique-id" # Unique identifier, used for matching
name = "Human-Readable Name" # Display name, also used for matching
agent_type = "openclaw" # One of: openclaw, openprx, webhook, custom, cli
message_template = "..." # Optional: custom message format次に、agent_typeに応じて、タイプ固有の設定ブロックを提供します:
[agents.openclaw]-- openclawエージェント用[agents.openprx]-- openprxエージェント用[agents.webhook]-- webhookエージェント用[agents.custom]-- customエージェント用[agents.cli]-- cliエージェント用
メッセージテンプレート
message_templateフィールドはWebhookペイロードの値で置換されるプレースホルダーをサポートします:
| プレースホルダー | ソース | 例 |
|---|---|---|
{event} | payload.event | issue.updated |
{title} | payload.data.issue.title | Fix login bug |
{key} | payload.data.issue.key | PROJ-42 |
{issue_id} | payload.data.issue.id | 123 |
{reason} | payload.bot_context.trigger_reason | assigned_to_bot |
{actor} | payload.actor.name | alice |
{project} | payload.project.name | backend |
{workspace} | payload.workspace.name | IM |
{state} | payload.data.issue.state | in_progress |
{priority} | payload.data.issue.priority | high |
{url} | 派生 | issue/123 |
デフォルトテンプレート(openclaw、openprx、webhook、custom用):
[{project}] {event}: {key} {title}
{actor} | Trigger: {reason}エージェントマッチングロジック
bot_context.is_bot_task = trueのWebhookイベントが届くと:
- サービスは
bot_context.bot_nameとbot_context.bot_agent_typeを抽出する idまたはname(大文字小文字を区別しない)がbot_nameと一致するエージェントを検索する- 名前でマッチしない場合は、
agent_typeがbot_agent_typeと一致する最初のエージェントにフォールバックする - エージェントが一切マッチしない場合、イベントは確認されるがディスパッチされない
マルチエージェントの例
toml
# Agent 1: Notification via Telegram
[[agents]]
id = "notify-tg"
name = "Telegram Notifier"
agent_type = "openclaw"
message_template = "[{project}] {event}: {key} {title}"
[agents.openclaw]
command = "/usr/local/bin/openclaw"
channel = "telegram"
target = "@my-channel"
# Agent 2: Forward to Slack
[[agents]]
id = "notify-slack"
name = "Slack Forwarder"
agent_type = "webhook"
[agents.webhook]
url = "https://hooks.slack.com/services/T.../B.../xxx"
# Agent 3: MCP クローズドループを使用したAIコーディングエージェント
[[agents]]
id = "coder"
name = "Code Agent"
agent_type = "cli"
[agents.cli]
executor = "claude-code"
workdir = "/opt/projects/backend"
timeout_secs = 600
skip_callback_state = true # AIがMCP経由で直接状態を更新
[agents.cli.env_vars]
OPENPR_API_URL = "http://localhost:3000"
OPENPR_BOT_TOKEN = "opr_xxx"この設定では、OpenPRはWebhookペイロードのbot_nameフィールドを設定することで異なるエージェントに異なるイベントをルーティングできます。
次のステップ
- エグゼキュータリファレンス -- 各エグゼキュータタイプの詳細なドキュメント
- 設定リファレンス -- 完全なTOMLスキーマ