自动化
按时间或 Webhook 自动把重复工作交给智能体。
自动化用来执行反复发生的工作,例如每天汇总进展、定期检查依赖,或在外部系统发来事件时启动智能体。
每条自动化保存一份 Runbook、一个执行方和一个或多个触发器。触发后,Multica 会创建 issue 或直接运行智能体,并保留每一次运行记录。
创建自动化
在侧边栏打开自动化,选择模板或从空白开始,然后配置:
- 名称:说明这条自动化负责什么;
- Runbook:智能体每次运行时读取的目标、背景、约束和步骤;
- 执行方:一个智能体或小队;
- 关联项目:可选,让自动创建的 issue 进入指定项目;
- 输出模式:创建 issue,或仅运行;
- 订阅者:自动创建 issue 后需要收到通知的成员;
- 触发方式:时间表或 Webhook。
保存后自动化默认为启用状态;立即运行可随时手动执行一次完整流程。
选择输出模式
| 模式 | 行为 | 适合 |
|---|---|---|
| 创建 issue | 每次触发先创建一条 issue,再分配给执行方;讨论、状态和执行记录都保留在 issue 中。 | 需要团队查看、确认或继续处理的工作。 |
| 仅运行 | 直接创建执行任务,不产生 issue;结果只在自动化的运行历史中查看。 | 无需协作记录的后台执行任务。 |
创建 issue 模式与普通 issue 使用相同的任务队列:运行时离线时可以先创建 issue,执行任务等待运行时上线。
仅运行要求运行时在触发时可用;否则本次运行会显示为"已跳过",不会留下一个等待中的 issue。
按时间运行
时间表编辑器可以选择运行时间、重复日期、时间窗口和时区,并预览接下来的运行时间。一条自动化可以添加多个时间表;单独启停某个触发器通过 CLI 的 autopilot trigger-update 完成,参数见 CLI 命令。
需要更复杂的规则时,可以直接编辑标准 5 字段 cron:
分 时 日 月 星期例如:
| Cron | 时区 | 含义 |
|---|---|---|
0 9 * * 1-5 | Asia/Shanghai | 工作日 9:00 |
*/30 * * * * | UTC | 每 30 分钟 |
0 3 * * * | UTC | 每天 3:00 |
Cron 不包含秒,时区使用 Asia/Shanghai 这样的 IANA 名称。保存前,用页面显示的"接下来"时间核对结果。

通过 Webhook 运行
添加 Webhook 触发器后,Multica 会生成一个唯一 URL。向它发送 JSON 对象或数组,即可触发自动化:
curl -X POST "$MULTICA_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-001" \
-d '{"event":"build.completed","eventPayload":{"status":"success"}}'Payload 会保存在投递和运行记录中,并交给智能体。创建 issue 模式还会把事件内容附在 issue 描述中。
Webhook 请求的约束:
- Body 必须是有效的 JSON 对象或数组,最大 256 KiB;
Idempotency-Key可以避免发送方重试时重复运行;GitHub 也会使用X-GitHub-Delivery去重;- 没有稳定幂等键时,Multica 无法保证重复请求只运行一次;
- 触发器已禁用或事件不匹配时,投递会记录为"已忽略",不会创建运行。
过滤事件
同一个来源会发送多种事件时,可以为触发器添加事件过滤。每行包含一个事件名,以及可选的 action 列表;任意一行命中即可运行,全部留空则接收所有事件。
例如,事件名填写 workflow_run,Actions 填写 completed, failed,只会接收这两类 workflow_run 结果。Multica 会从常见请求头和 payload 中识别事件与 action,包括 GitHub 的 X-GitHub-Event 和 body 中的 action。
保护 Webhook URL
Webhook URL 中的 token 就是调用凭证。不要把完整 URL 放进公开仓库、issue 或截图。URL 泄漏后,点击 URL 旁的重新生成 URL按钮,并立即更新发送方;旧 URL 会马上失效。
只有自动化创建者、工作区 owner/admin 和获得访问权限的协作者可以查看完整 URL。界面默认隐藏 URL 中的 token,复制不需要先显示;点击 URL 或眼睛图标可以查看完整地址。
Webhook 响应速查
调试发送方时,可以对照下表理解 Multica 的响应:
| HTTP 状态 | 响应状态 | 含义 |
|---|---|---|
| 200 | accepted | 已受理并创建运行,返回投递和运行 ID。 |
| 200 | skipped | 已受理,但本次运行被跳过(例如仅运行模式下运行时离线),附带原因。 |
| 200 | ignored | 未创建运行:触发器已禁用、自动化已暂停或归档,或事件被过滤,reason 字段说明原因。 |
| 200 | duplicate | 幂等键命中已有投递,返回原投递 ID,不会重复运行。 |
| 400 | 错误信息 | Body 为空、不是有效 JSON,或不是 JSON 对象/数组。 |
| 401 | rejected | 触发器配置了签名密钥,但请求缺少签名或签名不匹配。 |
| 404 | 错误信息 | URL 中的 token 无效或已被重新生成。 |
| 413 | 错误信息 | Body 超过 256 KiB。 |
| 429 | 错误信息 | 请求过于频繁,按响应头 Retry-After 稍后重试。 |
| 500 | 错误信息 | Multica 内部错误,发送方可稍后重试。 |
暂停、归档和事件过滤这类业务性忽略返回的是 200 而不是 4xx,避免发送方反复重试。
事件与 action 的推断顺序:
- body 中带有字符串
event字段时直接使用; - 否则尝试
X-GitHub-Event请求头,它会与 body 中的action拼成github.<event>.<action>; - 再尝试
X-Gitlab-Event请求头; - 再尝试
X-Event-Type请求头; - 再到 body 中的
event、type、action字段; - 全部缺失时记为
webhook.received。
查看运行和投递记录
运行历史会显示触发来源、时间、状态、关联 issue 或执行任务,以及失败或跳过的原因。Webhook 触发器还会保存单独的投递记录,包括解析出的事件、响应、去重信息和失败原因。
处理完成的 Webhook 投递可以从详情中重放。重放会创建一次新的投递和运行,不会改写原记录;签名校验失败或仍在排队的投递不能重放,重放也不参与去重。
失败、暂停和删除
仅运行模式中的执行任务失败后不会自动重试;下一次时间表仍会按原计划触发。创建 issue 模式产生的是普通 issue 的执行任务,基础设施故障按照执行任务中的规则处理。
Multica 会定期检查近期运行是否持续失败:过去 7 天内已完成或失败的运行不少于 50 次且失败率达到 90% 时,系统会暂停这条自动化并通知创建者;修复原因后可以手动恢复。
手动暂停会停止时间表、Webhook 和"立即运行"。删除实际是归档:停止后续触发,运行和投递历史保留。
管理权限
- 任何工作区成员都可以创建自动化;
- 创建者和工作区 owner/admin 可以编辑、运行、删除及管理触发器;
- 创建者和 owner/admin 可以把协作者加入"管理访问";
- 协作者可以编辑、运行和管理触发器,但不能继续授予其他人权限;
- 能管理自动化不代表一定能运行它使用的智能体,智能体 Access 仍然生效。
使用 CLI
multica autopilot trigger <autopilot-id>
multica autopilot runs <autopilot-id>
multica autopilot trigger-rotate-url <autopilot-id> <trigger-id>完整参数见使用 CLI。
接下来
- 分配 issue 给智能体 — 分配与确认窗口。
- 收件箱与订阅 — 运行通知的接收位置。
- 执行任务 — 执行状态与失败处理。