4月14日,Anthropic在Claude Code里上线了一个叫Routines的新功能,一句话概括:你可以把提示词、代码仓库和连接器打包成一个“自动化脚本”,让Claude按时间表、API调用或GitHub事件自己跑起来,全程在Anthropic自家的云端执行,本地电脑可以直接关机。这意味着什么?你晚上睡觉的时候,Claude可以帮你修bug、审查PR、清理开发队列,第二天早上起来直接验收成果就行。今天我就把 Routines 的核心能力、完整配置方法和实战代码全部梳理出来,手把手带大家上手。
01. Routines 是什么?
1.1 从单点对话到自动化工作流
传统AI编程工具的核心范式是“问答式”交互:开发者提出问题,AI给出回答。虽然能解决代码生成的问题,但每个环节仍然需要人工介入。Routines的出现改变了这一局面。 它允许开发者将复杂的多步骤任务流程定义为可复用的自动化脚本,在Anthropic托管的云端基础设施上执行。一旦配置完成,Claude就能自主完成整个工作流程,不需要你的电脑保持开机状态。
1.2 核心能力矩阵
Routines提供了三种触发方式:
| 触发类型 | 说明 | 适用场景 |
|---|---|---|
| 定时触发 | 按小时/天/周自动执行,CLI中可写自定义cron,最小间隔1小时 | 夜间代码审查、每日构建检查 |
| API触发 | 接收HTTP POST请求启动,每个Routine有独立端点和鉴权token | 外部系统集成、告警联动、CI/CD流水线 |
| GitHub触发 | PR、push、issue等事件自动触发,可按作者、标签、分支过滤 | 代码审查自动化、测试验证 |
需要说明的是,Routines目前提供的是三种触发方式(定时、API、GitHub),而非四种。
1.3 可用范围与每日限额
Routines功能目前以研究预览版形式发布,向Pro、Max、Team、Enterprise订阅用户开放。每日运行次数限制如下:
| 订阅方案 | 每日可运行次数 |
|---|---|
| Pro用户 | 5次 |
| Max用户 | 15次 |
| Team/Enterprise用户 | 25次 |
超出部分可走超额计费。所有Routine运行与普通交互会话共用订阅配额。
1.4 触发次数上限与优化策略
对于Pro用户来说,每天5次触发的限制意味着需要合理规划使用场景:
- 合并多个小Routine为一个大Routine:例如,将代码审查、依赖检查和测试运行整合到一个Routine中,一次触发完成多个任务。
- 使用条件判断:在GitHub触发中设置精细的过滤器(按作者、标签、分支等),只在真正需要时才触发,避免次数被无关事件消耗。
- 升级订阅方案:如果自动化需求较大,可考虑升级到Max方案(每日15次)或Team方案(每日25次)。
02. 快速上手:创建你的第一个 Routines
2.1 代码审查Routine配置
以下是一个完整的代码审查自动化Routine配置示例:
{
"routine_name": "自动化代码审查",
"trigger": {
"type": "github",
"events": ["pull_request", "push"],
"repo_filter": ["org/repo-name"], "branch_filter": ["main", "develop"]
},
"steps": [
{
"action": "fetch_code",
"target": "changes",
"options": {
"include_new": true,
"include_modified": true,
"exclude_patterns": ["*.lock", "node_modules/**", "dist/**"] }
},
{
"action": "analyze", "focus": ["security", "performance", "best_practices"], "output_format": "structured_report"
},
{
"action": "comment",
"target": "github_pr",
"format": "markdown",
"severity_threshold": "medium"
}
],
"notifications": {
"on_complete": "slack",
"on_issue_found": "email"
}
}
2.2 部署验证 Routine
另一个实用场景是自动化部署验证:
# deploy_verification.sh - 部署验证脚本示例
echo "🚀 开始部署验证流程..."
# 步骤1:环境检查
echo "📋 检查部署环境..."
./scripts/check_env.sh || exit 1
# 步骤2:运行单元测试
echo "🧪 执行单元测试..."
npm run test:unit || { echo "❌ 单元测试失败"; exit 1; }
# 步骤3:执行集成测试
echo "🔗 执行集成测试..."
npm run test:integration || { echo "❌ 集成测试失败"; exit 1; }
# 步骤4:安全扫描
echo "🔒 执行安全扫描..."
./scripts/security_scan.sh || { echo "⚠️ 安全扫描发现警告"; }
# 步骤5:生成部署报告
echo "📊 生成部署报告..."
./scripts/generate_report.sh
echo "✅ 部署验证完成"
2.3 如何创建Routine
在Claude Code中创建Routine,可以通过网页端入口(claude.ai/code/routin…)或在CLI中输入 /schedule 命令进行操作。创建时需要配置三个核心要素:提示词(prompt)、代码仓库和连接器(connectors
三、进阶用法:定时任务与API触发
3.1 配置定时触发
官方给出的一个典型例子是:每晚凌晨2点从Linear拉取优先级最高的bug,尝试修复,然后开一个draft PR,你第二天上班直接review就行。
定时任务的cron最小间隔为1小时,支持按小时、每晚、每周等节奏执行。
3.2 API触发实现
每个Routine都有自己独立的API端点和鉴权token,任何能发HTTP请求的地方——Datadog告警、CI/CD hook、内部面板——都可以直接调用Claude Code。
以下是一个API触发服务的示例:
import anthropic
import os
app = Flask(__name__)
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
@app.route('/trigger-routine', methods=['POST'])
def trigger_routine():
data = request.json
routine_name = data.get('routine_name')
params = data.get('params', {})
message = f"请执行{routine_name},参数:{params}"
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
messages=[{"role": "user", "content": message}],
system="你是一个自动化工作流执行器,负责执行预定义的Routine任务。"
)
return jsonify({
"status": "triggered",
"response_id": response.id
})
@app.route('/webhook/github', methods=['POST'])
def github_webhook():
event = request.headers.get('X-GitHub-Event')
if event == 'pull_request':
routine = 'code_review'
elif event == 'push':
routine = 'build_verify'
else:
return jsonify({"status": "ignored"})
trigger_routine(routine_name=routine)
return jsonify({"status": "ok"})
if __name__ == '__main__':
app.run(port=5000)
3.3 GitHub触发细节
装上Claude GitHub App之后,pull_request、push、issue、check_run这些事件都可以当触发器。
一个比较实用的玩法是:让它盯着某个敏感目录(比如 /auth-provider 模块),该模块的任何改动都自动总结并发布到指定频道。每个匹配的PR会拿到独立session,后续的评论和CI失败它也会继续跟进。
⚠️ 安全提醒:Claude默认只能推到 claude/ 前缀的分支,不会直接动main分支,这是一个很实用的安全护栏。
四、实战案例:代码审查自动化工作流
4.1 场景描述
假设你维护一个开源项目,每天会收到多个PR。传统做法需要手动逐一审查,耗时且容易遗漏。
使用Routines,你可以构建一个自动化工作流:收到PR时自动获取代码变更、分析潜在问题、生成审查意见、自动在PR下评论。整个过程无需人工介入。
4.2 完整实现
"""
Claude Code Routine - 自动化代码审查完整示例
功能:GitHub PR自动审查、问题分析、评论生成
"""
import anthropic
import requests
import os
from typing import Dict, List
class CodeReviewRoutine:
def __init__(self, github_token: str):
self.github_token = github_token
self.client = anthropic.Anthropic()
self.headers = {
"Authorization": f"token {github_token}",
"Accept": "application/vnd.github.v3+json"
}
def fetch_pr_files(self, owner: str, repo: str, pr_number: int) -> List[Dict]:
"""获取PR修改的文件列表"""
url = f"https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/files"
response = requests.get(url, headers=self.headers)
return response.json()
def analyze_code(self, file_changes: List[Dict]) -> str:
"""使用Claude分析代码变更"""
analysis_prompt = """你是一个专业的代码审查助手。请分析以下代码变更,关注以下方面:
1. **安全性**:是否有SQL注入、XSS、敏感信息泄露等安全风险
2. **性能**:是否有不必要的循环等性能问题
3. **代码质量**:是否符合最佳实践,命名是否清晰
4. **测试覆盖**:是否提供了必要的测试用例
以下是代码变更:
"""
for file in file_changes:
analysis_prompt += f"\n\n文件: {file['filename']}\n"
analysis_prompt += f"变更类型: {file['status']}\n"
analysis_prompt += f"补丁:\n{file.get('patch', '无内容')[:2000]}"
response = self.client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=2048,
messages=[{"role": "user", "content": analysis_prompt}]
)
return response.content[0].text
def post_review_comment(self, owner: str, repo: str, pr_number: int,
comment: str, event: str = "COMMENT"):
"""在PR上发表评论"""
url = f"https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/reviews"
data = {
"body": f"## 🤖 Claude Code 自动审查报告\n\n{comment}\n\n---\n*此评论由Claude Code Routine自动生成*",
"event": event
}
response = requests.post(url, headers=self.headers, json=data)
return response.status_code == 200
def execute(self, owner: str, repo: str, pr_number: int):
"""执行完整的代码审查流程"""
print(f"🔍 开始审查 {owner}/{repo}#{pr_number}")
# 1. 获取变更文件
files = self.fetch_pr_files(owner, repo, pr_number)
print(f"📝 修改文件数: {len(files)}")
# 2. AI分析
print("🧠 正在进行代码分析...")
analysis = self.analyze_code(files)
# 3. 发布评论
print("📤 发布审查评论...")
success = self.post_review_comment(owner, repo, pr_number, analysis)
if success:
print("✅ 审查完成!")
else:
print("❌ 评论发布失败")
return analysis
# 使用示例
if __name__ == "__main__":
routine = CodeReviewRoutine(github_token=os.environ["GITHUB_TOKEN"])
review_result = routine.execute(
owner="your-org",
repo="your-repo",
pr_number=123
)
print("\n审查摘要:")
print(review_result)
4.3 运行逻辑说明
- 触发:当GitHub仓库收到新的PR时,Routine自动启动
- 获取:通过GitHub API获取PR中修改的文件列表和代码差异
- 分析:将代码变更发送给Claude模型,进行安全、性能、代码质量等多维度分析
- 反馈:将分析结果以评论形式自动发布到PR页面,开发者可直接查看并处理
五、常见问题与避坑指南
5.1 执行频率限制
各订阅方案的每日运行次数上限如上所述:Pro 5次、Max 15次、Team/Enterprise 25次。此外,GitHub触发还有小时级的频控,超出窗口的事件会被直接丢弃,因此如果仓库特别活跃,建议提前把过滤器设置好。
5.2 网络与权限问题
Routine执行时提示权限不足,可检查以下两点:
5.3 复杂任务处理
对于复杂任务执行时间过长或中途失败的情况:
- 为每个步骤设置合理的timeout
- 使用条件判断让Routine在单个步骤失败时继续执行
- 拆分过长的Routine为多个子Routine
5.4 安全护栏
Claude默认只能推到 claude/ 前缀的分支,不会直接操作main分支。除非下游review流程非常完善,否则建议保留这个设置。
六、总结
本文核心要点:Claude Code Routines是一项云端自动化服务,支持定时、API、GitHub三种触发方式。Pro用户每天5次、Max 15次、Team/Enterprise 25次。配置一次即可在云端自动执行,Mac离线也能跑。关键是合理规划触发策略、用好安全护栏、关注每日限额。
Routines功能代表了AI辅助编程工具发展的重要方向:从被动响应转向主动执行,从单点工具转向工作流平台。对于开发者而言,这意味着可以将更多精力投入到创造性工作中,而将重复性任务交给AI自动化处理。
目前Routines还处于研究预览阶段,功能和使用限制都在快速迭代中。建议开发者持续关注Anthropic官方更新,及时了解新特性和使用限制的变化。
你在日常开发中最想用Routines自动化哪些任务?评论区说说你的想法,我会逐一回复~
关注微信公众号【应用研究社】后续将持续更新AI前沿资讯和实操教程,记得星标不迷路!