19 · Automations 自动化
把 AI 从”等你发指令才做事”升级为”问题发生就自动处理”——事件驱动的永不停机 Agent。
01 Automations 是什么
Automations 是 Cursor v2.6+ 引入的事件驱动、始终在线的 Agent 系统。它和 Hooks 的本质区别在于:
- Hooks 是”反应式”的——在 AI 操作的前后触发简短脚本
- Automations 是”主动式”的——绑定到外部事件(GitHub PR、Slack 消息、PagerDuty 告警、Cron 定时),自动启动一个完整的 Agent 会话,像工程师一样独立完成任务
通俗理解:Hooks 像门口的警卫——事件来了就喊一声或做个小动作;Automations 像值班工程师——看到警报就坐下排查问题、修代码、提交 PR、通知团队。
| 维度 | Hooks | Automations |
|---|---|---|
| 触发源 | Cursor 内部事件(工具调用前后) | 外部事件(GitHub/Slack/Linear/PagerDuty/Cron) |
| 运行模式 | 脚本执行,毫秒级完成 | Agent 会话,秒到分钟级 |
| 能力边界 | 执行预写脚本,逻辑固定 | 完整的 AI Agent,可推理、可决策、可写代码 |
| 是否需要人类 | 不需要 | 部分场景需要人工审批 |
| 会话时长 | 单次脚本 | 完整的 Agent 对话周期 |
02 核心概念与心智模型
心智模型:自动化值班员
把你的本地 Cursor 想象成一个值班室。Automations 就是值班工程师——他们不是坐在那里等你打电话,而是在各个渠道巡视:
- GitHub PR 开了 → 自动去看代码、写 review
- CI 挂了 → 自动排查日志、尝试修复、提交 fix PR
- 每天上午 10 点 → 自动生成项目状态报告
- 收到 Slack 消息 → 识别意图并执行对应操作
Three Musketeers:Automations 的三角色
Automations 由三个核心角色构成:
- Trigger(触发器):确定”何时启动”——事件来了、时间到了、Webhook 收到了
- Agent(执行 Agent):确定”做什么”——一个完整的 Cursor Agent,有上下文、有工具、能推理
- Review(审批/校验):确定”是否放行”——安全闸门,防止自动化操作造成破坏
这三个角色组合在一起,就构成了一个完整的 Automation。
03 支持的触发器(Triggers)
Automations 支持以下触发器类型:
GitHub PR 触发器
当仓库中的 PR 发生指定事件时触发:
Trigger: GitHub PR
Events: opened, synchronize (新提交), labeled, review_requested, merged, closed典型场景:有新 PR → 自动 Code Review。
Slack Webhook 触发器
通过 Slack 发送消息到指定频道触发:
Trigger: Slack Webhook
格式: /cursor trigger <automation-name> [参数]典型场景:在 Slack 中 @cursor 让它执行某个自动化任务。
Linear 触发器
当 Linear 问题(Issue)状态变更时触发:
Trigger: Linear Issue
Events: created, status_changed, assigned, commented典型场景:Bug 状态变为 “In Progress” → 自动拉到本地分析源码。
PagerDuty 触发器
当 PagerDuty 产生告警时触发:
Trigger: PagerDuty Incident
Events: triggered, acknowledged, resolved典型场景:线上服务告警 → 自动拉取相关日志和代码进行分析。
Cron 定时触发器
按 Cron 表达式定时执行:
Trigger: Cron
Schedule: "0 10 * * 1-5" (工作日上午10点)典型场景:每天早上生成前一天的代码变更报告。
触发器比较
| 触发器 | 最佳场景 | 实时性 | 配置复杂度 |
|---|---|---|---|
| GitHub PR | Code Review、CI 修复 | 高 | 低(OAuth 授权) |
| Slack Webhook | 按需执行、团队协作 | 中 | 低(Bot Token) |
| Linear | 项目管理联动 | 中 | 中(API Key) |
| PagerDuty | 线上事故处理 | 高 | 中(API Key) |
| Cron | 定时任务、报告生成 | 定时 | 低 |
04 配置 Automations
配置文件
Automations 在 .cursor/automations.yaml 中定义:
automations:
# 自动化 1: PR Code Review
- name: auto-review-pr
description: 自动 Review 新提交的 PR
trigger:
type: github_pr
events: [opened, synchronize]
agent:
model: claude-sonnet-4-20250514
instructions: |
你是一个代码审查者。当收到 PR 时:
1. 阅读 PR 描述和 diff
2. 检查:逻辑正确性、边界情况、安全漏洞、性能问题
3. 对每处问题给出具体修改建议
4. 使用 GitHub API 以 review 评论形式提交反馈
tools: [read, edit, bash]
review:
require_approval: false # review 评论不需要人工审批
# 自动化 2: CI 自动修复
- name: auto-fix-ci
description: CI 失败时自动分析和修复
trigger:
type: github_pr
events: [opened, synchronize]
conditions:
- check: 'check_run.conclusion == "failure"'
agent:
model: claude-sonnet-4-20250514
instructions: |
当 CI 检查失败时:
1. 读取 CI 日志,找到失败原因
2. 定位到相关的源码文件
3. 尝试修复问题(修改代码或配置)
4. 提交 fix commit 到 PR 分支
5. 在 PR 上留言说明修复了什么
tools: [read, edit, bash, gh]
review:
require_approval: true # 修改代码需要人工审批
timeout: 30m # 30分钟内未审批则过期
# 自动化 3: 每日报告
- name: daily-report
description: 每天生成项目报告并发送到 Slack
trigger:
type: cron
schedule: "0 9 * * 1-5" # 工作日早9点
agent:
model: claude-sonnet-4-20250514
instructions: |
每天早上生成一份项目状态报告:
1. 检查 Git 最近的 commit 和分支状态
2. 查看 CI 最新运行状态
3. 查看待处理的 PR
4. 汇总为简洁的 Markdown 报告
5. 通过 Slack Webhook 发送到团队频道
tools: [read, bash, gh]Automation 配置字段详解
| 字段 | 说明 | 必填 |
|---|---|---|
name | Automations 的唯一标识名 | ✅ |
description | 描述此自动化做什么 | 推荐 |
trigger.type | 触发器类型(github_pr / slack / linear / pagerduty / cron) | ✅ |
trigger.events | 监听的事件列表 | 各类型不同 |
trigger.schedule | Cron 表达式(type 为 cron 时) | cron 时必填 |
agent.model | 使用的 AI 模型 | 推荐 |
agent.instructions | 告诉 Agent 做什么的具体指令 | ✅ |
agent.tools | 允许 Agent 使用的工具 | 推荐 |
review.require_approval | 是否需人工审批后再执行写操作 | 默认 false |
review.timeout | 审批超时时间 | 可选 |
授权设置
首次使用 GitHub、Slack、Linear 或 PagerDuty 触发器时,需要在 Cursor Settings > Automations 中进行 OAuth 授权:
- GitHub:授权 Cursor 访问你的仓库(建议只授权需要的仓库)
- Slack:添加 Cursor Bot 到你的工作区
- Linear:提供 Linear API Key
- PagerDuty:提供 PagerDuty API Key
权限可以后续随时撤销。
05 实战案例一:自动 PR Code Review
场景
团队使用 GitHub Flow,每次有 PR 提交流需要 Code Review。人工 Review 耗时且容易遗漏。
自动化方案
automations:
- name: pr-reviewer
description: 自动审查所有新 PR
trigger:
type: github_pr
events: [opened, synchronize]
repos: ["my-org/my-repo"] # 限定仓库
agent:
model: claude-sonnet-4-20250514
instructions: |
你是一个严格的代码审查者。
## 每次 PR Review 必须检查
1. **逻辑正确性**:代码逻辑是否符合 PR 描述的目标?有无隐藏 bug?
2. **边界情况**:空值、越界、并发、网络错误等是否处理?
3. **安全性**:有无 SQL 注入、XSS、敏感信息泄露、权限绕过?
4. **性能**:有无 N+1 查询、不必要的循环、内存泄漏?
5. **代码风格**:是否遵循项目规范?
6. **测试覆盖**:新代码是否有对应的测试?
## Review 格式
每条评论包含:
- 文件路径和行号
- 问题的严重级别(🔴 必须修 / 🟡 建议修 / 💡 仅供参考)
- 具体的问题描述
- 建议的修改方案(代码片段)
## 操作
使用 `gh pr review` 提交 review 评论。
如果发现了🔴级别的问题,reject PR。
如果只有🟡或💡级别问题,approve 但加上注释。
## 约束
- 不要修改 PR 的代码——这个自动化只做 review,不改代码
- 不要关闭 PR
- review 评论要简洁专业,用中文
tools: [read, bash, gh]效果
每次有人提交 PR 或推送新 commit,Cursor 自动执行 Code Review,在 PR 上留下 review 评论。开发者在几分钟内就能获得详细反馈,而不需要等待同事有空。
06 实战案例二:自动修复 CI 失败
场景
CI 偶尔因为 flaky test、配置错误、或简单的引入问题而失败。等待人工修复浪费时间。
自动化方案
automations:
- name: ci-fixer
description: CI 失败自动分析和修复
trigger:
type: github_pr
events: [synchronize]
conditions:
- check: |
# 仅当至少一个 CI check 失败时触发
any(check_run.conclusion == "failure" for check_run in payload.check_runs)
agent:
model: claude-sonnet-4-20250514
instructions: |
你是 CI 修复专家。
## 工作流程
1. 读取失败的 CI 日志(使用 `gh run view --log`)
2. 理解失败原因:
- 是测试失败?读失败测试的代码
- 是编译错误?看错误信息定位到文件
- 是 lint/style 问题?看具体违规
- 是环境/配置问题?检查配置文件变更
3. 定位到源码问题所在
4. 提出修复方案并在 PR 上留言(需审批模式)
5. 如果 require_approval 为 true,等审批通过后再提交 commit
6. 提交后确认 CI 重新运行并通过
## 规则
- 每次只修一个问题,commit message 写清楚修了什么
- 如果不能确定修复方案,在 PR 上详细说明分析和建议,不要盲目改代码
- 对于 flaky test,建议加 retry 或标记,而不是修改测试逻辑
- 修完一个后等待 CI 结果,如果还有失败的再继续修
tools: [read, edit, bash, gh]
review:
require_approval: true
timeout: 60m安全机制
这里设置了 require_approval: true,因为自动化修改代码有风险——你可以在 PR 页面审查 AI 提出的修改,批准后 AI 才真正提交 commit。
07 实战案例三:每日报告
场景
技术负责人需要每天了解项目进展:谁提交了什么、CI 状态如何、有没有待处理的 PR。手动整理很麻烦。
自动化方案
automations:
- name: daily-standup-report
description: 每天早上生成项目报告
trigger:
type: cron
schedule: "0 9 * * 1-5" # 工作日9:00
agent:
model: claude-sonnet-4-20250514
instructions: |
生成一份简洁的每日项目报告。
## 报告内容
### 1. 昨日代码活动
- 昨天 main 分支的 commit 统计(数量、主要作者)
- 主要变更摘要(每个 commit 的一句话总结)
### 2. 活跃 PR
- 待 Review 的 PR(列出 PR 号、标题、作者、创建时间)
- 等待合并的 PR(已批准但未合并的)
- PR 合并率趋势
### 3. CI 状态
- 主分支 CI 是否通过
- 最近失败的 CI run(如果有)及其原因
### 4. 健康检查
- 依赖是否有安全漏洞(通过 `npm audit` 或等效工具)
- 代码库中是否有大的技术债务指标变化
## 输出
- 以整洁的 Markdown 格式输出
- 通过 Slack Webhook 发送到 #engineering-standup 频道
- 同时保存到项目 `.reports/` 目录
tools: [read, bash, gh]效果
每天早上 9 点,Slack 上自动收到项目报告。不再需要手动浏览 GitHub、Jenkins 等多个工具去拼凑状态。
08 Security 安全考量
Automations 的能力非常强大——它能写代码、提 PR、访问 GitHub API、发送 Slack 消息。滥用或配置不当可能造成严重后果。
最小权限原则
❌ 错误:给 Automation 所有仓库的完整权限
✅ 正确:只授权需要操作的仓库,用 repos 字段限定
❌ 错误:所有工具无条件开放
✅ 正确:tools 只列出必要工具,不要在不需要时给 gh审批机制
对于高风险操作,一定要开启 require_approval:
| 操作类型 | 建议审批 | 说明 |
|---|---|---|
| 提交 Code Review 评论 | 不需要 | 只读分析,不修改代码 |
| 创建 Issue / 发送消息 | 不需要 | 只增不删改 |
| 修改 PR 代码/提交 commit | ✅ 需要 | 可能引入新问题 |
| 合并 PR | ✅ 需要 | 自动化合并风险大 |
| 操作生产环境(部署等) | ✅ 需要 | 极危险 |
| 发送通知/报告 | 不需要 | 只读取不写入 |
超时控制
设置 review.timeout 防止审批请求一直挂起。超时后自动化会自动取消后续写操作。
审计日志
Automations 的每次运行都有完整日志:
- 何时触发、谁触发的
- Agent 做了哪些操作、读了哪些文件
- 是否被批准或拒绝
- 最终结果(成功/失败/超时)
日志可以在 Cursor Settings > Automations > History 中查看。
09 Automations vs Hooks vs Skills 对比
这三个机制经常让人混淆,这里用一个表格说清楚:
| 维度 | Automations | Hooks | Skills |
|---|---|---|---|
| 触发方式 | 外部事件 / Cron 定时 | AI 操作事件(Pre/Post) | 手动 @激活 |
| 运行体 | 完整 Agent 会话 | 轻量脚本 | AI 对话中的指令模板 |
| 运行环境 | 后台独立运行 | 当前会话上下文中 | 当前会话中 |
| 能力 | 读/写/执行/Git/API | 读 stdin、写 stdout、exit code | 定义 AI 行为流程 |
| 使用场景 | PR Review、CI 修复、报告 | 危险命令拦截、格式化 | TDD 流程、重构规范 |
| 需要人工? | 可选(审批机制) | 不需要 | 需要手动激活 |
| 可复用性 | 可共享/可团队部署 | 项目级配置 | 可共享给团队 |
| 学习成本 | 中高 | 低 | 低 |
选择指南
问自己三个问题:
-
谁触发?
- 我想手动触发 → Skills(
@skill-name) - 我想让 AI 操作触发 → Hooks(
PreToolUse/PostToolUse) - 我想让外部事件/时间触发 → Automations
- 我想手动触发 → Skills(
-
做什么?
- 执行一段固定逻辑的脚本 → Hooks
- 执行一个标准流程(含推理决策)→ Skills
- 执行一个自主分析任务(含外部交互)→ Automations
-
需要多严格?
- 必须阻止某些操作 → Hooks(
exit 2) - 需要有人批准才执行 → Automations(
require_approval) - 不需要安全管控 → Skills
- 必须阻止某些操作 → Hooks(
可以组合使用
这三种机制不是互斥的。典型组合:
- Automation + Hooks:Automation 启动 Agent 跑任务,Hooks 在 Agent 的工具调用上做安全拦截
- Automation + Skills:Automation 触发后,Agent 在运行时可以按 Skill 定义的流程行事
- Hooks + Skills:Hooks 在事件中激活 Skill(注意 Hooks 不能直接
@激活 Skill,但可以输出指令让 AI 遵循 Skill 的逻辑)
10 最佳实践
1. 逐步从简单开始
从最简单的自动化开始——先做一个只读的 PR Review,确认运行正常后,再加修改代码的自动化。
阶段 1: 只读分析(PR Review 评论)
阶段 2: 可写但需要审批(CI 修复)
阶段 3: 全自动(已充分验证的日常任务)2. 给 Agent 写清晰的 Instructions
Instructions 是 Automation 成功的关键。好的 Instructions 像给新同事的入职指南——交代清楚背景、流程、规范、禁忌。
一定要包含:
- 任务目标:一句话说清楚”你要干什么”
- 执行步骤:分步骤列出操作流程
- 检查清单:需要特别注意的事项
- 输出格式:报告/评论的格式要求
- 约束条件:什么不能做
3. 善用条件触发
不是每个 PR 都需要同样的自动化。用 conditions 可以精确控制触发时机:
conditions:
- check: 'pr.draft == false' # 跳过 Draft PR
- check: 'pr.changed_files < 500' # 跳过超大 PR
- check: 'check_run.conclusion != null' # 等 CI 跑完4. 监控运行成本
每个 Automation 运行都会消耗 Cursor 的配额(如果使用 Pro 计划)。设置合理的触发频率可以避免浪费:
- PR Review 只在
opened和synchronize时触发 - Cron 任务不要设置太频繁(每日报告每天一次就够了)
- 用
conditions过滤掉不必要的触发
11 小结
| 要点 | 说明 |
|---|---|
| 本质 | 事件驱动的始终在线 Agent——让 AI 从被动响应变为主动值守 |
| 支持的触发器 | GitHub PR、Slack Webhook、Linear Issue、PagerDuty、Cron |
| 配置位置 | .cursor/automations.yaml |
| 安全机制 | require_approval 审批闸门 + 权限最小化 + 超时控制 |
| 和 Hooks 的区别 | Hooks = AI 内部事件的简短脚本;Automations = 外部事件的完整 Agent |
| 和 Skills 的区别 | Skills = 手动激活的流程模板;Automations = 自动触发的代理任务 |
| 最佳起点 | 先做一个只读的 PR Code Review 自动化 |
Automations 把 Cursor 从”你问我答”的对话式工具,升级成了”自动值守”的开发助手。正确地配置 Automations,你每天可以减少几十分钟到几小时的重复性工作——让 AI 去盯着 CI、审阅 PR、生成报告,你专注于真正需要人类创造力和判断力的工作。
下一篇:20 MCP 集成 —— 用 MCP 协议让 Cursor 连接外部工具和数据源。