Claude Code 的 Routines:哪些在云端运行,哪些留在你的机器上,以及怎么选
Routines 是 Claude Code 在你不在场时运行已保存提示词的方式:按计划、由 API 调用或由 GitHub 事件启动,作为一个 cloud session,在你仓库的全新克隆上运行。它们目前处于研究预览阶段。Claude Code 还有两种在本地安排工作的方式,即桌面应用的定时任务和 /loop,而三者的行为并不相同:最小间隔、对本地文件的访问、权限确认,以及笔记本睡眠时会发生什么。本指南结合文档中的限制把三者摆在一起,再解释为什么我们自己的七个夜间代理运行在一台本地机器上。
Claude Code 现在有三种不用你亲手输入就能运行提示词的方式,名字重叠到谁都会搞混:Routines、桌面应用的定时任务,以及 /loop。桌面应用甚至在同一个页面里创建前两种。它们的区别在于自动化工作时唯一要紧的那一点:代理在哪里运行,因此它能看到什么。
本指南结合文档中写明的限制逐一介绍这三者(2026 年 10 月 4 日核实;Routines 处于研究预览阶段,Anthropic 表示其行为、限制和 API 都可能变化)。然后说明我们自己的做法:每天晚上我们这边有七个代理启动,没有一个是 routine。原因很具体,未必适用于你。
routine 是什么
routine 是一份保存好的 Claude Code 配置:一段提示词、一个或多个 GitHub 仓库和一组连接器,打包一次,自动运行。它运行在 Anthropic 托管的云端基础设施上,或者在你的组织把它转过去时运行在组织的自托管环境上。你的笔记本可以合上。
每次运行都是一个完整的 cloud session。由此带来四个后果,要记住的就是这四点:
- 每次都是全新克隆。 每个仓库在运行开始时从默认分支克隆。除非你的提示词另有说明,Claude 会把工作推送到一个以
claude/为前缀的分支。你机器上任何未提交的东西,对 routine 来说都不存在。 - 没有权限确认。 没有权限模式选择器。会话会运行 shell 命令,使用提交到仓库里的 skills,调用所含每个连接器的每个工具,包括写操作,中途不会停下来询问。
- 是连接器,不是你的本地 MCP 服务器。 你 claude.ai 账户的所有连接器默认都会包含,文档建议你移除 routine 用不到的那些。用
claude mcp add在本地添加的服务器留在你的机器上,不在这个列表里。提交一个.mcp.json是另一条入口。 - 它以你的身份行事。 Routines 属于你的个人账户。提交和 pull request 带着你的 GitHub 用户,Slack 消息和 Linear 工单使用你关联的账户。
Routines 适用于 Pro、Max、Team 和 Enterprise 套餐。你可以在 claude.ai/code/routines、桌面应用(Code 标签页、Routines、New routine、Cloud)或 CLI 中创建。
三种触发器
一个 routine 可以带一个触发器,也可以同时带多个。
定时。 按你的本地时间每小时、每天、工作日或每周运行,或者在未来某个时刻只运行一次。最小间隔是一小时。文档里有个值得知道的细节:正好排在整点的运行可能会晚几分钟启动,所以在乎时间时,选 9:07 而不是 9:00。
API。 每个 routine 都有自己的端点和自己的 bearer 令牌,令牌在网页上生成(CLI 不能创建或撤销令牌)。一个 POST 就会启动一个会话并返回它的 URL:
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."}'
text 字段并不是作为指令到达 routine 的。它被包在一个标明其为不可信数据的块里,所以保存的提示词必须明确表示要用它(“调查 routine-fire-payload 块中描述的告警”),否则这段文本只是不起作用的上下文。这个默认设置是对的:任何持有令牌的人都能发送文本。
GitHub。 pull request 事件和 release 事件,可以按作者、标题、正文、基础分支、头分支、标签、草稿状态和合并状态筛选。仓库上必须安装 Claude GitHub App。每个事件启动各自的会话,超出每小时上限的事件会被丢弃。
在 CLI 里:/schedule
/schedule 通过对话创建一个定时 routine,/routines 是它的别名。
/schedule daily PR review at 9am
/schedule in 2 weeks, open a cleanup PR that removes the feature flag
/schedule list
/schedule update
/schedule run
自定义 cron 表达式要用 /schedule update 设置。从 CLI 添加 GitHub 触发器需要 Claude Code v2.1.225 或更高版本;API 触发器只能在网页上创建。
如果 /schedule 回答 “Unknown command”,常见原因是认证:这个命令要求用 claude.ai 订阅登录。shell 里的 ANTHROPIC_API_KEY、settings.json 里的 apiKeyHelper,或者通过 Bedrock 或 Vertex 登录,都会让它被隐藏。
依赖它之前要知道的限制
Routines 和任何交互式会话一样消耗你的订阅用量。此外,每种启动运行的方式都有每小时上限,没有超额:
| 操作 | 上限 | 计算范围 |
|---|---|---|
| 定时运行,含一次性运行 | 每小时 100 次 | 你的账户 |
| Run now、API 触发、重新设定一次性运行 | 每小时 30 次 | 每个 routine |
| API 触发 | 每小时 100 次 | 你的账户 |
文档里还有三点在实践中容易踩坑。GitHub 连接缺失或过期,会让 routine 跳过运行最多 72 小时,然后自行关闭。订阅暂停会让 Routines 挂起。另外,绿色的运行并不代表任务成功:它表示会话启动并退出时没有基础设施错误。
两种本地选项
桌面应用的定时任务就是同一个 New routine 按钮里的 Local 选项。它们在你的机器上运行,使用你文件的当前状态,包括未提交的改动,除非你勾选了 worktree 选项。每个任务有自己的权限模式。问题在文档的一句话里:只有桌面应用在运行、电脑处于唤醒状态时,任务才会运行。睡眠期间该跑的运行会被跳过,唤醒后应用只会针对过去七天里最近一次错过的时间补跑一次。提示词保存在 ~/.claude/scheduled-tasks/<task-name>/SKILL.md。
/loop 在一个打开的 CLI 会话里重复执行提示词:/loop 5m check the deploy。它继承会话的权限和 MCP 服务器,最多容纳 50 个任务,重复任务七天后过期。关掉终端它就停了。它适合用一个下午盯着一次构建或一个 pull request,不适合夜间作业。
按文档的说法并排比较:
| Routine(云端) | 桌面应用的定时任务 | /loop | |
|---|---|---|---|
| 运行在 | Anthropic 的云端 | 你的机器 | 你的机器 |
| 机器需要开着 | 否 | 是 | 是 |
| 需要打开的会话 | 否 | 否 | 是 |
| 本地文件 | 否,全新克隆 | 是 | 是 |
| 权限确认 | 无 | 按任务 | 继承会话 |
| 最小间隔 | 1 小时 | 1 分钟 | 1 分钟 |
怎么选
三个问题就能定。
这项工作是否完全在仓库里、在连接器后面就能完成? 给 issue 打标签、评审每个新的 pull request、对照已合并的改动检查文档:routine 就是合适的工具。不用让任何机器保持唤醒,结果以分支的形式送达。
这项工作是否需要只存在于你机器上的东西? VPN 后面的数据库、你已登录的浏览器、未提交的文件、本地 MCP 服务器:那就留在本地。routine 会从一个这些都没有的克隆开始。
它需要比每小时更频繁地运行,或者在一分钟内做出反应吗? 同样用本地,或者如果外部系统能调用它,就用 API 触发器。
为什么我们的七个夜间代理不是 Routines
我们每天晚上 20:00 在一台 Mac mini 上运行七个定时代理。它们阅读当天的提交、修复 bug、修正这个网站、在社交网络上发帖,并发邮件汇报。完整的配置和提示词在另一篇文章里。Routines 出现时,我们问了那个显而易见的问题:为什么还要让一台机器开着?
四个原因,都对照上面的文档核实过。
- 它们在一个共享的、未提交的工作树里工作。 这些代理会拉取代码,阅读彼此当晚的报告,边做边提交。其中几个在同一个小时里动同一个检出。每次运行都用全新克隆,就会丢掉同一支团队两个步骤之间的交接。
- 其中一个从真实的浏览器发帖。 社交代理从一个登录了三个社交网络的 Chrome 会话发帖。这个会话在这台机器上。云端 VM 里没有这样的浏览器。
- 它们使用本地 MCP 工具。 待办清单、项目记忆、提示词库和开发命令,都是运行在那台机器上的应用所提供的 MCP 服务器。它们不是 claude.ai 连接器。
- 它们不全是 Claude Code。 routine 用 claude.ai 订阅运行 Claude Code。我们的调度器则启动任务指定的任何 CLI。
所以我们用的是 AgentsRoom 的定时任务:一个触发器就是一段提示词、一个代理或一支团队,加上一个频率,在我们选定的机器上启动。它是应用内的调度器,不是服务器:只要 AgentsRoom 在那台机器上开着它就会触发,下次启动时补跑错过的运行,还能为下一次运行设置操作系统的唤醒定时器。这和 Claude 桌面应用的定时任务是同样的约束,区别在于代理可以是 Codex、Antigravity 或任何其他 CLI,而且触发器也可以由 webhook 触发,或在工单交付时触发。
这些都不会让 Routines 变成错误的选择。如果我们的夜间工作是“用我们的清单评审每个 pull request”,我们会把它做成带 GitHub 触发器的 routine,然后关掉 Mac mini。而当需求是为一个任务准备一台一次性机器、而不是一项重复作业时,那又是另一种工具,见 “Claude remote agents”到底指什么。
常见问题
Claude Code 的 Routines 和定时任务是一回事吗?
不完全是。routine 在云端运行,是一个完整的 Claude Code cloud session,基于你仓库的全新克隆,可以按计划、由 API 调用或由 GitHub 事件启动。桌面应用的定时任务在你自己的机器上运行,使用你的本地文件,并且只在 Claude 桌面应用打开、电脑处于唤醒状态时运行。/loop 在一个打开的 CLI 会话里重复执行一段提示词。桌面应用的 Routines 页面可以创建前两种:点 New routine,再选 Cloud 或 Local。
Claude Code 的 routine 最多能多频繁地运行?
定时触发器的最小间隔是一小时:比这更频繁的 cron 表达式会被拒绝。预设选项有每小时、每天、工作日和每周,/schedule update 可以设置自定义的 cron 表达式。在订阅用量之外,一个账户每小时最多启动 100 次定时运行,Run now 和 API 触发对每个 routine 的上限是每小时 30 次。桌面应用的定时任务和 /loop 可以低至一分钟。
运行 Routines 需要我的电脑开着吗?
不需要。routine 运行在 Anthropic 托管的云端基础设施上,或者在你的组织把它转过去时运行在自托管环境上,所以合上笔记本它也照常工作。代价是它看不到你的机器:它从默认分支的全新克隆开始,只带着你 claude.ai 账户的连接器和它所在云端环境的网络访问。你用 claude mcp add 在本地添加的 MCP 服务器不可用,除非你把它们添加为连接器,或者提交一个 .mcp.json。
Routines 要额外付费吗?
文档里没有单独的价格:在 Pro、Max、Team 和 Enterprise 套餐上,Routines 和交互式会话一样消耗订阅用量。当一个 routine 触及你的用量上限时,后续运行会被拒绝,直到窗口重置;如果开启了用量额度,则会按超额计费继续运行。每小时的运行次数上限没有超额可言。
routine 能运行 Codex、Antigravity 或其他 CLI 吗?
不能。routine 是一份保存好的 Claude Code 配置,而 /schedule 要求用 claude.ai 订阅登录:当 Claude Code 通过 API 密钥或云服务商认证时,这个命令会被隐藏。要调度其他 CLI,你需要 Claude Code 之外的调度器:cron 加上该 CLI 的无头模式、CI 的定时计划,或者一个能为任意 CLI 启动代理的工具,这正是 AgentsRoom 定时任务所做的事。
为什么我的 routine 什么都没做却显示绿色?
因为状态描述的是会话,而不是任务。文档说得很直白:绿色状态表示会话启动并退出时没有基础设施错误,并不表示你提示词里的任务成功了。被拦截的网络请求、缺失的连接器工具和任务层面的失败,只会出现在会话记录里。打开那次运行,或者问 CLI:在 Claude Code v2.1.227 及以上版本中,/schedule 后面跟一个关于该 routine 的问题,会列出它最近的运行并读取日志。
下载 AgentsRoom
在一个窗口中运行你所有项目的所有 AI 代理。
配套应用:随时随地监控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接发送到您的公开待办清单。
继续阅读
我的 AI 跑步教练是一个 Git 仓库加一个 Claude 代理
跑完一趟,手表自动同步,三分钟后分析已经写进我的仓库,本周计划被重新调整过,教练还在 Strava 活动下留了一条评论。没有做 App,没有写服务器,没有按 token 计费的账单:一个 Claude 订阅、AgentsRoom,加上一堆 Markdown 文件。下面是完整的搭建过程,可以照着复现。
阅读全文AI 代理循环:自我纠错的编码代理如何把活干完
AI 代理循环把「提示加修补」变成一个自我纠错的闭环:代理先写计划,再动手实现,然后对照计划检查自己的成果,循环往复直到完成。看看这个循环在 Claude Code、Codex、Antigravity CLI、Cursor 和 Ralph loop 中是怎么运转的。
阅读全文七个 AI 代理替我们守夜:编程之外的定时代理,附完整提示词
一位用户问我们,除了写代码,还拿 AI 代理做什么。从 8 月 28 日起,七个定时代理每晚在一台 Mac mini 上启动:一个值班 CEO、一个 SEO 团队、一个产品经理、一个修 bug 的修复员、一个社媒团队、一个文档员,还有一个把 25 行摘要发成邮件的汇报员。33 个夜晚,31 封早间邮件,51 个附带提交链接的 bug 修复,7 篇 20 种语言的博客文章。每个代理做什么,它们如何不交谈就把工作交接下去,哪个模型干哪份活,它们的提示词不得不学会的四条规则,以及可以直接复制的提示词本身。
阅读全文