Skip to main content
自動化を使うと、Slackのメッセージ、GitHub Webhook、Linearのチケット更新、スケジュール、カスタムWebhookなどの外部イベントを、自動的に開始されるDevinのセッションに連携できます。バグの報告やCIチェックの失敗のたびに毎回Devinを手動でタグ付けする代わりに、トリガーを一度定義しておけば、あとはイベントが発生するたびにDevinが処理します。また、Terraformプロバイダーを使って自動化を宣言的に管理することもできます。4つの使用例を紹介する動画での解説は、Devinの自動化チュートリアルをご覧ください。

基本概念

自動化はトリガーとアクションで構成され、任意で条件とプリフライトチェックを追加できます。

アクションの種類

トリガーソース

スケジュール以外のソースは、対応する統合が Settings > Connections で接続されると、トリガーのピッカーに表示されます。 1 つの自動化に 複数のトリガー を設定できます。これらは OR 条件として機能するため、いずれかのトリガーに一致すると自動化が発生します。たとえば、GitHub の CI の失敗と Slack のリアクションの両方で発生する 1 つの自動化を作成できます。

自動化を作成する

自動化ページから

  1. サイドバーで 自動化 に移動します
  2. Create automation をクリックし、Create を選択して空のエディタを開きます (自動化をまだ作成していない場合は、ランディングページで Create manually をクリックします)。同じメニューには Template (テンプレートギャラリーを開きます) と Generate with Devin (Devin と一緒に自動化を作成するセッションを開始します) もあります
  3. トリガー、条件、アクションを設定します
  4. Create automation をクリックします

テンプレートから

  1. サイドバーの自動化に移動します
  2. Create automation > Templateをクリックするか、/automations/templates に直接アクセスします (自動化がまだない場合は、ランディングページでCreate from templateをクリックします)
  3. テンプレートギャラリーを閲覧します — 各テンプレートは、一般的なワークフロー向けに事前設定された自動化です
  4. テンプレートをクリックすると、トリガー、アクション、推奨される上限がエディタに事前入力されます
  5. 設定をカスタマイズし (Slack チャンネルやリポジトリを選択するなど) 、Create automationをクリックします

自然言語を使う

自動化ページで Create automation > Generate with Devin をクリックします (自動化をまだ作成していない場合は、ランディングページの Generate with Devin カードをクリックします) 。Devin が新しいセッションを開始し、自動化の作成をサポートします。実行したい内容を入力してください。たとえば、「my-org/my-repo で CI チェックが失敗したら、Devin に対処させて同じブランチにプッシュする」といった内容です。Devin が自動化の設定を生成するので、内容を確認して作成できます。

トリガーの設定

Slack トリガー

Slack トリガーは、Devin が招待されているチャンネルでメッセージが投稿されたとき、またはリアクションが追加されたときに作動します。
  • Slack メッセージ: 新しいメッセージが投稿されると作動します。既定ではチャンネル条件が追加されますが、これを削除すれば複数のチャンネルをまたいでメッセージに一致させられます。ただしその場合、各条件グループには少なくとも 1 つ別のフィルターが必要です (例: メッセージ本文や送信者の種類。Include thread replies だけでは不十分です) 。
  • ユーザーグループのメンション: Slack のユーザーグループ (例: @oncall) がメンションされると作動します。グループを選択するか、その Slack ID (S で始まる) を入力します。必要に応じて、対象を特定のチャンネルに限定することもできます。
  • Slack リアクション: メッセージに特定の絵文字リアクションが追加されると作動します (例: インシデント用の 🚨) 。リアクション名とチャンネルで絞り込めます。
チャンネル単位のトリガーでは、Devin を Slack チャンネルに招待する必要があります。また、Settings > Connections > Slack で個人の Slack アカウントを接続しておく必要があります。

GitHub トリガー

GitHub トリガーは、リポジトリで発生するイベントをきっかけに発生します。各トリガーごとに、対象のリポジトリを1つ選択する必要があります。
  • Issue: issue イベント (オープン、クローズ、再オープン、編集、ラベル付け) で発生します。
  • issue コメント: GitHub issue にコメントが投稿されると発生します。一般的には starts_with "/devin" 条件と組み合わせて利用し、ユーザーが任意の issue で /devin と入力すると Devin をトリガーできます。
  • Pull request: PR イベント (オープン、同期など) で発生します。
  • Pull request review: PR にレビューが送信されると発生します。
  • Pull request review comment: 個別のレビューコメントで発生します。
  • Check run (CI): CI チェックが完了すると発生します。conclusion = failure で絞り込むと、失敗したビルドを自動修正できます。
  • Push: ブランチへのプッシュで発生します。
デフォルトでは、GitHub の自動化は非公開リポジトリでのみ発生します。管理者は、個々の GitHub 接続で公開リポジトリを利用できるように設定できます。Settings → Connections → GitHub で接続のメニューを開き、Automation scope を All installed repos に設定します。インターネット上の誰でも公開リポジトリにコメントしたり、PR を作成したりできるため、公開リポジトリのトリガーではプロンプトインジェクションのリスクが高まります。意図した場合にのみ有効にし、トリガー条件は限定的に保ってください。

GitLab のトリガー

GitLab のトリガーは、接続された GitLab インスタンス内のプロジェクトイベントで発生します:
  • Merge request: MR のアクション(opened、closed、merged、reopened、approved、updated)で発生します。
  • MR コメント: マージリクエストにコメント(ノート)が投稿されたときに発生します。diff のレビュースレッドも対象です。
  • Issue: issue のアクション(opened、closed、reopened、updated)で発生します。
  • issue コメント: issue にコメントが投稿されたときに発生します。
  • Push: ブランチへのプッシュで発生します。
  • Pipeline: パイプラインが指定したステータスに達したときに発生します。ステータス(例: failed)でフィルタリングすれば、失敗したパイプラインを自動的に修正できます。

Linear のトリガー

Linear のトリガーは、接続されている Linear ワークスペース内の issue イベントで発生します。各トリガーごとにチームを選択する必要があります。
  • Issue created: 選択したチームで新しい issue が作成されると発生します。
  • Label added: issue にラベルが追加されると発生します (例: bug, devin) 。
  • Status changed: issue のステータスが変更されると発生します (例: 「In Progress」に移動) 。
  • Priority changed: issue の優先度が変更されると発生します。
  • Assigned: issue が誰かに割り当てられると発生します。
  • Issue moved: issue が別のチームに移動されると発生します。トリガーのチームフィルターは移動先のチームと照合されます。

Jira triggers

Jira の triggers は、接続された Jira サイトの issue イベントで発生します。プロジェクト、labels、ステータス、担当者、エピックでフィルタリングできます。
  • Issue created: 新しい issue が作成されたときに発生します。
  • Issue updated: issue のフィールドが変更されたときに発生します。
  • ラベル: issue に label が付与されたときに発生します。
  • Status changed: issue のステータスが変更されたときに発生します。
  • Assigned: issue が誰かに割り当てられたときに発生します。
  • Comment created or edited: issue にコメントが追加または編集されたときに発生します。

スケジュールトリガー

スケジュールトリガーは、時間ベースのスケジュールに従って発生し、定期実行または1回限りの実行を設定できます。トリガーのドロップダウンで Schedule を展開し、Every hour、Every day、Every week、Run once、または Custom schedule を選択します。
  • Recurring: 頻度 (毎時、毎日、毎週) と時刻を設定します。スケジュールは内部的に iCalendar の RRULE 形式を利用しています。Custom schedule を選択すると、カスタムの繰り返し (N 分 / 時間 / 日 / 週 / か月ごとに繰り返す) を作成できます。より複雑な間隔を設定する場合は、生の RRULE 文字列 (例: FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0) を直接入力することもできます。
  • Run once: 将来の特定の日時に1回だけ発生し、その後自動的に無効になります。1回限りの遅延実行に便利です。たとえば、「12時間後に Devin を起こしてタスクを実行する」といった使い方です。日付と時刻を選択します (既定では現在から1時間後) 。指定する日時は未来である必要があります。
スケジュールごとに個別のタイムゾーンを設定できます。デフォルトはブラウザーのタイムゾーンで、スケジュールエディターで変更できます。スケジュールは、夏時間の切り替えをまたぐ場合も含め、そのタイムゾーンの現地時刻で実行されます。

Webhookトリガー

Webhookトリガーを使うと、一意のHTTPSエンドポイント経由で任意の外部システムをDevinに接続できます。
  1. Webhookトリガーを使って自動化を作成します
  2. トリガー設定に表示されるWebhook URLとシークレットをコピーします
  3. このURLにHTTP POSTリクエストを送信するよう、外部システム (PagerDuty、Datadog、Sentry、またはカスタムツール) を設定します
  4. 必要に応じてペイロード filterを追加します — これは、自動化が実行される条件として、リクエスト本文が一致する必要のある正規表現パターンです
以下のいずれかの方法でWebhookシークレットを渡します:
  • X-Webhook-Secret: <secret> ヘッダー
  • Authorization: Bearer <secret> ヘッダー
  • ?secret=<secret> クエリパラメータ
ヘッダーを使用することを推奨します — クエリ文字列はproxy、CDN、serverのアクセスログに記録されることがよくあります。 Webhookのペイロードは、前提情報としてDevinのセッションプロンプトに含まれます。200 KBを超えるペイロードは自動的に切り詰められます。

Webhook シークレット

各 Webhook トリガーには、受信リクエストを認証するためのシークレットがあります。正しいシークレットが含まれていない呼び出しは拒否されます。シークレットは自動生成され、自動化エディタで Webhook トリガーを追加する際に表示されます。
シークレットは表示されたときにコピーしてください。再表示されることはありません。紛失したシークレットは復元できないため、再生成してください。
各リクエストには、X-Webhook-Secret HTTP ヘッダーにシークレットを含める必要があります。たとえば、curl でテストするには:
シークレットを紛失した場合やローテーションが必要な場合は、自動化エディタでWebhookトリガーを開き、シークレットを再生成してください。古いシークレットは直ちに無効になるため、外部システムを新しい値に更新してください。

プリフライトチェック

プリフライトチェックは、トリガーが一致してから自動化のアクションが実行されるまでの間に実行される任意のステップです。自動化には、次の2種類のうちいずれか1つを設定できます。 追加するには、トリガーセクションの下にある Add a step before the agent runs をクリックし、LLM filter または Run a script を選択します。
プリフライトスクリプトは順次展開中です。Run a script が表示されない場合、ご利用の組織ではまだスクリプトが有効になっていません。
自動化の Run now ボタンを使用すると、プリフライトチェックはバイパスされ、設定済みのアクションが直接実行されます。

LLM filter

LLM filter を選択し、対象に含めるイベントと除外するイベントの条件を記述します。たとえば、「auth サービスに関するプルリクエスト」や「夕食に関する Slack メッセージ」のように指定します。 軽量な判定モデルがイベント全体を読み取り、条件に一致したイベントに対してのみエージェントを実行します。

プリフライトスクリプトを設定してテストする

スクリプトは、自身が起動する可能性のある Devin セッションの中ではなく、別の一時的な仮想マシン (VM) 上で実行されます。スクリプトはイベントを読み取り、実行間で少量の状態を保持し、設定済みのアクションにどの作業を渡すかを判断できます。
  1. 自動化を作成するか既存の自動化を編集し、トリガーと条件を設定します。
  2. トリガーセクションの下にある Add a step before the agent runs をクリックし、Before the agent runs カードで Run a script を選択します。
  3. Edit script をクリックし、ランタイムセレクターで Python、Node (JavaScript) 、または Bash を選択して、スタータースクリプトを編集します。
  4. 必要に応じて、スクリプトエディターの Select secrets から組織のシークレットをアタッチします。環境変数として注入されるのは、選択したシークレットのみです。シークレットをアタッチしたスクリプトを保存またはテストするには、組織のシークレットを管理する権限が必要です。
  5. カードで Timeout (seconds) を設定します。デフォルトは 60 秒で、設定可能な範囲は 1~300 秒です。スクリプトはデフォルトで Minimal environment を利用します。マシンスナップショットが利用可能な場合は、Environment セレクターで依存関係を含む組織のスナップショットを選択することもできます。
  6. スクリプトエディターで Test against からイベントを選択し、Run をクリックします。未保存のスクリプトを、設定済みトリガーのサンプル、または既存の自動化の最近のイベントに対してテストできます。結果とログを確認し、出力されたアイテムがある場合は、実行・重複・延期となる件数のプレビューも確認します。
  7. Save script をクリックしてエディターの変更を適用し、続けて Create automation をクリックするか自動化を保存して、設定を確定します。
テスト実行ではスクリプト自体は実行されますが、自動化のアクションは実行されず、保存済みの状態も変更されず、出力されたアイテムが処理済みとしてマークされることもありません。ただし、スクリプトによる外部リクエストや副作用は実際に発生します。たとえば、外部サービスに書き込むスクリプトをテストすると、その書き込みは実際に行われます。

スクリプトの入力と出力

スクリプトは次の環境変数を受け取ります。各変数に含まれるのは JSON データそのものではなく、ファイルパスです。 OUTPUT_FILE には run または items のいずれか一方のみを書き込みます。必要に応じて、文字列の reason も含められます。 たとえば、次の Python スクリプトは、テキストに urgent を含む Slack メッセージのみを通過させます。
Test against で Slack メッセージのサンプルまたは最近の Slack メッセージを選択すると、結果を確認できます。判定結果を標準出力に出力するだけでは不十分です。スクリプトは有効な JSON を OUTPUT_FILE に書き込み、終了コード 0 で終了する必要があります。

スクリプトのアイテム、状態、上限

  • 重複防止: アイテムの id は、単なるエンティティではなく、この自動化における作業単位を識別するものです。{"id": "INC-1"} は一度だけ処理されます。同じインシデントが新たに発生した際に処理させるには、上流の更新タイムスタンプなどを version として追加してください。id がない場合、Preflight はアイテムの内容の hash でアイテムを識別するため、内容が変わると再度 run が実行される可能性があります。
  • run ごとのアイテム上限: デフォルトでは、1 回の run でディスパッチされる新規アイテムは最大 10 件で、システム上の上限は 50 件です。上限を超えたアイテムは処理されず、自動でスケジュールされることもありません。次回のスクリプト run で改めて出力する必要があります。出力に含めたからといって、保留中の作業を越えて カーソル を進めないでください。
  • 過去の結果: LAST_RUN_FILE を利用すると、作業が実行中、成功、失敗、スキップのいずれであるかを区別できます。run が失敗したアイテムは解放されるため、以降のスクリプト run で再度出力できます。
  • 永続的な状態: 1 つの自動化に対するスクリプトの本番 run は、一度に 1 つずつ実行されます。スクリプトが失敗した場合、保存された状態は更新されず、アイテムが処理済みとしてマークされることもありません。Clear state を実行すると、保存された JSON 状態と処理済みアイテムの履歴の両方がクリアされます。リセット後は、以前に処理されたアイテムが再度実行される可能性があります。
  • サイズ上限: スクリプトのソースと出力はそれぞれ 256 KiB、保存される状態は 64 KiB、取得されるログは 1 MiB までに制限されています。
  • 失敗: 0 以外の終了コード、タイムアウト、無効な出力や状態、インフラストラクチャの障害が発生すると、そのイベントはアクションの実行前に停止します。そのイベントについてスクリプトが自動で再試行されることはありませんが、後続のトリガーによって再度実行できます。
  • ネットワークアクセス: スクリプトの VM には、自動化のネットワーク制限と、適用されるセキュリティプロファイルが適用されます。たとえば、外部のアラートサービスをポーリングするには、そのホストが許可されている必要があります。シークレットをアタッチしても、ネットワークアクセスの権限は付与されません。

アクションの設定

セッションを開始

最も一般的なアクションです。トリガーが発火すると、Devin はプロンプトに基づいて新しいセッションを開始します。イベントのペイロード (例: Slack のメッセージ本文、GitHub webhook の本文、または Linear のチケット詳細) は自動的にプロンプトに追加されるため、Devin は完全な前提情報を得られます。 オプション:
  • Prompt: Devin が従う指示です。通常の Devin のプロンプトを書くのと同じように記述してください。
  • Playbook (任意) : 追加の指示を含めるには、プロンプト内で @playbook-name を利用して プレイブック を指定します。
  • Tags (任意) : この自動化で作成されるセッションにタグを追加すると、簡単に絞り込めます。

セッションにメッセージを送信

既存の長時間実行中のDevinセッションにメッセージを送信します。イベントごとに新しいセッションを起動する代わりに、1つの永続的なセッションで継続的にイベントを処理したい場合に便利です。 このアクションを設定する際に、対象のセッションを選択する必要があります。

Devinをトリアージ (監視)

Slackチャンネルを継続的に監視するDevinセッションを作成します。このアクションタイプの詳細については、自動トリアージガイドを参照してください。

メール通知

自動化の実行時にメール通知を送信します。通知するタイミングを選択してください。
  • 常に — 実行のたびに
  • 失敗時 — セッションが失敗した場合、またはエラーが発生した場合のみ
  • 成功時 — セッションが正常に完了した場合のみ

上限と保護機能

自動化には、使用量の暴走を防ぐための組み込みの制御機能があります。

ACU 上限

この自動化によって開始される各セッションについて、ACU (Agent Compute Unit) の最大使用量を設定します。Devin がこの上限に達すると、セッションは停止します。これにより、1 回の呼び出しで過剰なリソースが消費されるのを防げます。

呼び出し回数の上限

一定時間内に自動化を実行できる回数の上限を設定します。たとえば、「1時間あたり最大10回まで」と設定すると、Slackチャンネルで通知が頻発したり、CI の失敗が立て続けに発生したりしても、何十ものセッションが生成されるのを防げます。 どちらのフィールドも任意です。値を消去した場合、自動化はその上限なしで実行されます。新規の自動化では、ACU上限は設定されず、Rate limit は1時間あたり50回 (Slackチャンネルを監視するトリアージ自動化の場合は1時間あたり150回) が初期値となります。テンプレートにも同じデフォルトが適用されます。

キューイング

デフォルトでは、条件にマッチングしたイベントごとに即座に run が開始されます。同時に実行される run の数を制限するには、自動化エディタで Enable queueing をオンにします。
  • Concurrent runs: この自動化で同時に実行できる run の最大数です。上限を超えたイベントはキューで待機します。run のセッションが終了して新しい指示を待つ状態になると、その run は上限のカウント対象から外れます。
  • Queue depth: キューで待機できるイベントの最大数です。キューが満杯の状態で到着したイベントは破棄されます。
キューに入った run は、自動化のアクティビティに Queued ステータスで表示されます。

ネットワークポリシー

自動化のセッションがアクセスできる外部ホストを制限するために、ネットワークポリシーを有効にできます。これは、信頼できないユーザー入力 (例: Slack メッセージ、Webhook ペイロード) を処理する自動化では特に重要です。Devin が外部サービスに接続する必要がある場合は、特定のドメインを許可リストに追加できます。自動化のネットワークポリシーはアクセスを制限することしかできず、自動化のセッションに適用されるセキュリティプロファイルとの共通部分が適用されます。

MCP 統合

MCP 統合の接続を強く推奨します。Devin がログ、メトリクス、エラーの詳細といった実行時データにアクセスできるようになり、自動化の品質が大幅に向上します。
自動化は MCP 統合 と連携し、Devin が外部ツールにアクセスできるようにします。自動化の作成時には、Connections セクションに、推奨される MCP サーバーとその接続状況が表示されます。 たとえば、“Fix Sentry Errors Daily” テンプレートでは、Devin が Sentry で未解決のエラーをクエリできるように、Sentry MCP を推奨しています。“Investigate Alerts Triggered” テンプレートでは、メトリクスとトレースを取得するために Datadog MCP を推奨しています。 これらが必要な自動化を作成する前に、Settings → Connections → MCPs タブで MCP サーバーを有効にしてください (または plugin marketplace からプラグインをインストールしてください) 。

Slackツールへのアクセス

デフォルトでは、自動化セッションはトリガーに関連するSlackチャンネルを読み書きできます。追加のSlackチャンネルへのアクセス権は、自動化エディタのSlackツールセクションで付与できます。これは、自動化をトリガーしたチャンネルだけでなく、Devinが複数のチャンネルを読み取る必要がある場合に便利です。

アクティビティとモニタリング

各自動化では、実行履歴が追跡されます。自動化の詳細ページでは、Activity タブに次の内容が表示されます。
  • タイムスタンプ付きの最近の実行
  • 各実行が成功したか、スキップされたか
  • 作成されたDevinセッションへのリンク
  • 失敗した実行のエラーメッセージ
自動化の一覧ページには、各自動化のスパークラインが表示され、過去30日間のアクティビティを視覚的に概観できます。

有効化と無効化

自動化は、一覧ページまたは詳細ページからいつでもオン/オフを切り替えられます。無効化された自動化はイベントの処理を停止しますが、設定は保持されます。自動化を再度有効にすると、イベント処理は直ちに再開されます。

Templates

Devin には、よくあるワークフロー向けに用意された自動化テンプレートのライブラリが含まれています。 すべてのテンプレートを閲覧するには、Devin アプリで 自動化 ページを開き、Create automation > Template をクリックします (または /automations/templates に直接アクセスします) 。