# CronCreate

将提示词排队到未来某个时刻执行，支持一次性触发和周期性重复两种模式。使用标准的 5 字段 cron 表达式，基于用户本地时区，无需进行时区转换。

## 何时使用

- **一次性提醒**：当用户希望在某个具体时间收到提醒时（如"明天下午 3 点提醒我"），将 `recurring` 设为 `false`，任务触发一次后自动删除。
- **周期性计划**：当用户希望某件事反复发生时（如"每个工作日早上 9 点"、"每 30 分钟一次"），使用默认的 `recurring: true`。
- **自主 Agent 循环**：当需要构建一个定期自我触发的工作流时，例如每日摘要或周期性状态检查。
- **持久化任务**：当计划需要在会话重启后继续保留时，传入 `durable: true`，任务将写入 `.claude/scheduled_tasks.json`。
- **大致时间请求**：当用户说"大约 9 点"或"每小时"时，应选择非整点分钟值（例如 `57 8 * * *` 或 `7 * * * *`），避免大量用户在 :00 或 :30 时刻同时触发。

## 参数

- `cron`（string，必填）：基于用户本地时区的 5 字段 cron 表达式，格式为 `分钟 小时 日 月 星期`。例如 `"0 9 * * 1-5"` 表示周一至周五早上 9:00。
- `prompt`（string，必填）：cron 触发时要排队的提示词文本，即到达计划时间时将提交给 REPL 的确切内容。
- `recurring`（boolean，可选，默认 `true`）：为 `true` 时，任务在每个匹配的 cron 周期触发，7 天后自动过期；为 `false` 时，任务仅触发一次后自动删除，适用于一次性提醒。
- `durable`（boolean，可选，默认 `false`）：为 `false` 时，计划仅存储在内存中，会话结束后丢失；为 `true` 时，任务持久化到 `.claude/scheduled_tasks.json`，重启后仍然有效。

## 示例

### 示例 1：一次性提醒

用户说："明天下午 2:30 提醒我发送周报。"假设明天是 4 月 21 日：

```json
{
  "cron": "30 14 21 4 *",
  "prompt": "提醒：现在发送周报。",
  "recurring": false,
  "durable": true
}
```

`recurring: false` 确保任务触发后自动删除。`durable: true` 保证在此之前的重启不会丢失该任务。

### 示例 2：周期性工作日早间任务

用户说："每个工作日早上，汇总我的 GitHub 未处理 Issue。"

```json
{
  "cron": "3 9 * * 1-5",
  "prompt": "汇总所有分配给我的 GitHub 未处理 Issue。",
  "recurring": true,
  "durable": true
}
```

使用分钟 `3` 而非 `0`，避免在整点造成服务器负载峰值。该任务 7 天后自动过期。

## 注意事项

- **7 天自动过期**：周期性任务最多运行 7 天后自动删除。如需更长时间的计划，请在过期前重新创建。
- **仅在空闲时触发**：`CronCreate` 仅在 REPL 未处理其他查询时才将提示词排队。如果触发时 REPL 正在处理其他请求，提示词将等待当前查询完成后再执行。
- **避免使用 :00 和 :30 分钟值**：对于大致时间的请求，应主动选择非整点分钟值，以分散系统负载。只有用户明确指定某个精确分钟时，才使用 :00 或 :30。
- **无需时区转换**：cron 表达式直接按用户本地时区解析，无需转换为 UTC 或其他时区。
