Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

エージェントタイプ

エージェントはOpenPR-Webhookのコアのディスパッチユニットです。各エージェントはマッチしたWebhookイベントの処理方法を定義します。単一のデプロイメントで複数のエージェントを設定でき、イベントはWebhookペイロードのbot_contextに基づいて適切なエージェントにルーティングされます。

概要

タイプユースケースフィーチャーフラグが必要
openclawOpenClaw CLIを使用してSignal/Telegramで通知を送信いいえ
openprxOpenPRX Signal APIまたはCLIでメッセージを送信いいえ
webhookHTTPエンドポイント(Slack、Discordなど)にイベントを転送いいえ
custom任意のシェルコマンドを実行いいえ
cliAIコーディングエージェント(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.eventissue.updated
{title}payload.data.issue.titleFix login bug
{key}payload.data.issue.keyPROJ-42
{issue_id}payload.data.issue.id123
{reason}payload.bot_context.trigger_reasonassigned_to_bot
{actor}payload.actor.namealice
{project}payload.project.namebackend
{workspace}payload.workspace.nameIM
{state}payload.data.issue.statein_progress
{priority}payload.data.issue.priorityhigh
{url}派生issue/123

デフォルトテンプレート(openclaw、openprx、webhook、custom用):

[{project}] {event}: {key} {title}
{actor} | Trigger: {reason}

エージェントマッチングロジック

bot_context.is_bot_task = trueのWebhookイベントが届くと:

  1. サービスはbot_context.bot_namebot_context.bot_agent_typeを抽出する
  2. idまたはname(大文字小文字を区別しない)がbot_nameと一致するエージェントを検索する
  3. 名前でマッチしない場合は、agent_typebot_agent_typeと一致する最初のエージェントにフォールバックする
  4. エージェントが一切マッチしない場合、イベントは確認されるがディスパッチされない

マルチエージェントの例

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フィールドを設定することで異なるエージェントに異なるイベントをルーティングできます。

次のステップ

Released under the Apache-2.0 License.