claude-code-cron.md
2.68 KB
Claude Code 定时调度 (Cron) 功能
官方文档: https://code.claude.com/docs/en/scheduled-tasks.md 工具参考: https://code.claude.com/docs/en/tools-reference.md 文档索引: https://code.claude.com/docs/en/claude_code_docs_map.md
概述
Claude Code 原生支持定时调度,通过 CronCreate / CronList / CronDelete 三个原生工具实现。
核心工具
| 工具 | 用途 |
|---|---|
CronCreate |
创建定时任务。接受 5-field cron 表达式 + prompt + 是否循环 |
CronList |
列出当前所有定时任务及其 ID、调度、prompt |
CronDelete |
通过 8 位 ID 取消指定任务 |
Cron 表达式格式
标准 5-field: minute hour day-of-month month day-of-week
| 表达式 | 含义 |
|---|---|
*/5 * * * * |
每 5 分钟 |
*/3 * * * * |
每 3 分钟 |
*/30 * * * * |
每 30 分钟 |
0 * * * * |
每小时整点 |
0 9 * * * |
每天早 9 点 |
0 9 * * 1-5 |
工作日早 9 点 |
调度方式对比
| Cloud | Desktop /schedule | /loop (CLI) | |
|---|---|---|---|
| 运行在 | Anthropic 云端 | 本地机器 | 本地机器 |
| 需要机器开启 | 否 | 是 | 是 |
| 需要打开会话 | 否 | 否 | 是 |
| 跨重启持久化 | 是 | 是 | 否 (session-scoped) |
| 访问本地文件 | 否 | 是 | 是 |
| 最小间隔 | 1 小时 | 1 分钟 | 1 分钟 |
关键限制
- Session-scoped:
/loop和CronCreate创建的任务仅在 Claude Code 运行且空闲时触发。关闭终端或退出会话后,所有任务取消。 - 3 天过期: 循环任务自动在 3 天后过期,防止无限运行。
- 最多 50 个: 每个会话最多 50 个并发定时任务。
- 不补发: 如果任务触发时 Claude 正在忙,等空闲后只触发一次,不补发错过的。
- Jitter: 循环任务有最多 10% 的延迟抖动(上限 15 分钟)。
LemonBoss 持久化方案
由于 CronCreate 是 session-scoped,我们使用 cron.json + 会话启动自动注入 来实现持久化:
cron.json 格式
[
{
"schedule": "*/5 * * * *",
"prompt": "读取 plan.md 检查已分发任务进度",
"recurring": true,
"enabled": true
}
]
工作流程
- Agent 目录下有
cron.json定义期望的定时任务 - 每次新建 ACP 会话时,后端自动读取 cron.json
- 在第一条 system prompt 中注入 CronCreate 恢复指令
- Agent 调用 CronCreate 重建所有定时任务
文件位置
- 文档:
docs/claude-code-cron.md(本文件) - 模板:
packages/agent-core/AgentScaffold.js(_defaultCronJson) - 注入点:
server/routes/agent-chat.js(buildPrompt) - Agent 配置:
data/agents/{agent-id}/cron.json