Multica Docs

自动化

按时间或 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-5Asia/Shanghai工作日 9:00
*/30 * * * *UTC每 30 分钟
0 3 * * *UTC每天 3:00

Cron 不包含秒,时区使用 Asia/Shanghai 这样的 IANA 名称。保存前,用页面显示的"接下来"时间核对结果。

自动化编辑器:Runbook、时间表设置与接下来几次运行的预览

通过 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 状态响应状态含义
200accepted已受理并创建运行,返回投递和运行 ID。
200skipped已受理,但本次运行被跳过(例如仅运行模式下运行时离线),附带原因。
200ignored未创建运行:触发器已禁用、自动化已暂停或归档,或事件被过滤,reason 字段说明原因。
200duplicate幂等键命中已有投递,返回原投递 ID,不会重复运行。
400错误信息Body 为空、不是有效 JSON,或不是 JSON 对象/数组。
401rejected触发器配置了签名密钥,但请求缺少签名或签名不匹配。
404错误信息URL 中的 token 无效或已被重新生成。
413错误信息Body 超过 256 KiB。
429错误信息请求过于频繁,按响应头 Retry-After 稍后重试。
500错误信息Multica 内部错误,发送方可稍后重试。

暂停、归档和事件过滤这类业务性忽略返回的是 200 而不是 4xx,避免发送方反复重试。

事件与 action 的推断顺序:

  1. body 中带有字符串 event 字段时直接使用;
  2. 否则尝试 X-GitHub-Event 请求头,它会与 body 中的 action 拼成 github.<event>.<action>
  3. 再尝试 X-Gitlab-Event 请求头;
  4. 再尝试 X-Event-Type 请求头;
  5. 再到 body 中的 eventtypeaction 字段;
  6. 全部缺失时记为 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

接下来