From 62784b1f2d2a18ab01609bebf9b26fd287fbec3d Mon Sep 17 00:00:00 2001 From: HIsheR Date: Mon, 26 Oct 2026 10:42:45 +0800 Subject: [PATCH] =?UTF-8?q?docs(iteration):=20=E8=AE=B0=E5=BD=95=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E5=99=A8=E7=B2=92=E5=BA=A6=E9=99=90=E5=88=B6=E4=B8=8E?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E6=94=B9=E5=8A=A8=E8=87=AA=E6=A3=80?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ITERATION.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ITERATION.md b/ITERATION.md index 5791f23..7f8a197 100644 --- a/ITERATION.md +++ b/ITERATION.md @@ -10,6 +10,8 @@ - **时间预算**:单次唤起最多连续迭代约 50 分钟,到点在完成当前轮后停止(防止与下次唤起重叠)。**预算判断必须基于客观时钟**:点火时用 `date +%s` 记录起点并写入 `.ua/loop.lock`,每轮开始时重新取 `date +%s` 与起点求差,差值 ≥ 2700 秒(45 分钟)即到点;**禁止凭感觉估算时长**——LLM 无内部时钟,自估时长系统性偏高(实测自报 40+ 分钟而实际约 30 分钟)。 - **熔断**:同一 backlog 条目连续 2 轮失败 → 停止循环,锁照常释放,等待下次唤起。 - **重启语义**:锁心跳超过 15 分钟视为循环中断(崩溃/超时),调度器删旧锁、重新点火。 +- **调度器约束(踩过的坑,勿重复)**:本地调度器只支持 `HOURLY` 及以上粒度(`DAILY/WEEKLY/MONTHLY/YEARLY`),**`FREQ=MINUTELY` / `FREQ=SECONDLY` 不受支持**——写入后 `next_run_at` 会变成 `NULL`,首跑之后永久静默(实测 10/23–10/26 停摆三天)。因此「高频监护」不能靠加密 rrule 实现,只能靠**单次唤起内的连续循环**;心跳间隔 = 1 小时,循环预算 45–50 分钟,两者共同保证覆盖面。任何对自动化的改动(改 prompt、改 rrule、暂停恢复)都必须回查 `next_run_at` 非空,改 prompt 会把状态重置为 `PAUSED`,需再单独置 `ACTIVE`。 +- **有效性自检**:每轮迭代首步除同步仓库外,检查 `.ua/loop.lock` 与 `automation_runtime_state.last_run_at`;若发现上次运行距今超过 2 小时(说明调度中断),在留痕 `summary` 里注明「调度中断后恢复」,便于周报统计停摆时长。 ## 分支流水线