# Cron 与调度器 Cron API 让你能够调度周期性 HTTP 调用 Synapse 端点(或外部 HTTPS 端点)。非常适合周期性同步、提醒和运维任务。 ## 端点 ### POST /cron 创建一个定时任务。 ```bash curl -X POST https://synapse.schaefer.zone/cron \ -H "Authorization: Bearer YOUR_MIND_KEY" \ -H "Content-Type: application/json" \ -d '{ "schedule": "0 * * * *", "endpoint": "https://synapse.schaefer.zone/memory/recall", "method": "GET", "headers": {"Authorization": "Bearer YOUR_MIND_KEY"} }' ``` 响应: ```json { "id": "cron_001", "schedule": "0 * * * *", "endpoint": "https://synapse.schaefer.zone/memory/recall", "method": "GET", "enabled": true, "next_run": "2026-06-27T13:00:00Z", "created_at": "2026-06-27T..." } ``` ### GET /cron 列出所有定时任务。 ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/cron ``` ### DELETE /cron/:id 删除一个定时任务。 ```bash curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/cron/cron_001 ``` ### PUT /cron/:id/toggle 在不删除任务的情况下启用或禁用它。 ```bash curl -X PUT -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/cron/cron_001/toggle ``` ## 调度语法 ### 标准 cron(5 字段) ``` ┌───── 分钟 (0-59) │ ┌───── 小时 (0-23) │ │ ┌───── 日 (1-31) │ │ │ ┌───── 月 (1-12) │ │ │ │ ┌───── 星期 (0-6, 0=周日) │ │ │ │ │ * * * * * ``` 示例: | 调度表达式 | 含义 | |----------|---------| | `0 * * * *` | 每小时 | | `*/15 * * * *` | 每 15 分钟 | | `0 9 * * 1-5` | 工作日早上 9 点 | | `0 0 * * 0` | 每周日午夜 | | `0 0 1 * *` | 每月 1 日午夜 | ### 整数间隔(秒) 对于简单间隔,可直接传整数: ```json { "schedule": "300" } // 每 5 分钟 ``` ## 端点限制 > [!WARNING] > 端点必须是 `http://` 或 `https://` URL,并指向: > - 同一 Synapse 实例(例如 `http://synapse:12800/memory/recall`) > - 公共 HTTPS URL(不允许私有 IP、localhost、元数据 IP) 这可以防止 SSRF 攻击 — 否则被攻破的 Mind 可能会调度请求访问内部服务。 ## 常见模式 ### 每小时调用一次记忆回放(供 LLM Agent 使用) ```bash curl -X POST .../cron -d '{ "schedule": "0 * * * *", "endpoint": "https://synapse.schaefer.zone/memory/recall", "method": "GET", "headers": {"Authorization": "Bearer YOUR_MIND_KEY"} }' ``` ### 每日备份 ```bash curl -X POST .../cron -d '{ "schedule": "0 2 * * *", "endpoint": "https://synapse.schaefer.zone/memory/mind-export", "method": "GET", "headers": {"Authorization": "Bearer YOUR_MIND_KEY"} }' ``` ### 周期性聊天轮询(每 5 分钟) ```bash curl -X POST .../cron -d '{ "schedule": "300", "endpoint": "https://synapse.schaefer.zone/chat/poll", "method": "GET", "headers": {"Authorization": "Bearer YOUR_MIND_KEY"} }' ``` ### 周报触发 ```bash curl -X POST .../cron -d '{ "schedule": "0 9 * * 1", "endpoint": "https://my-app.com/weekly-report", "method": "POST", "body": "{\"mind_id\": \"m_xyz789\"}", "headers": {"Content-Type": "application/json", "X-API-Key": "my-secret"} }' ``` ## 下一步 - [Variables API](/docs/api/variables) - [Webhooks API](/docs/api/webhooks)