Courses
每一项重复性的 Claude Code 任务都有相同的隐性成本。想想每晚的 PR 审查、每周的依赖审计,或发布前的文档检查。每次都需要您开着终端会话,盯着它运行。合上电脑,工作就被搁置。
例行任务(Routines) 消除了这部分成本。
例行任务在由 Anthropic 管理的云端基础设施上运行 Claude Code,即使您的电脑合上,它也会继续工作。您只需编写一次任务,指向您的代码库,它就能在没有会话打开的情况下,按计划或基于事件触发执行。
本教程将带您构建第一个例行任务。您将创建一个定时任务,观察其运行,然后扩展其范围与能力。
若想更深入,我们的实践课程 Claude Code in Action 涵盖从上下文管理与 计划模式到自定义命令、MCP 服务器、hooks 与 SDK 的全部内容。
什么是 Claude Code 例行任务?
例行任务是一份保存的 Claude Code 配置:一段提示词、一个或多个代码库,以及一组连接器。您打包一次,它就会在 Anthropic 管理的云端基础设施上自动运行。
这三部分各司其职:
- 提示词(Prompt)。最关键,因为例行任务在每一步都不会征求您的确认。提示词必须完整承载任务本身与完成定义。
- 代码库(Repositories)。Claude 在每次运行开始时都会克隆这些代码库,并在其中开展工作。
- 连接器(Connectors)。您账号上的 claude.ai 集成,如 Slack 或 Linear。例行任务可以在运行期间从中读取并向其写入。例如,一个分拣支持请求的任务可能会读取某个 Slack 频道并在 Linear 中创建问题。
例行任务使用的连接器需要在 claude.ai 平台中添加,MCP 服务器亦是如此。您的本地配置不会自动沿用。

例行任务可通过三种方式触发:按计划、通过 API 调用、或通过 GitHub 事件。单个例行任务可以同时组合这三者。
例行任务 vs /loop
/loop 与 /schedule 的区别在于它们解决的问题不同。
一个 /loop 任务存在于您当前的会话中。它只会在 Claude Code 在您机器上运行且空闲时触发,关闭终端就会停止。因此,它适合用来轮询您此刻正在关注的构建。
关于 /loop 与其他重要命令的更多信息,建议阅读我们的 Claude Code 终端 教程。
例行任务在云端运行,并独立于任何会话而存在:
|
|
云端例行任务 |
|
|
运行位置 |
Anthropic 云 |
您的机器 |
|
是否需要本机 |
否 |
是 |
|
是否需要会话 |
否 |
是 |
|
最小间隔 |
1 小时 |
1 分钟 |
还有第三种本地选项。 桌面定时任务 在您的电脑上运行,适用于需要本地文件与工具的工作。它们只会在机器唤醒时运行,但不要求打开 Claude 应用。
我们将要构建的例行任务
心智模型已建立。接下来您需要一个可供例行任务处理的目标。在本教程中,我们创建了 pr-review-demo,一个带有一个未合并拉取请求的小型 Python 项目。
它包含一个 cartlib 包来处理购物车:以分(整数)存储价格,应用会员与批量折扣,并叠加州销售税得到最终金额。主分支上的包是正确的。
该未合并的拉取请求添加了免邮优惠券,其中包含我们有意植入的真实缺陷。它是跨文件的单位不匹配,单看任何一个文件都不可见,只有跟踪值在两个文件间的传递才能发现。这为后续教程提供了可处理的真实问题。
Fork 该仓库以便在您自己的副本上跟做。它只是一次性练习,所用模式可迁移到您为例行任务指定的任意仓库。
跟做所需的先决条件
您需要一个 claude.ai 账号,订阅 Pro、Max、Team 或 Enterprise 套餐,并启用网页版 Claude Code。例行任务位于 claude.ai/code/routines。
/schedule 命令通过您的 claude.ai 订阅登录进行认证,而非 Anthropic API Key 或 Bedrock、Vertex、Foundry 等认证。它还需要较新的 CLI,因此如果您的版本较旧,请运行 claude update。
另有两项独立的 GitHub 先决条件。其一,/web-setup 授予克隆权限,定时例行任务需要该权限。其二,需要单独安装 Claude GitHub App,以启用稍后介绍的 GitHub 触发器。
使用 /schedule 构建 Claude Code 例行任务
有了目标仓库后,就可以通过 CLI 构建例行任务。在任意会话中运行 /schedule。您可以直接传入描述:
/schedule daily PR review at 9 am
随后,Claude 会引导您填写与网页表单相同的字段:名称、提示词、代码库、环境、连接器与计划。它会在您本地时区确认计划,并为您转换,所以 9 点会自动变成正确的 cron 表达式,无需您手写。

如果您的账号尚未连接 GitHub,Claude 会提示您运行 /web-setup。运行后,再次执行 /schedule 以继续先前进度。
撰写能在无人值守下运行的提示词
提示词决定了例行任务的成败。
普通会话是对话式的,您可以边走边纠正 Claude。例行任务无人纠正。它冷启动、跑到结束,无法提出澄清问题。提示词必须明确任务、仓库,以及完成的判定标准。
比较这两条。第一条说得太少:
Review the open PR.
它既未指明仓库或评审标准,也没有评论位置,更没有完成定义。冷启动的运行无法补齐这些空白。第二条提示词则逐一回答:
Review the open pull request in pr-review-demo. The cartlib package works entirely in integer cents. Read the checkout flow and the values it pulls from config.py, and check that every amount stays in cents end to end. If any value is mixed in using the wrong unit, leave an inline comment on that line explaining the error and its effect on the customer's total. Then, post a summary comment stating whether the PR is safe to merge.
该提示词指明了仓库,并陈述代码必须保持的“不变式”:所有金额以分为单位。它点出了两个关键文件,并将“完成”定义为留下行内评论与合并结论。这为无人值守的运行设定了明确目标。当 /schedule 询问代理应执行何事时,将其粘贴进去。
默认会包含您所有连接器,因此新建的例行任务可以访问您账号已连接的一切。此处暂时可以,后文会收紧范围。
完成流程后,Claude 会保存例行任务并确认其已生效,包括其代码库、计划、模型与下次运行时间。

该例行任务也会出现在列表中 claude.ai/code/routines。 打开其详情页即可一览全貌:状态、仓库、计划、连接器、完整提示词,以及 立即运行 按钮。

点击 立即运行 可立刻执行,无需等到早上 9 点。
阅读运行记录
运行从默认分支拉取的全新仓库克隆开始。您提交的内容都在其中。仅在您本机设置的内容不在其中,因此例行任务看到的仓库与您同事所见一致。
完成后,运行列表会显示绿色状态。绿色意味着会话运行并正常退出,未遇到基础设施错误。但这并不代表提示词中的任务一定成功。三类失败会隐藏在绿色对勾后,仅能在对话记录中发现:
- 环境阻止的网络请求。
- 例行任务预期可用却无法访问的连接器工具。
- 任务层面的失败:运行本身干净结束,但结果做错了。

因此请打开运行记录进行确认。点击任一运行可将其作为完整会话阅读,查看 Claude 的操作、审阅 diff、打开拉取请求,或继续对话。
在演示仓库中,对话记录显示了问题所在。Claude 阅读 checkout.py,发现优惠券被赋值为 5 而非 500。它解释说这会将 5 美元按 5 美分应用,导致每单多收 4.95 美元,并给出一行修复方案。随后通过 GitHub 连接器在 PR 上发布审查意见。

通过 CLI 管理 Claude Code 例行任务
例行任务创建后,仍通过同一命令进行管理。运行 /schedule list 查看全部,使用 /schedule update 修改某一项,或用 /schedule run 立即触发一次运行。
计划预设包括每小时、每日、工作日与每周。若需自定义间隔(例如每 2 小时、每月 1 日),先选择最接近的预设。然后运行 /schedule update 直接设置 cron 表达式。最小间隔为 1 小时,更快的频率会被拒绝。
例行任务也会计入您账号的每日运行配额,在研究预览期间,GitHub 事件还有每小时上限。超出上限的事件会被丢弃,而非排队。当前数值因套餐而异,显示于 claude.ai/code/routines。
CLI 仅创建定时的例行任务。要添加 GitHub 或 API 触发器,请在 Web 应用中编辑该例行任务。
通过 GitHub 与 HTTP 触发 Claude Code 例行任务
定时计划会按时钟触发例行任务。另有两种触发器可让 GitHub 或您自有系统触发同一个例行任务。一个 PR 审查任务可以每晚运行、对每个新 PR 做出反应,同时由部署脚本触发。
两者均可通过编辑例行任务 claude.ai/code/routines 完成添加。
使用 GitHub 触发器响应拉取请求
GitHub 触发器要求在目标仓库安装 Claude GitHub App。若缺少该 App,触发器设置会提示您安装。请注意,先前的 /web-setup 仅授予克隆权限。它不会安装 App 或传递 webhooks,因此不能替代此步骤。
安装 App 后,添加触发器并选择事件。事件分为两类: 拉取请求 与 发布,您需在其中选择具体动作。UI 提供常见预设,如“PR 已打开”“PR 已合并”“发布已发布”,其余可用自定义选项。
随后使用筛选器收窄范围。对于拉取请求,您可以按作者、标题、正文、基准分支、源分支、标签、是否草稿、是否已合并进行筛选。所有条件均需匹配,例行任务才会触发。
matches regex 运算符会匹配整个字段,而非子串。要匹配任意标题中包含 hotfix 的情形,请写 .*hotfix.*。仅写 hotfix 只会匹配标题恰为该词、且仅此而已的情况。

GitHub 触发器设置为在新拉取请求时触发,并筛选到主分支与特定作者。
对于演示仓库,将事件设为“拉取请求已打开”,并不设置筛选。现在每个新 PR 都会自动触发您先前编写的审查,无需有人守在终端。它会跨文件追踪优惠券的单位、在缺陷处留下行内评论,并给出合并结论。
每个匹配事件都会启动独立会话,因此连续两个 PR 会产生彼此独立的两次运行。
通过 HTTP 触发例行任务
API 触发器允许您的自有工具触发例行任务。在触发器选择器下选择 API,并点击 生成令牌。令牌只显示一次,之后无法找回,请立即将其存入告警工具的机密存储。
然后向例行任务的 fire 端点发起 POST,携带该令牌与 text 字段的请求体:
curl -X POST https://api.anthropic.com/v1/claude_code/routines/$ROUTINE_ID/fire \
-H "Authorization: Bearer $ROUTINE_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "Content-Type: application/json" \
-d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'
text 的值会作为纯字符串传递,不会被解析,因此请写明文说明而非 JSON。结构化输入会作为原始文本送达,例行任务将原样读取。
anthropic-beta 头为必需;该 API 仍在试验阶段,因此在将其接入 CI 前请查阅 API 参考。此后,监控工具即可在告警时调用该端点,由例行任务自主打开草稿修复 PR。
限定 Claude Code 例行任务的访问范围
例行任务自主运行,因此在指向真实仓库前,请约束其可达范围。文档将其归纳为四项控制:
- 通过您的 GitHub 身份与连接器,例行任务“以谁的身份”行动。
- 它可以推送到哪些分支。
- 它可以使用哪些连接器。
- 环境允许其通过网络访问哪些主机。
将每项范围限定到例行任务真正所需。
例行任务的身份
身份 放在首位,因为在共享仓库中,这是同事首先注意到的。例行任务通过您的 GitHub 身份或连接器所做的一切,都会以“您”的名义出现。
提交与拉取请求会带上您的 GitHub 用户名,Slack 消息与 Linear 工单会使用您已关联的账号。团队成员会看到您的名字出现在这些提交与 PR 上,因此请以能暗示“由例行任务创建”的方式来命名分支与标题。
例行任务可推送的分支
分支 次之。一次运行是完整的云端会话,不会弹出权限确认,因此它不会在编辑文件或打开拉取请求前暂停询问。
护栏就是可写入的分支。默认情况下,Claude 只能推送到以 claude/ 为前缀的分支,从而避免干扰受保护或长期存在的分支,如 main。
每个仓库都有一项设置:允许不受限的分支推送。开启它会移除该限制。请仅在确有需要的仓库上有意识地开启。
例行任务可使用的连接器
连接器 风险最大。默认会包含您所有的 claude.ai 连接器,Claude 可以在运行期间不经询问地使用所包含连接器的全部工具,包括写入操作。
因此将列表收紧到该例行任务所需。一个 PR 审查任务一般只需 GitHub,其他很少需要。无关的邮件或日历连接器属于例行任务不需的访问,PR 中隐藏的提示注入可能会利用这类访问对您不利。

网络访问
网络访问 是最后一项控制。默认环境使用受信任的网络访问,可访问内置允许清单中的软件包注册表、云厂商 API、容器注册表与常见开发域名,其余均被阻止。
被阻止的请求会返回 403,并带有 x-deny-reason: host_not_allowed。只有当例行任务确实需要访问您的服务时再放宽权限。否则,这类失败会比较隐蔽,只会在对话记录中出现,而非明显报错。
下一个可构建的 Claude Code 例行任务点子
您已经会构建、触发并限定例行任务范围。以下为官方文档中的示例,每个示例都将工作内容与合适的触发方式配对:
- 定制化代码审查。GitHub 触发:PR 打开时。应用您团队的审查清单,就安全、性能与风格留下行内评论,并添加摘要。这是将演示扩展到您的真实标准。
- 待办维护。计划触发:每个工作日晚间。读取自上次运行以来新开的 Issue,应用标签,基于问题引用的代码区域分配负责人,并将摘要发布到 Slack。
- 部署验证。API 触发:生产部署后由 CD 流水线调用。对新构建进行冒烟检查,扫描错误日志中的回归,并在发布频道发布 go/no-go 结论。
- 文档漂移。计划触发:每周。扫描自上次运行以来已合并的 PR,标记引用已更改 API 的文档,并在文档仓库中打开更新 PR。
例行任务适合无人值守、可重复、且有明确结果的工作。若您能将成功标准写入提示词(如本次 PR 审查),该任务就是候选。不适合需要实时人类判断的工作。
结语
例行任务改变了您在重复性工作上的时间分配。与其每次在终端亲自运行,不如写好一次,之后只需审阅已完成的结果。您构建的 PR 审查会在您合上电脑时自动触发,待您有空时再阅读结论。
如欲进一步学习 Claude Code,以下教程与本文相辅相成:
- Claude Code 最佳实践,帮助您从每次会话中获得更多。
- 编写 CLAUDE.md 文件,为例行任务与会话提供共享上下文。
- 规格驱动开发,适用于在自动化之前值得先行指定的任务。
- 自动模式与通道,以更少监督运行 Claude Code。
Claude Code 例行任务常见问题
什么是 Claude Code 例行任务?
例行任务是一份保存的 Claude Code 配置:包含一段提示词、一个或多个代码库,以及一组连接器。您打包一次,它就会在由 Anthropic 管理的云端基础设施上自动运行,并可按计划、通过 API 调用或由 GitHub 事件触发。
例行任务与 /loop 有何不同?
/loop 任务以会话为作用域。它只会在 Claude Code 在您机器上打开且空闲时运行,关闭终端会停止。例行任务在云端运行,并独立于任何会话,即使您合上电脑也会继续工作。例行任务的最小间隔为 1 小时,而 /loop 为 1 分钟。
如何创建例行任务?
在任意 Claude Code 会话中运行 /schedule 命令,例如:/schedule daily PR review at 9 am。Claude 会引导您填写与网页表单相同的字段(名称、提示词、代码库、环境、连接器与计划),然后将例行任务保存到您的账号,并显示在 claude.ai/code/routines。
我合上电脑时,例行任务还能运行吗?
可以。例行任务在由 Anthropic 管理的云端基础设施上执行,而不是在您的机器上,因此定时或触发的运行即便在您合上电脑时也能完成。您可以在网页端跟进一次运行,或事后查看其对话记录。
如何控制例行任务的访问范围?
通过四项控制限定例行任务范围:其行动所用的身份、可推送的分支、可使用的连接器,以及可访问的网络主机。默认情况下,Claude 仅推送到以 claude/ 为前缀的分支,且包含您所有连接器,因此请收紧连接器列表;仅在确有需要时放宽网络访问。