排程
本頁涵蓋自動排程,以及 scheduler skill 被改壞後的復原方式。
Scheduler skills(隔離 namespace)
由 scheduler 觸發的 skill 位於獨立樹狀結構,不被 host.Scanner() 掃描:
~/.config/agenvoy/skills/scheduler/<short>-<hash8>/SKILL.md
| 面向 | 一般 skill | Scheduler skill |
|---|---|---|
| 路徑 | ~/.config/agenvoy/skills/<name>/SKILL.md |
~/.config/agenvoy/skills/scheduler/<short>-<hash8>/SKILL.md |
Frontmatter name |
<name> |
<short>-<hash8>(無 scheduler- 前綴) |
/<name> 自動補全 |
有 | 無 —— 於 picker 底部以 /sched-<name>(warn-purple)呈現 |
| 觸發 | MatchSkillCall 後執行 run_skill |
(a) 由 daemon runtime.SetRunner 觸發 cron / one-shot,(b) 從 TUI 手動 /sched-<name> |
建立流程
scheduler-skill-creator skill 是新增排程的正規入口。它會:
- Pre-flight gate(Step 0):若使用者訊息缺少時間 token(
+5m/HH:MM等)或任務 token,必須先呼叫ask_user—— 不預設+10m、不推測「大概是早上 9 點」。 - 執行
python3 scripts/init_scheduler_skill.py <short>建立帶 hash 後綴的 skill 目錄。 - Patch SKILL.md 主體(description + task + output format)。
- 呼叫
add_schedule綁定排程。
直接呼叫 add_schedule 僅允許用於重新綁定既有排程(變更已建立之 scheduler skill 的時間)。
手動執行(/sched-<name>)
TUI 命令 picker 將 scheduler/ 下每個目錄列為 /sched-<name>。選取後讀取其主體並派送給當前 agent,帶一段 preamble,阻止較弱的模型將 SKILL.md 形狀的主體誤讀為建立排程請求而重跑 creator。
該 preamble 強制:
- 立即執行既有 scheduler skill 並輸出結果
- 不啟用
scheduler-skill-creator - 不執行
init_scheduler_skill.py - 不呼叫
add_schedule
Daemon 觸發
runtime.SetRunner 註冊 runSkill(ctx, sessionID, skillName)。當 scheduler 觸發(cron tick 或 one-shot 到期)時,runner:
- 透過
filesystem.ScheduleSkillBody(skillName)讀取主體。 - 確保 session 目錄存在;寫入預設
bot.md。 - 呼叫
exec.ExecWithSubagent(ctx, body, sessionID, "", "", nil)—— 一個帶 always-allow context 的 in-process subagent。
One-shot 任務成功觸發後會被移除,skill 目錄則被丟棄。
修復壞掉的編輯
執行後自動改寫 skill 的機制已移除——失敗的執行不會再在背後修改 skill。Skill 與 tool 檔案仍以 git 版本控管於 ~/.config/agenvoy/,且每次 write_skill / patch_skill / remove_skill 都會自動 commit,因此修復改為明確操作:
| 步驟 | 工具 |
|---|---|
| 檢視 skill 或 tool 儲存的修訂歷史 | list_revisions |
| 將該儲存硬重設到較早的修訂 | restore_revision |
兩者範圍皆限於 ~/.config/agenvoy,永不涉及使用者的專案 repo。被移除的 skill 會落在 .Trash/,同樣可用此方式復原。