跳到主要内容

自动化

自动化按计划执行指令,并把结果交付为普通聊天会话。每日摘要、每周复盘或月报都会在服务器无界面运行,出现在聊天列表中并可继续对话。

组成

自动化包含名称、自由文本指令、最多五个触发器、可选模型(空值表示运行时的默认模型)、运行目标和通知偏好。默认聊天会话Work 任务会启动隔离的 Work 沙箱,并可选择具名策略。启用通知后,失败也进入通知收件箱。名称和指令静态加密,资源归创建者所有。

触发器复用 oncehourlydailyweeklymonthlyyearly。下一次运行取所有触发器中最早的未来时间,并按服务器本地时区计算。

执行

调度器每分钟在协调 Lease 后触发,确保只有一个副本推进计划。到期时记录运行、入队持久任务 automation.run.v1,并通过 Compare-and-set 更新 next_run_at,保证每次事件至多触发一次。任务创建以自动化命名的聊天,并使用与普通对话相同的持久生成管道,包括路由、Persona 默认值和持久化。

服务器停机错过事件时,下次 Tick 只补执行一次最近事件并跳过更早时段。暂停清除计划,恢复或编辑从当前时间重算,删除通过外键级联移除历史。状态来自持久任务账本:生成完成则成功,Dead-letter 则失败,30 分钟未开始则为 stalled

Work 目标使用 Work 生命周期并记录任务;Agent 完成或停下等待输入时成功,任务失败或取消时失败。触发时重新检查 Work 权限,撤销后以 work-access-denied 失败。保存时验证策略并应用网络与资源限制;仅直接模型提供商和支持工具的模型可运行。

Agent 例程

Work 自动化还可通过 workTaskId 绑定现有 Work 任务,这正是 Agent 详情面板“例程”区域的底层形式。绑定例程不会每次创建新任务,而是在该任务自己的工作区和对话中运行,并使用任务的模型、提供商和运行时策略;自动化级模型和策略因此无效,提供的策略会在保存时移除。保存时验证任务存在且属于调用者。任务已删除时以 work-task-missing 失败;任务正在运行或有活动预览时以 work-task-busy 失败,而不会排队。

Webhook 触发器

除计划之外,自动化还可以由外部系统触发:CI 流水线、cron 服务、家庭自动化等。在自动化的编辑对话框中,Webhook 触发器 → 启用会生成该自动化专属的密钥;服务器只保存它的 SHA-256,因此明文只显示一次。轮换密钥会立即使旧密钥失效,禁用 Webhook 则重新关闭该端点。

外部系统这样触发自动化:

curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."

X-Libre-Webhook-Secret: lwh_... 也可作为备用请求头。)响应为 202,并带上已入队的运行 ID——与立即运行走同一条手动运行路径,因此运行的收敛、通知和历史记录完全一致。密钥比较是常量时间的;自动化不存在与密钥错误返回完全相同的结果(不会泄露自动化 ID);暂停中的自动化返回 409:与所有者的“立即运行”不同,外部调用方无法越过暂停触发。

API

除 Webhook 触发外,所有端点都要求认证,并仅操作调用者自己的自动化;Webhook 触发改用该自动化专属的密钥进行认证。

方法路径用途
GET/api/automations列出自动化
POST/api/automations创建
GET/api/automations/occurrences?from=&to=未来事件
GET/api/automations/runs可筛选运行历史
GET/api/automations/runs/summary未读数和 30 天分组
POST/api/automations/runs/seen标记已查看
GET/api/automations/:automationId读取
PUT/api/automations/:automationId更新
DELETE/api/automations/:automationId删除
POST/api/automations/:automationId/pause暂停
POST/api/automations/:automationId/resume恢复
POST/api/automations/:automationId/run立即运行(202 和 ID)
POST/api/automations/:automationId/webhook用密钥触发(202)
POST/api/automations/:automationId/webhook-secret生成或轮换密钥
DELETE/api/automations/:automationId/webhook-secret停用 Webhook

每位用户最多保留 50 项自动化;名称上限 200 字符,指令上限 20,000。