前一天我們談 Background Execution。
有了 Queue、Worker、Task State 之後,Agent 已經可以在使用者離線後繼續執行。
下一個問題是:
如果任務不是現在執行呢?
例如:
很多系統會直接說:
加 Cron 就好
Cron 很重要。
但真正的 Agent Scheduling 還需要處理:
所以 Scheduling 不只是「什麼時候跑」。
而是:
某個 Task 在未來什麼條件下,應該被可靠建立或喚醒。
Schedule 不是 Task。
Schedule 描述:
什麼時候建立或喚醒 Task?
Task 描述:
這次執行目前進行到哪裡?
例如:
Schedule:
Every Monday 09:00
Task Run #1:
Completed
Task Run #2:
Failed
Task Run #3:
Running
一個 Schedule 可以產生很多 Task Run。
不要把所有歷史都塞在同一個 Task 裡。
先分兩類。
只執行一次。
例如:
兩小時後提醒我重新檢查。
週期執行。
例如:
每天早上整理市場新聞。
Recurring Schedule 需要另外處理:
如果使用者說:
每天早上 9 點。
9 點是哪個 Timezone?
如果系統只保存 UTC Timestamp,遇到 Daylight Saving Time 後可能跑錯時間。
所以 Schedule 應該保存:
例如:
timezone:
America/Los_Angeles
rule:
09:00 every weekday
Scheduler 每次根據 Timezone 計算下一個 UTC Time。
假設系統維護 3 小時。
原本 9:00 的 Task 沒跑。
10:30 系統恢復後應該:
不同 Task 答案不同。
例如:
所以 Schedule 需要 Missed-run Policy。
假設每天 9 點跑一個 Agent。
昨天的 Task 還在跑。
今天 9 點到了。
要不要再開一個?
可能策略:
這是 Scheduling Policy,不應該交給模型臨時猜。
Scheduler 可能因 Failure 重複觸發。
所以每次 Run 應該有唯一:
schedule_id
run_id
scheduled_at
產生 Task 時要 Deduplicate。
否則同一個早上 9 點可能建立兩個一樣的 Task。
Agent 也可能自己建立未來任務。
例如:
這個 API 目前 Rate Limit,30 分鐘後再試。
或者:
使用者還沒回覆,明天下午再 Follow-up。
這時需要一個 Scheduling Tool。
但要注意:
Agent 可以提出 Schedule,不代表它可以無限制建立 Schedule。
Harness 應該控制:
否則 Agent 很容易建立大量未來工作。
一個 recurring Agent 可能每次都需要:
這些應該被保存成 Schedule Template。
但每次真正 Run 時,仍然要重新確認:
不要把建立 Schedule 當下的 Runtime State 永久 Freeze。
Recurring Task 很容易和 Memory 混在一起
例如:
每週一幫我整理 GitHub Issue。
這是一個 Schedule。
而:
我偏好摘要只列 P0/P1 問題。
這是 Memory。
每次 Schedule Run 時可以 Recall Memory。
但兩者應該分開管理。
不是所有未來執行都由時間觸發。
也可能是:
這比較像 Event Trigger。
架構上可以統一成:
Trigger
↓
Create / Resume Task
Time Trigger 只是其中一種 Trigger。
沒有 Ownership、State、Retry、Missed-run Policy。
DST 後時間漂移。
Recurring Task 重複修改同一資源。
造成未來成本失控。
幾個月後還用過期權限跑。
可能一次觸發大量過時任務。
至少保存:
schedule_id
owner
timezone
trigger
task_template
overlap_policy
missed_run_policy
enabled
next_run_at
每次 Run:
Scheduling 不只是 Cron Expression。
真正的問題是:
未來某個時間或事件發生時,如何可靠建立一個新的 Task Run?
最重要的原則:
Schedule 定義何時開始,Task System 定義開始之後怎麼活。
下一篇會談 Worktree Isolation:
如果多個 Coding Agent 同時修改同一個 Repository,怎麼避免互相踩檔案?
完整系列與程式碼範例收錄於 https://github.com/hardness1020/awesome-agent-architecture