实践指南:用 cron 调度让 Agent 自主跑批)
人工智能AI 技能AI 评测【免费下载链接】skillsPublic repository for Agent Skills项目地址https://gitcode.com/GitHub_Trending/skills3/skills点击查看免费下载本指南以 Claude API 技能库中的 managed-agents-scheduled-deployments.md 为核心系统讲解 Managed Agents 的**定时部署Scheduled Deployments**能力如何把一个 Agent 与环境、初始事件和 cron 计划打包成 deployment让平台按固定节奏自动创建 session 自主执行任务。读完本文你将掌握 deployment 的创建与校验、cron/时区/DST 语义、预算budget的可清零可重加更新规则、deployment run 审计记录、暂停/恢复/归档生命周期以及用手动运行在正式排程前验证任务的全套实战方案。什么是定时部署让 Agent 按 cron 自主跑批Scheduled Deployment定时部署会在一个周期性的 cron 计划上运行 Agent——每次触发firing都会自动创建一个 session 并自主开始工作。它适用于节奏可预测的任务夜间巡检nightly triage、每周合规扫描weekly compliance scans、每小时监控hourly monitors等。它是 Managed Agents 体系中的一等资源对应depl_前缀的 ID端点位于/v1/deployments与/v1/deployment_runs。在技能库的选型表中当需要按计划cron、every night运行的 Agent时Managed Agents 的 scheduled deployments 是明确的推荐方案——由平台负责触发 session无需自建客户端调度器参见 SKILL.md 的 Which Surface Should I Use 部分。前置要求所有 deployments 调用都需要managed-agents-2026-04-01beta 请求头。SDK 会在client.beta.deployments.*/client.beta.deployment_runs.*调用时自动携带该头参见 managed-agents-api-reference.md 的 Beta Headers 一节使用 cURL 时必须手工添加。在动手之前请先确保已经创建了Agent与Environment——deployment 只是把二者与计划绑定model/system/tools都保存在 Agent 对象上不会出现在 deployment 请求体里核心概念详见 managed-agents-core.md。创建 Deployment一个 deployment 把 session 运行所需的一切打包在一起Agent 与环境agent和environment_id为必填项其取值形状与sessions.create完全一致见 managed-agents-core.md。此外还可附加可选的 files、GitHub 仓库、memory stores、vaults 等资源。面向自托管环境self-hosted的 deployment 可以挂载memory_store资源要求使用 Python/TypeScript/Go 的EnvironmentWorker等 SDK worker详见 managed-agents-self-hosted-sandboxes.md 的 Memory stores 一节而file与github_repository资源需要云环境cloud。注意Console 的 deployment 表单不为自托管环境提供 memory store 选项——需要通过 API/SDK 挂载。初始事件initial_events必须包含至少一个起始事件——user.message或user.define_outcome。与 session 的initial_events不同deployment 的initial_events额外接受system.messagesession 的 initial_events 不接受见 managed-agents-core.md 的 Seeding a session withinitial_events 一节。调度计划schedule接受 cronexpression与 IANAtimezone最大粒度到分钟级。cURL 创建示例curl -fsSL https://api.anthropic.com/v1/deployments \ -H x-api-key: $ANTHROPIC_API_KEY \ -H anthropic-version: 2023-06-01 \ -H anthropic-beta: managed-agents-2026-04-01 \ -H content-type: application/json \ -d - EOF { name: Weekly compliance scan, agent: $AGENT_ID, environment_id: $ENVIRONMENT_ID, initial_events: [ {type: user.message, content: [{type: text, text: Run the weekly compliance scan.}]} ], schedule: { type: cron, expression: 0 20 * * 5, timezone: America/New_York } } EOFPython SDK 创建示例deployment client.beta.deployments.create( nameWeekly compliance scan, agentagent.id, environment_idenvironment.id, initial_events[ { type: user.message, content: [{type: text, text: Run the weekly compliance scan.}], }, ], schedule{ type: cron, expression: 0 20 * * 5, timezone: America/New_York, }, )通用请求头模板cURL 场景Content-Type: application/json、x-api-key: $ANTHROPIC_API_KEY、anthropic-version: 2023-06-01、anthropic-beta: managed-agents-2026-04-01——四个头缺一不可完整示例见 curl/managed-agents.md。SDK 调用无需手动处理 beta 头SKILL.md 的 Managed Agents 一节明确说明 SDK 对deployments、deployment_runs命名空间自动添加该头。校验计划检查upcoming_runs_at创建请求的响应是一个 deployment 对象depl_ID 前缀。务必检查schedule.upcoming_runs_at——即接下来的触发时间列表以确认计划被正确解析{ id: depl_01xyz, status: active, paused_reason: null, schedule: { type: cron, expression: 0 20 * * 5, timezone: America/New_York, last_run_at: null, upcoming_runs_at: [2026-05-09T00:00:00Z, 2026-05-16T00:00:00Z, 2026-05-23T00:00:00Z] } }从 managed-agents-api-reference.md 的 CreateDeployment Request Body 一节可以看到响应包含status、paused_reason与schedule.upcoming_runs_at且 deployment 支持与 CreateSession 相同的可选 session 配置resources、vault_ids等包括budget。两个必须注意的边界执行抖动jitterupcoming_runs_at反映的是精确配置的计划但实际执行会为分散负载而被抖动最多延迟间隔时长的 15%下限 5 秒、上限 9 分钟。这意味着一个每小时执行的 deployment 可能最多延迟 9 分钟触发。不要把下游的截止时间建立在列表所给的时间戳之上。组织级配额每个组织最多1000 个定时部署需要更多请联系 Anthropic 支持。Cron 与时区语义维度规则表达式标准 POSIX cronminute hour day-of-month month day-of-week5 段分钟级粒度为最大精度时区IANA 标识符如America/Los_AngelesDST字面墙钟时间匹配0 20 * * *在America/New_York无论 EST 还是 EDT都在本地 20:00 触发⚠️ DST 边界在春季拨快spring-forward当天不存在的墙钟时间如凌晨 2 点会被跳过在秋季拨慢fall-back当天出现两次的时间会触发两次。当漏执行或重复执行不可接受时请把计划排到本地 1–3 AM 之外或直接使用 UTC。Deployment 预算Budgetsdeployment 接受与 session 相同的budget对象{type: limit, max_list_cost: {amount, currency}}——amount是以美分为单位的小数位整数串仅支持USD详细清单见 managed-agents-core.md 的 Session budgets 一节例如2500表示 $25.0050表示五十美分字符串形式避免任何浮点舍入25.00这类小数形式会被拒绝。触发时刻语义该上限会在每次触发时复制到新创建的 session 上随后该 session 的行为与任何带预算的 session 完全一致——按公开列表价list rates持续计费达到上限后暂停进入idlestop_reason: budget_reached而非终止。与 session 预算更新语义的关键差异务必对照理解session 侧的规则见 managed-agents-core.md维度Session 预算Deployment 预算设置时机仅创建时create-only事后添加返回 400创建与更新时均可不是 create-only移除budget: null移除后不可再加回one-way doorbudget: null更新会清除它清除后之后仍可重新添加生效范围更新即作用于当前 session变更从下一个被触发的 session 开始生效已经在运行的 session 保持其创建时的上限要修改它们请走各自的 session updateDeployment Runs审计每一次触发每一次触发尝试——无论成功与否——都会写入一条 deployment run 记录drun_前缀因此你可以独立于 session 生命周期审计失败。成功的 run携带所创建的session_id之后按常规方式通过事件流managed-agents-events.md或 webhookmanaged-agents-webhooks.md跟进该 session。失败的 run携带一个error其type说明 session 创建为何被拒绝。列出与过滤 RunsPython# All runs for a deployment for run in client.beta.deployment_runs.list(deployment_iddeployment.id): print(run.created_at, run.session_id or run.error.type) # Failures only for run in client.beta.deployment_runs.list(deployment_iddeployment.id, has_errorTrue): print(run.created_at, run.error.type, run.error.message)列出与过滤 RunsTypeScriptfor await (const run of client.beta.deploymentRuns.list({ deployment_id: deployment.id, has_error: true, })) { console.log(run.created_at, run.error?.type, run.error?.message); }原始 HTTPGET /v1/deployment_runs?deployment_id...has_errortrue分页列表。按 ID 取单个 runGET /v1/deployment_runs/{deployment_run_id}SDKclient.beta.deployment_runs.retrieve(run_id)——一条deployment_run.*webhook 事件会把 run ID 作为其data.id携带方便从事件反查详情端点表见 managed-agents-api-reference.md 的 Deployment Runs 一节。失败 Run 的典型形态{ type: deployment_run, id: drun_01abc124, deployment_id: depl_01xyz, trigger_context: { type: schedule, scheduled_at: 2026-05-09T00:00:00Z }, session_id: null, error: { type: environment_archived, message: environment env_01abc is archived }, agent: { type: agent, id: agent_01ghi789, version: 3 }, created_at: 2026-05-09T00:00:01Z }错误类型包括environment_archived、agent_archived、vault_not_found、session_rate_limited、service_unavailable。Webhook 集成免轮询每次定时scheduledrun 的结果started/succeeded/failed以及每次 deployment 生命周期变更created/updated/paused/unpaused/archived/deleted也会以 webhook 事件投递——详见 managed-agents-webhooks.md 的deployment.*与deployment_run.*事件类型表可以做到无需轮询即可响应。注意两点手动运行manual runs不会发出deployment_run.*webhook 事件。webhook 的data.type命名空间与 SSE 事件类型如session.status_idle是两个独立命名空间不要复用。生命周期暂停 / 恢复 / 归档操作SDK效果Pause暂停client.beta.deployments.pause(id)抑制后续的定时触发go-forward。已在运行的 session 继续运行。暂停期间手动运行仍然允许。设置paused_reason: {type: manual}。Unpause恢复client.beta.deployments.unpause(id)从下一次计划触发开始恢复。错过的触发不会被补跑backfill。清除paused_reason。Archive归档client.beta.deployments.archive(id)终态terminal——计划停止deployment 不再可被修改。需要可逆操作时请用 pause。原始 HTTPPOST /v1/deployments/{deployment_id}/pause/unpause、/archive同理。完整端点映射见 managed-agents-api-reference.md 的 Deployments 一节另有POST /v1/deployments/{deployment_id}更新配置、POST /v1/deployments/{deployment_id}/run手动运行。失败行为Failure Behavior被限流rate-limited立即记录为一条session_rate_limitedrun不重试——计划只是在下一次触发时再次尝试。session内部API 调用的限流由 session 自身处理。其他失败 run如environment_archived、vault_not_found、service_unavailablerun 记录下error.type——监控 runs 并修复引用的资源或暂停 deployment。Agent 被归档deployment 会在同一操作中被自动归档终态。Agent 被删除下一次定时触发检测到缺失的 Agent随后归档该 deployment。无论哪种情况都不会记录 deployment run也不再创建任何 session。补充观察可结合 webhook 语义理解在 managed-agents-webhooks.md 中deployment.paused的触发条件明确包括定时 run 以不可恢复错误归档的 agent、缺失的环境失败时自动暂停而可恢复的失败包括限流不会自动暂停——这正是上面失败行为在事件层的映射。手动运行上线前的最后验证POST /v1/deployments/{deployment_id}/runSDKclient.beta.deployments.run(id)会立即创建一个 session并写入一条trigger_context.type: manual的 run。用途在正式排程之前先测试 deployment——确认 Agent、环境、资源挂载与初始事件链路都能跑通。关键特性即使 deployment 处于暂停状态手动运行依然可用所以你可以暂停 → 手动验证 → 恢复作为安全的发布流程。与周边能力的关联速查为方便继续深入定时部署在 Managed Agents 知识体系中与以下文档紧密关联Agent / Session / Environment 基础managed-agents-core.md——agent字段的三种取值形态、initial_events校验规则、session 预算的完整语义自托管环境与 memory store 挂载managed-agents-self-hosted-sandboxes.md——deployment 面向 self-hosted 环境时的资源限制与 SDK worker 要求事件流与 steeringmanaged-agents-events.md——run 成功后如何沿 session 事件流跟进Webhook 事件类型managed-agents-webhooks.md——deployment.*与deployment_run.*的完整触发条件表端点与请求体参考managed-agents-api-reference.md——Deployments / Deployment Runs 的 REST 路径、SDK 方法名与 CreateDeployment 请求体cURL 与 SDK 实操curl/managed-agents.md、python/managed-agents/README.md——通用请求头与客户端初始化模式。核心要点小结创建POST /v1/deploymentsagentenvironment_id必填initial_events至少一个起始事件user.message或user.define_outcome也接受system.messageschedule使用标准 POSIX cron IANA 时区分钟级为上限精度。校验用响应的schedule.upcoming_runs_at确认计划解析记住执行有最多 9 分钟的抖动不要对时间戳做硬性下游依赖组织上限 1000 个 deployment。预算每次触发把 budget 复制到新 sessiondeployment 的 budget 支持 create/update 均可设置、null清除后可重新添加变更从下一次触发的 session 生效。审计每次触发都写drun_run 记录失败带error.typeenvironment_archived、agent_archived、vault_not_found、session_rate_limited、service_unavailable限流不重试、不可恢复失败对应自动暂停/归档。生命周期pause暂停期间手动运行仍可用→ unpause不补跑→ archive终态不可逆agent 被归档/删除会级联归档 deployment。手动运行POST /v1/deployments/{id}/run立即建 session 并写trigger_context.type: manual是排程前验证和暂停态下调试的标准手段。赞分享人工智能AI 技能AI 评测【免费下载链接】skillsPublic repository for Agent Skills项目地址https://gitcode.com/GitHub_Trending/skills3/skills点击查看免费下载相关推荐RikkaHub 仓库中的 Anthropic Managed Agents 定时部署Scheduled Deployments实战指南RikkaHub 仓库中的 Anthropic Managed Agents 定时部署Scheduled Deployments实战指南 本指南以仓库内 C人工智能大模型AI 应用移动开发交互助手Sentry 定时分诊自动化实战Claude Managed Agents 的 cron 部署与 Vault 凭据安全模型Sentry 定时分诊自动化实战Claude Managed Agents 的 cron 部署与 Vault 凭据安全模型 本文以本仓库 managed_ag示例工程ruflo 云上 Agent 运行时实战指南用 managed-agent 技能驱动 Anthropic Claude Managed Agentsruflo 云上 Agent 运行时实战指南用 managed agent 技能驱动 Anthropic Claude Managed Agents 导读 r人工智能AI Agent多智能体Agent 编排Agent 记忆工具调用代码智能体MCP 服务AI 评测上一篇OpenTTD 数据目录结构详解搜索路径优先级、子目录约定与源码级实现下一篇InternLM2-1.8B-Reward应用场景从AI聊天机器人到内容生成的质量控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考