跳至文档内容

Kavor Schedule:为你的图谱加上时钟

Schedule 是一种可见的活动起因:你决定何时发生、连接一个目标,并让每次尝试都能在 Canvas 中检查。

在 Kavor 领域中,Schedule 是当前可用的 Trigger 来源。它不完成工作,也不判断是否应该行动;它只负责 两件事:何时触发以及交付什么 payload

目标决定 payload 的含义:

  • 连接 CodingAgent 时,payload 是 prompt;
  • 连接 Terminal 时,payload 是 shell 命令。

其余行为属于目标。Workspace、目录、provider 或 shell、Git mode、权限、Guardrails 和图谱上下文都保持不变。

Schedule 发起活动;CodingAgent 使用可达上下文执行工作并解释结果。

值得使用 Schedule 的三种场景

带着上下文唤醒 Maintainer

Schedule 每天向 CodingAgent 交付 prompt。该 agent 可以到达保存维护契约的 Specification、执行检查的 Terminal、提供输入的 File、记录报告的 Sticky Note,以及进行独立评估的 Reviewer。

Schedule 提供起因;图谱提供意图、工具、记忆与协作。

执行可见的运维命令

直接连接 Terminal 的 Schedule 可以交付检查、脚本或维护命令。如果 File 也通过环境变量连接到 Terminal, 命令可以使用其规范路径,无需在窗口之间复制值。

sqlite3 app.db < "$CHECK_SQL"

进程仍在真实 Terminal 中运行。Schedule 历史只记录 Kavor 能观察到的交付结果,不会根据 shell 文本臆测成功。

构建小型半自主系统

Schedule — Maintainer — Specification
                      ├─ Terminal
                      ├─ File
                      ├─ Sticky Note
                      └─ Reviewer

这些线表示没有持久方向的 Connections。Schedule 只有一个直接目标:Maintainer。CodingAgent 使用其余可达组件 完成 prompt,并为人工决策留下证据。

先配置,再让时钟运行

新的 Schedule 以未来一次性执行且 Paused 的状态开始。你可以先编写 payload、选择周期、连接目标并检查预览, 再授权活动。

安全顺序如下:

  1. 向 Canvas 添加 Schedule;
  2. 编写具体且可验证的 payload;
  3. 选择一次执行或周期执行;
  4. 检查 Next occurrences 和显示的时区;
  5. 直接连接一个 CodingAgent 或 Terminal;
  6. 结构准备好后才使用 Resume

Trigger 在配置期间可以没有目标。运行中的 Schedule 若没有目标 Connection,会将该时刻记录为 Blocked; 没有目标时执行 Run now 会在创建尝试前被拒绝。

编写能够结束的 payload

好的 CodingAgent prompt 应说明目标、图谱资源、预期证据和停止条件:

分析最近的 CI 失败。只在 Checks Terminal 中执行相关检查,把有证据的摘要写入 Daily report Sticky Note, 并请 Reviewer 独立评估。在记录可能原因前不要修改代码;如果修复需要扩大 Specification 范围就停止。

好的 Terminal 命令应明确、非交互,并产生可观察结果:

pnpm test -- --runInBand

payload 不能替代 Connections。仅在文字中提到 Sticky Note、File 或 Specification 不会授予访问权;该 Node 必须属于 CodingAgent 的可达组件。

不隐藏日历的周期设置

编辑器提供 OnceHourlyDailyWeekdaysWeeklyMonthly,以及用于高级 cron 的 Custom。 预设和高级编辑器修改同一个表达式,不存在两套会漂移的计划。最小间隔为一分钟。对于 cron 无法正确表达的周期, 例如“从某天起每两周一次”,不要使用误导性的近似表达式。

Kavor 保存明确的 IANA 时区,并按显示 Canvas 的机器本地时区展示后续发生时间。时区不能在界面中编辑;保存时由 host 写入。使用 Resume 前始终检查预览。

夏令时重叠的本地时间只触发一次;向前调钟时不存在的时间会移到第一个有效的本地时刻。月度预设会跳过当月不存在 的日期,例如 31 日不会在二月执行。

Pause、Resume 与 Run now 不同

  • Pause 立即停止新发生;暂停期间不会产生尝试或 Missed 记录。
  • Resume 只考虑未来发生,并要求有效 payload;一次性执行也必须仍在未来。
  • Run now 创建独立的手动尝试,暂停时也可用,且不会移动下一次周期时间。

Run now 用于在启动时钟前验证 payload 和目标。它不是自动 retry,也不会改变 Paused 或 Running 状态。 Once 执行消耗后回到 Paused;历史和 Run now 仍可使用。

到点时会发生什么

Kavor 为该时刻保存持久尝试,并与目标已接受的消息一起协调交付。尝试可能先经过 PendingDelivering

  • Completed — Kavor 观察到完成;
  • Needs attention — CodingAgent 请求介入,之后仍可能完成;
  • Fired — 已交付,但该路径没有可观察的完成状态;
  • Failed — 出现可观察失败;
  • Interrupted — 交付已开始,但没有可靠结果;
  • Blocked — 目标或 Workspace 在交付时不可用;
  • Missed — runtime 未能占用该时刻;
  • Coalesced — 目标唯一的待处理槽位已被另一尝试占用。

计划时间本身不是执行证据。查看 Node 的最新状态并打开历史,检查标称时间、交付、结果与诊断。

机器休眠或 Kavor 未运行时

Schedule 依赖本地 runtime:Kavor 必须运行、机器保持唤醒、用户已认证且目标会话处于活动状态。

若停机期间错过多个时刻,Kavor 只为该 Schedule 记录最近一次 Missed,不会在长时间离线后创建成千上万条记录, 也不会在恢复时突然执行旧任务。界面会显示 Missed,并提供等同于 Run now 的明确操作。

不存在自动 catch-up,也不会自动 retry 外部效果。

目标已经忙碌时

目标工作期间,Schedule 最多保留一个待处理尝试。槽位被占用时到来的新时刻会记录为 Coalesced,之后不会补交。

如果任务可能长于周期,应增加间隔,或让目标以幂等方式协调当前状态。

应当假定的限制

  • Schedule 最多有一个直接目标,且必须是 CodingAgent 或 Terminal;
  • 不会启动你主动关闭的会话;
  • 不会扩大目标的图谱、权限或 Guardrails;
  • 不替代验收标准,也不判断结果是否正确;
  • 每个已记录尝试最多进行一次自动交付;
  • 不保证外部效果 exactly-once;
  • 不会把所有 MissedCoalesced 积压到以后执行。

如果工作需要 fan-out、分阶段审批、补偿或事务式编排,请在图谱中明确建模责任,并保留人工决策。

使用 Resume 前的检查表

  • payload 是否说明目标、证据与停止条件?
  • Next occurrences 是否符合预期时间?
  • 时区是否正确?
  • 是否恰好有一条目标 Connection?
  • 目标会话是否应在该时刻保持活动?
  • 图谱是否只包含必要上下文与能力?
  • 若外部效果已发生,重复执行是否安全?
  • 你是否知道在哪里查看结果与历史?

继续阅读

最后审核 2026年8月11日验证版本 Kavor 1.3.0分享文档反馈