关于 crontap-recurring-agent-endpoint
crontap-recurring-agent-endpoint 是将 Crontap 与应用自有 HTTP 服务、队列和 Agent Worker 结合的部署指南,面向已运行此类服务的用户。它说明如何安排请求并通过心跳核验任务完成,而非唤醒 MCP 客户端或 IDE 会话。
主要功能
- 01调度受保护的 HTTP 端点
- 02通过心跳监测任务完成
- 03说明端点认证与幂等要求
- 04核验队列、Worker 和心跳证据
- 05区分应用调度与客户端自动化
适用场景
- 01定时将任务加入应用队列
- 02监测 Agent Worker 是否完成周期任务
- 03排查请求已调度但心跳缺失
MCP 相关
该技能使用 Crontap MCP 创建调度和心跳并检查记录。它明确指出 MCP 服务端不会主动联系客户端,Crontap 也不会唤醒 Agent、IDE 会话或聊天。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-recurring-agent-endpoint安装后在 Claude Code 中输入/crontap-recurring-agent-endpoint确认已加载。
详细介绍
安排应用自有的 Agent 端点
仅当用户控制着一个已部署、负责启动工作流的 HTTP 服务时,才使用此架构。Crontap 会安排 HTTP 请求并监控签到。它不会唤醒 Agent、IDE 会话、聊天或 MCP 客户端。
如果要在 Cursor、Claude、ChatGPT、Codex 或其他客户端中设置定期提示词,请使用该客户端的原生自动化功能。MCP 客户端会发起工具调用;MCP 服务不会主动联系它们。
架构
Crontap clock -> protected app endpoint -> app-owned queue -> agent worker
|
+-> heartbeat on completion
前提条件
使用必需的工具前,请先检查这些工具是否可用。如果缺少任何工具,请停止操作,并向用户提供且仅提供以下两个选项:
- 连接 Crontap MCP,地址为
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 API 配置
$CRONTAP_CLIENT_ID和$CRONTAP_API_KEY。原始 API 访问需要 Ultra 套餐。
在用户选择之前,请勿自行选择路径或继续操作。
- 已存在已部署的应用端点和持久化工作进程。
- 端点使用专用的 cron 密钥进行身份验证。
- 入队和下游影响均按逻辑运行周期实现幂等。
- 工作进程能够安全读取心跳 URL。
工作流
- 创建心跳,并设置与预期完成时间相匹配的周期和宽限时间。
- 将其密钥 URL 存储在工作进程的密钥管理器中。
- 更新工作进程,使其仅在成功持久化完成后发送 ping,并在明确的终止失败时使用
/fail。 - 为受保护的入队端点创建 Crontap 计划。
- 验证入队证据、工作进程证据和心跳证据。
MCP 示例
创建完成情况监控:
{
"tool": "create_heartbeat",
"arguments": {
"name": "Daily agent workflow completion",
"periodMinutes": 1440,
"graceMinutes": 60
}
}
创建 HTTP 时钟:
{
"tool": "create_schedule",
"arguments": {
"url": "https://agent-app.example.com/api/jobs/daily-analysis",
"text": "every day at 07:00",
"timezone": "UTC",
"method": "POST",
"headers": {
"Authorization": "Bearer <cron-secret-from-secure-store>",
"Content-Type": "application/json"
},
"body": {
"workflow": "daily-analysis"
},
"label": "Daily analysis enqueue"
}
}
检查某个 UTC 日期的心跳证据:
{
"tool": "get_heartbeat_pings",
"arguments": {
"heartbeatId": "<heartbeat-id>",
"day": "2026-09-14"
}
}
端点约定
- 在读取请求正文或入队之前进行身份验证。
- 派生或接收稳定的逻辑运行键,并通过持久化方式确保其唯一性。
- 仅在队列已接受任务后返回 2xx。
- 仅在可以安全地再次尝试入队时返回可重试的 5xx。
- 将模型提供商凭据保留在工作进程环境中。
REST 回退方案
创建 REST 资源需要 Ultra API 访问权限:
curl --fail-with-body https://api.crontap.com/v1/schedule \
-X POST \
-H "ClientId: $CRONTAP_CLIENT_ID" \
-H "ApiKey: $CRONTAP_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"url": "https://agent-app.example.com/api/jobs/daily-analysis",
"interval": "0 7 * * *",
"timezone": "UTC",
"verb": "POST",
"headers": {
"Authorization": "Bearer <cron-secret-from-secure-store>",
"Content-Type": "application/json"
},
"data": {"workflow": "daily-analysis"},
"label": "Daily analysis enqueue"
}'
连接后请使用 MCP。MCP 访问并非 Ultra 专属。
验证
- 一次计划调用会为该逻辑周期创建一条持久化队列记录。
- 工作进程重试不会导致外部副作用重复。
- 成功 ping 发生在持久化完成之后,而不只是入队之后。
- 缺失或失败的运行会显示在心跳历史记录中,且不会暴露密钥 URL。
安全与套餐限制
- 切勿在提示词或日志中暴露模型密钥、cron 密钥或心跳 URL。
- 在应用自有的工作进程中限制成本、运行时间、模型调用次数和外部写入操作。
- 没有已部署端点时,请使用客户端原生自动化。
- 如果资源限制阻止了创建操作,请保留返回的四选项阶梯,并指出最小的可行选项。
故障排查
- 计划成功但没有心跳,意味着入队成功,但工作进程未完成任务或未发送 ping。
- 计划失败,意味着应先排查 HTTP 边界,再排查工作进程。
- 队列记录重复,意味着入队端点缺少原子幂等性。
- 待处理状态的心跳尚未收到第一个已接受的 ping。
参考资料
评论
支持 Markdown