Claude Code Routines 云端自动化:定时、API、GitHub 触发与用量限制

Routines 是运行在 Anthropic 云端的自动化 Claude Code 任务。电脑关机它也照常工作。支持三种触发方式:定时(hourly/daily/weekly)、HTTP API 调用(POST + bearer token)、GitHub 事件(PR/Release)。在 claude.ai/code/routines 或 Desktop app 创建管理,CLI 中用 /schedule 命令。Pro/Max/Team/Enterprise 计划可用,每日有运行次数上限。注意:CLI 中 /schedule 不可见通常是 claude.ai 认证或环境变量问题。当前为研究预览阶段,接口和限制可能变化。

Routines 是一份保存好的 Claude Code 配置:一条提示词、一个或多个仓库、一组 MCP connectors。配置一次,云端自动跑。Routines 运行在 Anthropic 管理的云端基础设施上,关闭笔记本也不中断。

每个 Routine 可以附加一个或多个触发器:

  • Scheduled(定时):按固定节奏(每小时、每晚、每周)或单次未来时间运行
  • API:发 HTTP POST 到专属端点,带 bearer token,按需启动
  • GitHub:响应仓库事件(PR 创建、Release 发布等)自动运行

单个 Routine 可以同时挂载多种触发器。

Routines 需要 Pro、Max、Team 或 Enterprise 订阅,并开启 Claude Code on the web。在 claude.ai/code/routines 管理,或 CLI 中运行 /schedule

Team 和 Enterprise 管理员可以在 claude.ai/admin-settings/claude-code 通过 Routines 开关全局禁用。禁用后现有 Routine 停止运行,成员无法创建新 Routine。

典型使用场景

每个场景都是 Routine 擅长的:无人值守、可重复、有明确结果。

  • Backlog 整理:定时触发器每晚运行,通过 connector 读取 issue tracker,打标签、分配负责人,摘要发到 Slack。
  • 告警分类:监控工具调用 Routine 的 API 端点,传入告警内容。Routine 拉堆栈、关联最近 commit,开一个包含修复建议的草稿 PR 并链接原告警。值班人员直接审查 PR,不用从空白终端开始。
  • 代码审查:GitHub 触发器在 pull_request.opened 时运行。Routine 按团队审查 checklist 做安全性、性能、代码风格检查,加行内评论和汇总说明。
  • 部署验证:CD 流水线部署后调用 API 端点。Routine 对新构建跑冒烟检查、扫错误日志,在部署窗口关闭前发上线/回滚建议。
  • 文档漂移检测:每周定时运行。Routine 扫描已合并 PR,标出引用已变更 API 的过时文档,对 docs 仓库开 update PR。
  • 多语言 SDK 同步:GitHub 触发器在 pull_request.closed 时运行,只处理已合并的 PR。Routine 把变更移植到另一个语言的并行 SDK 并开对应 PR。

下面介绍创建 Routine 和配置每种触发器。

怎么创建 Routine

支持从 Web、Desktop 应用或 CLI 创建,三个界面都写入同一个云账号,立即同步。

从 Web 创建

  1. 访问 claude.ai/code/routines,点击 New routine
  2. 起个描述性的名称,写提示词。提示词是最重要的一环:Routine 自主运行,所以提示词必须自包含、明确告诉 Claude 做什么以及成功标准是什么。提示词输入区有模型选择器,Claude 每次运行都用选定的模型。
  3. 添加一个或多个 GitHub 仓库。每次运行都会克隆仓库,从默认分支开始。Claude 创建 claude/ 前缀的分支来存放改动。
  4. 选择云端环境。环境控制运行时的网络访问、环境变量和安装脚本。Default 环境使用 Trusted 网络访问,允许默认域名列表中的包注册表、云服务 API、容器注册表和常见开发域名,阻止其余。如果 Routine 需要访问自己的服务或列表以外的域名,运行前先修改环境的网络访问
  5. Select a trigger 下选择触发方式,可单选也可组合。
  6. 表单底部的 ConnectorsPermissions 标签控制 Routine 能访问什么。Connectors 下默认包含你账号上所有已连接的 MCP connectors,移除不需要的。Claude 可以使用已包含 connector 的所有工具(包括写操作),运行期间无需请求权限。Permissions 下可以启用 Allow unrestricted branch pushes,让 Claude 可以推送到已有分支(而不只是 claude/ 前缀的分支)。
  7. 点击 Create。Routine 出现在列表中,下次匹配触发器时运行。要在详情页立即启动一次,点 Run now

从 CLI 创建

在任何会话中运行 /schedule,以对话方式创建定时 Routine。也可以直接描述:

/schedule daily PR review at 9am
/schedule clean up feature flag in one week

Claude 会收集 Web 表单上同样的信息,然后保存到你的账号。

CLI 中的 /schedule 只创建定时触发器。要添加 API 或 GitHub 触发器,在 Web 上编辑 Routine。

管理现有 Routine:

/schedule list        # 查看所有 Routine
/schedule update      # 修改 Routine
/schedule run         # 立即触发

从 Desktop 应用创建

在 Desktop 应用中,点击侧边栏 RoutinesNew routine → 选择 Remote。如果选 Local,创建的是桌面定时任务,运行在本机而非云端。

重要说明

Routines 以完全自主的 Claude Code 云端会话方式运行:没有权限模式选择器,运行期间不需要批准。会话可以执行 Shell 命令、使用提交到仓库中的技能,以及调用你包含的任何 connectors。Routine 能访问什么,由你选择的仓库及其分支推送设置、环境的网络和变量设置、以及包含的 connectors 决定。每个环节只给 Routine 真正需要的东西。

Routine 归属个人 claude.ai 账号。不会分享给队友,消耗账号的每日运行配额。Routine 通过你的 GitHub 身份或 connectors 做的任何事情都显示为你:commit 和 PR 使用你的 GitHub 用户;Slack 消息、Linear ticket 等使用你链接的对应服务账号。

配置触发器

一个 Routine 可以挂载任何组合的定时、API 和 GitHub 触发器,随时从编辑表单的 Select a trigger 区域添加或移除。

怎么配置定时触发器

Select a trigger 区域选择预设频率:hourly、daily、weekdays 或 weekly。时间按本地时区输入,自动转换,所以 Routine 总是根据你所在时区的时间运行。

由于要分散负载,运行时间可能比计划时间延迟几分钟。每次延迟的偏移量对每个 Routine 是固定的。

如果需要自定义间隔(如每两小时、每月一号),先选最接近的预设,然后在 CLI 中运行 /schedule update 设置具体 cron 表达式。最小间隔是 1 小时,频率更高的表达式会被拒绝。

配置单次运行

单次定时触发器只在指定时间运行一次。适合提醒自己、部署完成后开清理 PR、或上游变更落地后触发后续任务。Routine 触发后自动禁用,Web UI 标记为 Ran。要再次运行,编辑 Routine 并设置新的单次时间。

从 CLI 创建单次运行,用自然语言描述时间:

/schedule tomorrow at 9am, summarize yesterday's merged PRs
/schedule in 2 weeks, open a cleanup PR that removes the feature flag

单次运行和定时使用同样的本地到 UTC 转换。

单次运行不计入每日 Routine 运行上限。它们像其他会话一样消耗你的订阅用量。参见用量和限制

怎么配置 API 触发器

API 触发器为 Routine 生成一个专属 HTTP 端点。向端点 POST 请求(带 Routine 的 bearer token)会启动新会话,返回会话 URL。适合接入告警系统、部署流水线、内部工具,或者任何你能发认证 HTTP 请求的地方。

API 触发器只在 Web 端添加到现有 Routine。CLI 当前不能创建或吊销 token。

  1. 访问 claude.ai/code/routines,点选要触发的 Routine,点铅笔图标编辑。
  2. 滚动到 Select a trigger 区域,点击 Add another trigger,选 API
  3. 弹窗显示该 Routine 的 URL 和示例 curl 命令。复制 URL,然后点击 Generate token 并立即复制 token。Token 只显示一次,后续无法找回,所以存放在安全位置。
  4. 发送 POST 请求时要带 Authorization: Bearer 头部。

触发 Routine

/fire 端点发 POST 请求,携带 bearer token。请求体支持可选的 text 字段,用于传递运行上下文(如告警内容、失败日志),它会和 Routine 保存的提示词一起传给 Routine。text 值作为纯文本处理:如果你发送 JSON 或其他结构化数据,Routine 收到的也是字面量字符串。

示例:

curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \
  -H "Authorization: Bearer sk-ant-oat01-xxxxx" \
  -H "anthropic-beta: experimental-cc-routine-2026-04-01" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

成功返回:

{
  "type": "routine_fire",
  "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",
  "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"
}

在浏览器中打开 session URL 可以实时查看运行过程、审查改动,或继续手动对话。

/fire 端点在 experimental-cc-routine-2026-04-01 beta 头部下发布。研究预览期间请求和响应格式、速率限制、token 语义可能变化。破坏性变更会在新的 beta 版本头部下发布,最近的旧版本头部会继续支持一段时间,让调用者有时间迁移。

API 参考

完整的 API 参考(包括所有错误响应、校验规则和字段限制)见 Trigger a routine via API

/fire 端点仅面向 claude.ai 用户,不是 Claude Platform API 的一部分。

怎么配置 GitHub 触发器

GitHub 触发器在连接的仓库上发生匹配事件时,自动启动新会话。每个匹配事件启动一个独立的会话。

研究预览期间,GitHub webhook 事件有每小时每 Routine 和每小时每账号的限额。超出限制的事件会被丢弃,直到窗口重置。在 claude.ai/code/routines 查看当前限额。

GitHub 触发器只能通过 Web UI 配置。

  1. 访问 claude.ai/code/routines,点选 Routine,点铅笔图标编辑。
  2. 滚动到 Select a trigger 区域,点击 Add another trigger,选 GitHub event
  3. 必须先在目标仓库安装 Claude GitHub App。如果没安装,触发器设置会提示你安装。

    注意:CLI 中运行 /web-setup 只授权克隆仓库,不会安装 Claude GitHub App,也不会下发 webhook。GitHub 触发器必须安装 Claude GitHub App,触发器设置会引导你完成。

  4. 选择仓库、事件类型(从支持的事件列表中选择),可选加过滤条件。保存触发器。

支持的事件

GitHub 触发器可以订阅以下事件类别中的全部或具体 action:

事件 触发条件
Pull request PR 被打开、关闭、分配、打标签、同步或其它更新
Release Release 被创建、发布、编辑或删除

怎么过滤 PR

使用过滤条件来缩小触发范围。所有过滤条件必须同时满足,Routine才会触发。

过滤字段 匹配内容
Author PR 作者的 GitHub 用户名
Title PR 标题文本
Body PR 描述文本
Base branch PR 目标分支
Head branch PR 来源分支
Labels PR 上的标签
Is draft PR 是否为草稿状态
Is merged PR 是否已合并

每个过滤字段搭配一个操作符:equals、contains、starts with、is one of、is not one of、matches regex。

matches regex 操作符测试的是字段的完整值,不是子串。要匹配任何包含 hotfix 的标题,应该写 .*hotfix.*。没有 .*,过滤器只匹配目次为 hotfix 的标题。如果要做不含正则语法的字面子串匹配,请用 contains 操作符。

过滤组合示例:

  • Auth 模块审查:base branch = main,head branch contains auth-provider。任何涉及认证的 PR 都会被送到专门的审查流程。
  • 仅审查就绪的 PR:is draft = false。跳过草稿,Routine 只针对已就绪的 PR 运行。
  • 标签驱动的 backport:labels include needs-backport。只有被维护者标记过的 PR 才触发移植到其它分支的 Routine。

会话如何对应事件

每个匹配的 GitHub 事件都启动一个新会话。GitHub 触发的 Routine 不支持跨事件复用会话,所以两个 PR 更新会产生两个独立的会话。

管理 Routine

点击列表中的 Routine 进入详情页,页面显示仓库、connectors、提示词、定时计划、API token、GitHub 触发器以及历史运行记录。

查看和交互运行记录

点击任何一次运行记录,可以打开完整的会话。在此可以看到 Claude 做了什么、审查改动、创建 PR,或继续对话。每个运行会话和其它会话一样,可以用会话标题旁的下拉菜单重命名、归档或删除。

运行列表中绿色状态表示会话启动并退出,没有基础设施错误。这不表示你的提示词任务成功了。打开运行记录查看对话记录,确认 Claude 实际做了什么。被阻止的网络请求、缺少 connector 工具、以及任务级别的失败都反映在对话记录里,而不是状态指示器上。

编辑和控制 Routine

在 Routine 详情页可以:

  • 点击 Run now 立即启动一次运行,不等下次定时间隔。
  • Repeats 区域切换开关,暂停或恢复定时计划。暂停的 Routine 保留配置但不会运行,直到重新启用。
  • 点击铅笔图标编辑 Routine,更改名称、提示词、仓库、环境、connectors 或任何触发器。Select a trigger 区域可以添加或移除定时计划、API token 和 GitHub 事件触发器。
  • 点击删除图标移除 Routine。Routine 创建的历史会话仍保留在会话列表中。

仓库和分支权限

Routine 需要 GitHub 访问权限来克隆仓库。从 CLI 用 /schedule 创建 Routine 时,Claude 会检查你的账号是否已连接 GitHub,如果没有,会提示你运行 /web-setup。参见 GitHub 认证选项了解两种授权方式。

你添加的每个仓库,每次运行都会克隆。除非提示词中另有指定,Claude 从仓库的默认分支开始。

默认情况下,Claude 只能推送到以 claude/ 为前缀的分支。这防止 Routine 意外修改受保护或长期分支。要移除这个限制,在创建或编辑 Routine 时为该仓库启用 Allow unrestricted branch pushes

Connectors

Routines 可以使用你账号上的已连接 MCP connectors,在每次运行期间读写外部服务。例如,处理支持请求的 Routine 可以从 Slack 频道读取消息,在 Linear 中创建问题。

Connectors 是你 claude.ai 的集成。用 claude mcp add 在 CLI 本地添加的 MCP 服务器存在本机上,不是 claude.ai 账号的一部分,所以不会出现在 connectors 列表中。要在 Routine 中使用这些服务器,可以到 claude.ai/customize/connectors 把它们加为 connector,或者在提交的 .mcp.json 中声明,这样它就是克隆仓库的一部分了。

创建 Routine 时,默认会包含你当前所有的已连接 connectors。移除不必要的 connectors,限制 Claude 在运行期间可以使用的工具。你也可以从 Routine 表单中直接添加 connectors。

要管理或添加 connectors,也可以到 claude.aiSettings > Connectors,或者用 CLI 运行 /schedule update

环境和网络访问

每个 Routine 在一个云端环境中运行。环境控制网络访问、环境变量和安装脚本。Routine 每次运行都继承环境的网络策略。

Default 环境使用 Trusted 网络访问:默认域名列表中的包注册表、云服务 API、容器注册表和常见开发域名可以访问,任意域名不行。发往其它主机的出站请求失败,返回 403x-deny-reason: host_not_allowed。MCP connector 流量经过 Anthropic 服务器路由,所以添加到 Routine 的 connectors 不需要把它们的域名加到 Allowed domains 就能工作。移除不需要的 connectors。

要添加额外的域名:

  1. 在 Routine 详情页,点铅笔图标编辑。
  2. 在提示词框下方,选择显示环境名称的云图标(如 Default)。
  3. 悬停在环境列表项上,点击右侧出现的设置图标。
  4. 在对话框中,将 Network access 改为 Custom,在 Allowed domains 中输入域名。勾选 Also include default list of common package managers 可以在自定义域名之外保留默认域名列表。如果要用完全不受限的网络,选 Full
  5. 点击 Save changes。新策略从下次运行生效。

更多关于访问级别和默认域名列表的信息,参见网络访问

用量和限制

Routines 和交互式会话一样消耗订阅用量。除了标准订阅限制外,Routines 还有每个账号的每日运行上限。在 claude.ai/code/routinesclaude.ai/settings/usage 查看当前用量和剩余运行次数。

当 Routine 达到每日上限或你的订阅用量限制时,启用了用量超额的组织可以继续以计量超额方式运行。没有用量超额,新的运行会被拒绝,直到窗口重置。在 claude.aiSettings > Billing 启用用量超额。

单次运行不计入每日 Routine 上限。它们像其它会话一样消耗常规订阅用量,但不受每账号每日 Routine 运行配额的约束。

故障排查

/schedule 返回 Unknown command

CLI 在一个前置条件不满足时会隐藏 /schedule 命令。常见原因:

  • 你是用 Console API key 或云服务(Bedrock、Vertex、Foundry)认证的。/schedule 需要 claude.ai 订阅登录。如果 shell 中设置了 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN,或 settings.json 中设置了 apiKeyHelper,先移除它们,因为这些优先级高于 claude.ai 登录
  • shell 环境或 settings.json 文件env 块中设置了 DISABLE_TELEMETRYDO_NOT_TRACKCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICDISABLE_GROWTHBOOK。这些会禁掉功能标志获取,而 /schedule 依赖功能标志
  • 你正在 Claude Code on the web 会话中。这种情况请从 Web UI 管理 Routine
  • CLI 版本低于 v2.1.81。运行 claude update 升级

无论 CLI 如何配置,你始终可以在 claude.ai/code/routines 创建和管理 Routine。

/schedule 返回 “Routines are disabled by your organization’s policy”

你的 Team 或 Enterprise 管理员很可能在 claude.ai/admin-settings/claude-code 关闭了 Routines 开关。这是服务端的组织设置,本地配置无法覆盖。联系你的管理员,请求为组织启用 Routines。

常见问题

定时 Routine 被跳过没跑是为什么?

可能原因:到达了每日 Routine 运行上限(到 web UI 查看);组织管理员关闭了 Routines 开关;环境配置不允许必要域名,导致 403 错误(日志里可以看到 x-deny-reason: host_not_allowed);单次运行已触发过,自动标记为 Ran。检查 Routine 的运行列表和用量页面。

Claude 推送到不是 claude/ 前缀的分支怎么配置?

创建或编辑 Routine 时,在 Permissions 下为对应仓库启用 Allow unrestricted branch pushes。默认情况下 Claude 只能推送到 claude/ 前缀的分支,这是为了防止意外修改受保护或长期分支。

为什么 CLI 里 /schedule 不显示?

最常见原因是认证方式不是 claude.ai 登录:如果 shell 中设置了 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN,或 settings.json 中配置了 apiKeyHelper,CLI 会优先使用这些,隐藏 /schedule 命令。另外如果设置了 DISABLE_TELEMETRYDO_NOT_TRACK 等环境变量也会隐藏该命令。检查并移除这些设置,或直接到 claude.ai/code/routines 通过 Web UI 管理。