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 创建
- 访问 claude.ai/code/routines,点击 New routine。
- 起个描述性的名称,写提示词。提示词是最重要的一环:Routine 自主运行,所以提示词必须自包含、明确告诉 Claude 做什么以及成功标准是什么。提示词输入区有模型选择器,Claude 每次运行都用选定的模型。
- 添加一个或多个 GitHub 仓库。每次运行都会克隆仓库,从默认分支开始。Claude 创建
claude/前缀的分支来存放改动。 - 选择云端环境。环境控制运行时的网络访问、环境变量和安装脚本。Default 环境使用 Trusted 网络访问,允许默认域名列表中的包注册表、云服务 API、容器注册表和常见开发域名,阻止其余。如果 Routine 需要访问自己的服务或列表以外的域名,运行前先修改环境的网络访问。
- 在 Select a trigger 下选择触发方式,可单选也可组合。
- 表单底部的 Connectors 和 Permissions 标签控制 Routine 能访问什么。Connectors 下默认包含你账号上所有已连接的 MCP connectors,移除不需要的。Claude 可以使用已包含 connector 的所有工具(包括写操作),运行期间无需请求权限。Permissions 下可以启用 Allow unrestricted branch pushes,让 Claude 可以推送到已有分支(而不只是
claude/前缀的分支)。 - 点击 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 应用中,点击侧边栏 Routines → New 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。
- 访问 claude.ai/code/routines,点选要触发的 Routine,点铅笔图标编辑。
- 滚动到 Select a trigger 区域,点击 Add another trigger,选 API。
- 弹窗显示该 Routine 的 URL 和示例 curl 命令。复制 URL,然后点击 Generate token 并立即复制 token。Token 只显示一次,后续无法找回,所以存放在安全位置。
- 发送 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-01beta 头部下发布。研究预览期间请求和响应格式、速率限制、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 配置。
- 访问 claude.ai/code/routines,点选 Routine,点铅笔图标编辑。
- 滚动到 Select a trigger 区域,点击 Add another trigger,选 GitHub event。
- 必须先在目标仓库安装 Claude GitHub App。如果没安装,触发器设置会提示你安装。
注意:CLI 中运行
/web-setup只授权克隆仓库,不会安装 Claude GitHub App,也不会下发 webhook。GitHub 触发器必须安装 Claude GitHub App,触发器设置会引导你完成。 - 选择仓库、事件类型(从支持的事件列表中选择),可选加过滤条件。保存触发器。
支持的事件
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 containsauth-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.ai 的 Settings > Connectors,或者用 CLI 运行 /schedule update。
环境和网络访问
每个 Routine 在一个云端环境中运行。环境控制网络访问、环境变量和安装脚本。Routine 每次运行都继承环境的网络策略。
Default 环境使用 Trusted 网络访问:默认域名列表中的包注册表、云服务 API、容器注册表和常见开发域名可以访问,任意域名不行。发往其它主机的出站请求失败,返回 403 和 x-deny-reason: host_not_allowed。MCP connector 流量经过 Anthropic 服务器路由,所以添加到 Routine 的 connectors 不需要把它们的域名加到 Allowed domains 就能工作。移除不需要的 connectors。
要添加额外的域名:
- 在 Routine 详情页,点铅笔图标编辑。
- 在提示词框下方,选择显示环境名称的云图标(如 Default)。
- 悬停在环境列表项上,点击右侧出现的设置图标。
- 在对话框中,将 Network access 改为 Custom,在 Allowed domains 中输入域名。勾选 Also include default list of common package managers 可以在自定义域名之外保留默认域名列表。如果要用完全不受限的网络,选 Full。
- 点击 Save changes。新策略从下次运行生效。
更多关于访问级别和默认域名列表的信息,参见网络访问。
用量和限制
Routines 和交互式会话一样消耗订阅用量。除了标准订阅限制外,Routines 还有每个账号的每日运行上限。在 claude.ai/code/routines 或 claude.ai/settings/usage 查看当前用量和剩余运行次数。
当 Routine 达到每日上限或你的订阅用量限制时,启用了用量超额的组织可以继续以计量超额方式运行。没有用量超额,新的运行会被拒绝,直到窗口重置。在 claude.ai 的 Settings > Billing 启用用量超额。
单次运行不计入每日 Routine 上限。它们像其它会话一样消耗常规订阅用量,但不受每账号每日 Routine 运行配额的约束。
故障排查
/schedule 返回 Unknown command
CLI 在一个前置条件不满足时会隐藏 /schedule 命令。常见原因:
- 你是用 Console API key 或云服务(Bedrock、Vertex、Foundry)认证的。
/schedule需要 claude.ai 订阅登录。如果 shell 中设置了ANTHROPIC_API_KEY或ANTHROPIC_AUTH_TOKEN,或settings.json中设置了apiKeyHelper,先移除它们,因为这些优先级高于 claude.ai 登录 - shell 环境或
settings.json文件的env块中设置了DISABLE_TELEMETRY、DO_NOT_TRACK、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC或DISABLE_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_KEY 或 ANTHROPIC_AUTH_TOKEN,或 settings.json 中配置了 apiKeyHelper,CLI 会优先使用这些,隐藏 /schedule 命令。另外如果设置了 DISABLE_TELEMETRY、DO_NOT_TRACK 等环境变量也会隐藏该命令。检查并移除这些设置,或直接到 claude.ai/code/routines 通过 Web UI 管理。