核心概念
一个自动化由触发器和 操作 组成,还可以选配条件和 Preflight 检查:操作类型
触发源
非计划类来源需要在 Settings > 连接 中连接对应的集成后,才会出现在触发器选择器中。
单个自动化可以有多个触发器——它们按 OR 逻辑生效,因此当任一触发器匹配时,自动化就会触发。例如,你可以创建一个同时在 GitHub CI 失败和 Slack 表情回应时触发的自动化。
创建自动化
在 自动化 页面中
- 在侧边栏中打开 自动化
- 点击 Create automation,然后选择 Create 打开一个空白编辑器 (如果你还没有任何自动化,请改为在引导页上点击 Create manually) 。该菜单还提供 Template (打开模板库) 和 Generate with Devin (启动一个会话,与你一起构建自动化)
- 配置触发器、条件和 action
- 点击 Create automation
从模板开始
- 在侧边栏中前往 自动化
- 点击 Create automation > Template (如果你还没有任何自动化,请改为点击首页上的 Create from template) ,或直接前往
/automations/templates - 浏览模板库——每个模板都是针对常见工作流程预先配置的自动化
- 点击某个模板,即可用其触发器、action 和建议值预填充编辑器
- 自定义配置 (例如选择你的 Slack 频道或代码仓库) 并点击 Create automation
使用自然语言
在自动化页面上,点击 Create automation > Generate with Devin (如果你还没有任何自动化,请改为点击首页上的 Generate with Devin 卡片) 。Devin 会打开一个新会话,协助你构建自动化。描述你的需求——例如:“当 my-org/my-repo 上的某个 CI 检查失败时,让 Devin 修复它并推送到同一分支。”Devin 会为你生成自动化配置,你可以查看并创建。配置触发器
Slack 触发器
当在已邀请 Devin 加入的频道中发布消息,或在其中添加表情回应时,Slack 触发器就会触发。- Slack 消息:在有新消息时触发。默认会添加一个频道条件;你可以移除它以匹配跨频道的消息,但此时每个条件组都需要至少一个其他过滤器 (例如消息文本或发送者类型——仅有 Include thread replies 是不够的) 。
- 用户组被提及:当有人提及某个 Slack 用户组 (例如
@oncall) 时触发。选择该用户组或输入其 Slack ID (以S开头) ,还可以将其限定在特定频道内。 - Slack 表情回应:当消息被添加特定的 emoji 表情回应时触发 (例如,用于事件的 🚨) 。你可以按表情回应名称和频道进行筛选。
对于限定频道作用域的触发器,必须先邀请 Devin 加入相应的 Slack 频道。你还必须在 Settings > 连接 > Slack 中连接你的个人 Slack 账户。
GitHub 触发器
GitHub 触发器会在代码仓库事件发生时触发。你必须为每个触发器选择一个特定的代码仓库。- Issue:在 issue 事件 (如打开、关闭、重新打开、编辑、添加标签) 发生时触发。
- Issue comment:当有人在 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 自动化仅在私有代码仓库中触发。Admin 可以为单个 GitHub 连接启用公共代码仓库:在 Settings → 连接 → GitHub 中,打开该连接的菜单,并将 Automation scope 设置为 All installed repos。互联网上的任何人都可以在公共代码仓库中发表评论或创建 PR,因此公共代码仓库触发器存在更高的提示注入风险——请审慎启用,并严格限定触发器条件。
GitLab 触发器
GitLab 触发器会在你所连接的 GitLab 实例中发生项目事件时触发:- Merge request:在 MR 操作时触发 (opened、closed、merged、reopened、approved、updated) 。
- MR comment:当有人在 merge request 上发表评论 (note) 时触发,包括 diff 审查会话线程。
- Issue:在 issue 操作时触发 (opened、closed、reopened、updated) 。
- Issue comment:当有人在 issue 上发表评论时触发。
- Push:向分支推送提交时触发。
- Pipeline:当 pipeline 达到指定状态时触发 —— 可按状态过滤 (例如
failed) ,以自动修复失败的 pipeline。
Linear 触发器
Linear 触发器会在你已连接的 Linear 工作区中发生问题事件时触发。你必须为每个触发器选择一个团队。- 问题已创建:在所选团队中创建新问题时触发。
- 标签已添加:当某个标签被添加到问题时触发 (例如
bug、devin) 。 - 状态已更改:当问题的状态发生变化时触发 (例如移至“进行中”) 。
- 优先级已更改:当问题的优先级发生变化时触发。
- 已分配:当问题被分配给某人时触发。
- 问题已移动:当问题被移动到其他团队时触发——触发器的团队过滤器匹配的是目标团队。
Jira 触发器
Jira 触发器会在你已连接的 Jira 站点中发生 issue 事件时触发。你可以按项目、标签、状态、负责人和 Epic 进行过滤:- 问题已创建:创建新 issue 时触发。
- 问题已更新:issue 字段发生变化时触发。
- 已添加标签:为 issue 添加标签时触发。
- 状态已更改:issue 状态发生变化时触发。
- 已分配:issue 被分配给某人时触发。
- 评论已创建或已编辑:在 issue 上添加或编辑评论时触发。
计划触发器
计划触发器会按照时间计划触发,可以周期性执行,也可以只运行一次。在触发器下拉菜单中,展开 计划,然后选择 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:在未来某个指定日期和时间触发一次,随后会自动禁用。适合一次性的延迟任务,例如“12 小时后唤醒 Devin 去运行一个任务”。选择日期和时间 (默认为从现在起一小时后) ;该时间必须晚于当前时间。
Webhook 触发器
Webhook 触发器可让你通过唯一的 HTTPS 端点将任何外部系统连接到 Devin。- 创建一个使用 Webhook 触发器的自动化
- 复制触发器配置中显示的 webhook URL 和 secrets
- 配置你的外部系统 (PagerDuty、Datadog、Sentry 或任何自定义工具) ,使其向该 URL 发送 HTTP POST 请求
- 可选添加 负载 过滤器——即一个正则表达式模式;只有当请求正文匹配该模式时,自动化才会触发
X-Webhook-Secret: <secret>标头Authorization: Bearer <secret>标头?secret=<secret>查询参数
Webhook secrets
每个 webhook 触发器都有一个用于验证传入请求的 secrets——未携带正确 secrets 的请求会被拒绝。系统会为你生成该 secrets,并在你通过自动化编辑器添加 webhook 触发器时显示。secrets 显示时请立即复制——之后将不再显示。丢失的 secrets 无法恢复;请重新生成。
X-Webhook-Secret HTTP 标头中包含该 secrets。例如,使用 curl 进行测试:
Preflight 检查
Preflight 检查是一个可选步骤,在触发条件匹配之后、自动化操作执行之前运行。每个自动化可以使用以下两种类型之一:
要添加 Preflight 检查,请点击触发条件部分下方的 Add a step before the agent runs,然后选择 LLM 过滤器 或 Run a script。
Preflight 脚本正在逐步推出。如果未看到 Run a script 选项,说明您的组织尚未启用脚本功能。
LLM 过滤器
选择 LLM 过滤器,并描述要保留或排除哪些事件。例如:“与 auth 服务相关的 PR”或“关于晚餐的 Slack 消息”。 轻量级决策模型会读取完整的事件内容,只有匹配的事件才会触发智能体运行。配置并测试 Preflight 脚本
该脚本在一台独立的短期有效虚拟机 (VM) 中运行,而不是在它可能启动的 Devin 会话内运行。脚本可以读取事件,在多次运行之间保留少量状态,并决定哪些工作会交由已配置的操作处理。- 创建一个自动化或编辑现有自动化,并配置其触发器和条件。
- 点击触发器部分下方的 Add a step before the agent runs,然后在 Before the agent runs 卡片中选择 Run a script。
- 点击 Edit script,在运行时选择器中选择 Python、Node (JavaScript) 或 Bash,然后编辑初始脚本。
- 如有需要,可在脚本编辑器中通过 Select secrets 关联组织 secrets。只有选中的 secrets 才会作为环境变量注入。保存或测试关联了 secrets 的脚本时,需要具备管理组织 secrets 的权限。
- 在卡片中设置 Timeout (seconds):默认为 60 秒,可设置范围为 1–300 秒。脚本默认使用 Minimal environment;如果可以使用机器快照,你还可以通过 Environment 选择器选择包含所需依赖的组织快照。
- 在脚本编辑器中,在 Test against 下选择一个事件,然后点击 Run。你可以使用已配置触发器的示例事件来测试未保存的脚本,也可以使用现有自动化的近期事件进行测试。检查结果和日志;如果脚本产出了条目,还可以查看预览,了解其中有多少会运行、多少为重复项、多少会被推迟。
- 点击 Save script 应用编辑器中的更改,然后点击 Create automation 或保存该自动化,使配置生效。
脚本输入与输出
脚本会接收以下环境变量。每个变量的值都是文件路径,而不是 JSON 数据本身:
向
OUTPUT_FILE 写入 run 或 items 中的一个 (只能二选一) ,并可选择附带一个字符串类型的 reason:
例如,以下 Python 脚本仅在 Slack 消息文本包含
urgent 时才放行该消息:
OUTPUT_FILE,并以退出码 0 退出。
脚本条目、状态与限制
- 防止重复: 条目的
id标识的是此自动化中的一个工作单元,而不仅仅是一个实体。{"id": "INC-1"}只会被处理一次;如需处理该事件的再次发生,请添加version,例如上游的更新时间戳。如果没有id,Preflight 会根据条目内容的 hash 来识别条目,因此内容一旦变更,就可能再次触发运行。 - 每次运行的条目上限: 默认情况下,每次运行最多分派 10 个新条目;系统允许的最大上限为 50。超出上限的条目不会被处理,也不会被自动计划。你的脚本必须在下一次运行时重新输出这些条目。不要仅因为被推迟的工作出现在了输出中,就将游标推进到这些工作之后。
- 先前结果: 使用
LAST_RUN_FILE区分运行中、已成功、已失败或已跳过的工作。运行失败的条目会被释放,之后的脚本运行可以再次输出它。 - 持久化状态: 同一自动化的实时脚本运行会依次执行,每次只运行一个。脚本失败时不会推进已保存的状态,也不会将条目标记为已处理。Clear state 会同时清除已保存的 JSON 状态和已处理条目的历史记录;重置后,之前已处理的条目可以再次运行。
- 大小限制: 脚本源代码和输出各不得超过 256 KiB,已保存的状态不得超过 64 KiB,捕获的日志不得超过 1 MiB。
- 失败: 非零退出码、超时、输出或状态无效,或者基础架构故障,都会使该事件在执行 操作 之前终止。系统不会针对该事件自动重试脚本;之后的触发可以再次运行该脚本。
- 网络访问: 脚本所在的虚拟机遵循该自动化的网络限制及适用的安全 Profile。例如,要轮询外部告警服务,必须先允许访问其主机。附加 secrets 并不会授予网络访问权限。
配置 actions
启动会话
这是最常见的action。触发器触发时,Devin 会根据你的提示启动一个新会话。事件负载 (例如 Slack 消息文本、GitHub webhook 请求体,或 Linear 工单详情) 会自动附加到提示中,以便 Devin 获得完整上下文。 选项:- 提示:Devin 会遵循的指示。像编写普通的 Devin 提示一样编写即可。
- Playbook (可选) :在你的提示中使用
@playbook-name,即可包含一个 playbook 来提供额外指示。 - 标签 (可选) :为此自动化创建的会话添加标签,便于筛选。
向会话发送消息
向现有的长期运行的 Devin 会话发送消息。当你希望使用同一个持久会话持续处理事件,而不是为每个事件都创建新会话时,这一方式很有用。 配置此 action 时,你必须选择目标会话。分流 Devin (监控)
创建一个持续运行的 Devin 会话,用于监控 Slack 频道。有关此action类型的完整说明,请参阅自动分流指南。电子邮件通知
在自动化运行时发送电子邮件通知。选择接收通知的时机:- 始终 — 每次触发时
- 失败时 — 仅当会话失败或出错时
- 成功时 — 仅当会话成功完成时
限制与防护措施
自动化功能内置了控制机制,可防止用量失控:ACU 限制
为此自动化启动的每个会话设置最高 ACU (Agent Compute Unit) 预算。如果 Devin 达到该限制,会话将停止。这可以防止单次调用消耗过多资源。触发次数限制
设置自动化在一定时间窗口内可触发的次数上限。例如,“每小时最多触发 10 次”可防止嘈杂的 Slack 频道 或接连出现的 CI 失败引发数十个会话。 这两个字段均为可选项——如果清空,自动化将不受该限制。新建的自动化默认不设 ACU 限额,速率限制为每小时 50 次运行 (监听 Slack 频道的分流自动化为每小时 150 次) ;模板沿用相同的默认值。排队
默认情况下,每个匹配的事件都会立即启动一次运行。在自动化编辑器中开启 Enable queueing,即可限制同时进行的运行数量:- Concurrent runs:此自动化可同时进行的最大运行数。超出的事件会在队列中等待。一旦某次运行的会话结束并开始等待新的指示,该运行便不再计入此限制。
- Queue depth:队列中最多可等待的事件数。队列已满时到达的事件将被丢弃。
网络策略
你可以启用网络策略,以限制自动化会话可访问的外部主机。这对于处理不可信用户输入 (例如 Slack 消息、webhook 请求负载) 的自动化尤为重要。如果 Devin 需要访问外部服务,你可以将特定域名添加到允许列表中。自动化的网络策略只会缩小访问范围:它会与管理自动化会话的安全 Profile取交集。MCP 集成
自动化会与 MCP 集成 配合使用,让 Devin 能够访问外部工具。创建自动化时,连接 部分会显示推荐的 MCP 服务器及其连接状态。 例如,“Fix Sentry Errors Daily” 模板会推荐 Sentry MCP,以便 Devin 查询 Sentry 中尚未解决的错误。“Investigate Alerts Triggered” 模板会推荐 Datadog MCP,用于提取指标和追踪数据。 在创建需要这些 MCP 服务器的自动化之前,请先在 Settings → 连接 → MCPs 选项卡中启用它们 (或从插件市场安装相应的插件) 。Slack 工具访问权限
默认情况下,自动化会话可以读取和写入触发条件中涉及的 Slack 频道。你可以在自动化编辑器的 Slack 工具 部分为其他 Slack 频道授予访问权限。当 Devin 需要读取触发自动化的频道之外的多个频道时,这一设置会很有帮助。活动与监控
每个自动化都会记录其调用历史。在自动化详情页面中,Activity 选项卡会显示:- 最近的调用及其时间戳
- 每次调用是成功还是被跳过
- 已创建的 Devin 会话链接
- 调用失败时的错误消息
启用和禁用
您可以随时在自动化列表或详情页面中启用或禁用自动化。已禁用的自动化将停止处理事件,但会保留其配置。重新启用后,将立即恢复事件处理。模板
Devin 内置了一个模板库,涵盖常见工作流程的预置自动化模板:
要浏览全部模板,请在 Devin app 中打开 自动化 页面,然后点击 Create automation > Template (或直接访问
/automations/templates) 。
