Alex Hormozi 有句话被这个指南放在了最前面:"委托是用别人的低成本时间买回你最高价值的时间;自动化是用机器的低成本时间买回你最高价值的时间。" 这句话定义了Routines的存在理由。
什么是Claude Routines
简单说:写一个任务,交给Claude,它每天自动在你看不见的服务器上运行,不需要你的电脑开机,不需要付托管费,不需要你去检查。
Routines解决的是此前AI自动化的困境:
- 此前,要么自己搭服务器(技术门槛高),要么用workflow平台(不够灵活),要么买现成Bot(功能固定)
- Routines运行在Anthropic云端,包含在你的订阅里,带完整Claude推理能力
- 它不是执行脚本的机器人,是一个真正会思考的Agent
执行周期:每次都是干净的快照
这是理解Routines最重要的一点。每次运行都遵循这个循环:
触发器启动
↓
Anthropic启动一个全新云端容器
↓
Claude克隆你连接的GitHub仓库
↓
Claude读取CLAUDE.md和指定的Skill文件
↓
Claude执行任务(读API、处理数据、写文件、调用Connector)
↓
Claude把任何输出或变更提交回GitHub仓库
↓
容器销毁——什么都不保留
每次运行都是无状态的。容器从零开始,到零结束。唯一能存活的是Claude写回GitHub的内容,或通过Connector(如Slack、邮件)发出去的内容。
这意味着:两次运行之间的"记忆"必须存在GitHub仓库里。 本地文件对容器来说不存在。
三种触发方式
定时触发(Schedule)
用自然语言或cron语法设置固定间隔。最低间隔是一小时,不能更频繁。
示例:每天早上7点、每周一9点、每个工作日午夜。Anthropic基础设施默认用UTC时区,如果想要伦敦时间早上7点的报告,需要换算。
适合:每日摘要、周报、晨间简报、定期数据拉取、定时内容生成。
API触发
每个Routine自动生成一个专用HTTP端点和Bearer Token。任何外部系统通过POST请求就可以触发它,可以携带动态上下文(如客户名、订单详情、一个问题)。
适合:CRM新订单触发欢迎邮件自动化、部署完成触发Release Note生成、表单提交触发研究和起草回复、Webhook驱动的事件流。
GitHub事件触发
需要先安装Claude GitHub App。支持的事件:新的PR打开、代码推送到分支、新Issue创建、PRreview请求、Issue评论。
适合:每个PR自动获得Claude代码Review、每个新Issue自动收到相关文档或解决方案建议、推送触发更新Changelog或检查Breaking Changes。
准备工作:连接GitHub仓库
这是Routines的核心依赖——Claude需要从GitHub仓库读取Skill文件、写入输出、存储记忆文件。
推荐用一个专用、干净的仓库,不要用巨型monorepo(Claude每次运行会读取整个仓库结构,太大浪费上下文窗口)。推荐目录结构:
/
├── CLAUDE.md ← 全局指令(语气、规则、上下文)
├── skills/
│ ├── daily-briefing.md
│ ├── weekly-report.md
│ └── content-draft.md
├── outputs/
│ ├── reports/
│ └── drafts/
└── memory/
└── last-run-data.json
关键:任何Claude需要的文件必须提交到仓库。 只存在本地机器上的文件对云端容器来说不存在。
环境变量:API密钥的正确传递方式
.env文件是被Git忽略的,Claude在云端永远读不到。正确的做法是在Routines UI的Cloud Environment部分配置,每个Key-Value对会在运行时注入为环境变量。
同时需要在Prompt或Skill文件里明确写:"从环境变量读取所有API密钥,不要从任何.env文件读取。" 因为Claude默认行为是先找.env文件,没有就会静默失败。
Connector:不要连接不需要的服务
创建Routine时,所有已连接的MCP Connector默认都会附加上去。需要手动移除不需要的。
原则:一个写日报的Routine没有理由碰你的Gmail或Linear Connector。 每多一个Connector,就多一层误操作风险。
连接什么之前先测试权限:用"Run Now"手动触发一次,观察认证错误。UI里显示已连接的Connector,OAuth Token可能已过期。
Prompt写作:这是最关键的技能
Routines的自主运行意味着它无法中途停下来问你问题。模糊的指令得到模糊的结果。
好的Routine Prompt有六个组成部分:
- 角色和上下文:告诉Claude它是谁,在什么环境里工作
- 具体任务:一个清晰、无歧义的目标
- 数据来源:明确说明信息从哪来,用什么变量名
- 步骤流程:多步骤任务要按顺序列出
- 输出格式:明确定义输出长什么样
- 失败处理:告诉Claude出错时怎么办
Skills架构:复杂任务的最佳实践
对于任何复杂任务,推荐用"短Launcher Prompt + 独立Skill文件"的模式:
"运行位于
/skills/daily-market-briefing.md的Skill。上下文:从环境变量读取所有API密钥;今天日期通过系统时钟获取;所有输出写到/outputs/reports/;任何步骤失败时发Slack告警到#claude-alerts。"
所有细节住在版本化的Skill文件里,UI Prompt保持简洁干净。Skill文件放在GitHub仓库,可以维护、改进和复用。
三种记忆模式让快照变成智能系统
因为GitHub仓库在运行之间持久化,Claude写入的任何东西都可以被下一次运行读取。这把一系列孤立的快照变成了活的学习系统。
模式1:增量追踪(昨天vs今天)
每次运行结束时把当前状态写入记忆文件,下次运行先读这个文件算出差异,只报告变化的部分。适合:投资组合追踪、参与度指标。
模式2:累积日志
每次运行往日志文件追加一条新记录,而不是覆盖。适合:趋势分析、历史模式识别。
模式3:滚动上下文窗口(最近N次运行)
只保留最近N条记录,每次运行读完最近历史、当作上下文、加一条今天的新记录、丢弃最老的一条。适合:内容简报(避免重复选题)、情绪分析、连续追踪。
故障调试树
运行失败或输出错误
↓
Claude完成了所有步骤吗?
否 → 查看最后一步的日志
是 → 输出错误;检查Prompt的明确性
↓
是权限/凭证问题吗?
特征:"file not found"、"403 forbidden"、"credentials not found"
修复:检查环境变量是否设置;检查网络设置;检查Connector认证
↓
是网络问题吗?
特征:"domain blocked"、"connection refused"、超时
修复:从trusted切换到full网络或添加到自定义白名单
↓
是Prompt或上下文问题吗?
特征:输出不完整、Claude猜错了、用错了文件
修复:让Prompt更明确;检查CLAUDE.md是否存在;检查Skill文件路径
三个最重要的事
Prompt就是一切。 模糊的Brief得到模糊的结果。要把每个Launcher Prompt当作给一个聪明但完全不了解你背景的新同事的Brief。
Skills架构决定规模。 不要把复杂指令放在UI里,放在GitHub仓库的版本化Markdown文件里,可以永久维护和改进。
记忆把快照变成智能。 从第一天就建立增量追踪、累积日志或滚动上下文,你的Routines会随着时间复利增值。
Routines的精髓是"无情的明确性"——模糊的指令只会被模糊执行,这是它与传统workflow引擎的本质区别。