Claude Code Routines 实战:三种触发器跑通云端自动化编码

要让一个编码 AI 定时跑任务,传统做法是:自建 cron、保持机器常开、写胶水脚本把 CLI 串起来。这套东西的维护成本不低,机器一关任务就断。

Claude Code 的 Routines(2026-04-14 research preview)把这层基础设施搬到了云端。本文聚焦怎么配、有哪些坑,而不是泛泛介绍。

一、一个 routine 是什么

一个 routine = 一份保存好的 Claude Code 配置:prompt + 一个或多个仓库 + 一组连接器。打包一次,自动运行。

运行模型值得讲清楚,因为它决定了能力边界:
在这里插入图片描述

触发器触发
   │
   ▼
Anthropic 云拉起一个全新 Claude Code 容器
   │
   ├── clone 你配置的仓库(从默认分支,每次全新)
   ├── 加载连接器 / 提交进仓库的 skills
   ├── 跑会话前的 setup 脚本
   ├── 注入所选环境的环境变量
   │
   ▼
Claude 读 prompt → 看仓库 → 调连接器 → 跑命令
   │
   ▼
提交到 claude/ 前缀分支 / 开 PR / 发消息 / 调工具

两个关键约束:

  • 每次运行是全新会话,不复用上下文,不访问你的本地文件系统(只 clone 配置的仓库)。
  • 没有人在回路:没有权限审批,没有交互确认。所以分支安全护栏(见第三节)很重要。

二、三种触发器怎么配

触发类型 触发方式 限制
Scheduled 周期或未来时间点 比每小时更频繁的 cron 被拒绝
API HTTP POST 到专属端点 token 仅能触发该 routine
GitHub 仓库事件 需先装 GitHub App

2.1 定时

支持按小时、每天、工作日、每周。时间按本地时区输入并自动转换。比每小时更频繁的 cron 表达式会被拒绝——这是个容易踩的硬约束,别指望用 routine 做秒级轮询。

CLI 的 /schedule 现在就是创建 Scheduled Routine,旧任务自动迁移。

2.2 API 触发

向 routine 专属端点发 POST,带输入文本,返回会话 ID 和 URL:

curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABC.../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 告警 SEN-4521 在生产触发,堆栈见附件。"}'

token 语义要注意:每个 routine 一个独立 token,生成时只显示一次,无法找回。立刻存进密钥管理器,别指望事后能从控制台再看一遍。

2.3 GitHub webhook

支持事件:pull request、push、issue、check run、workflow run、discussion、release、merge queue。每个事件起独立会话。

威力在 PR 过滤器,可按这些维度精细筛选:

author        # 作者
title / body  # 标题 / 正文
base / head    # base 分支 / head 分支
labels        # 标签
draft         # 是否草稿
merged        # 是否已合并
from-fork     # 是否来自 fork

高频踩坑:webhook 要送达,Claude GitHub App 必须装在该仓库/web-setup 只给 clone 权限、不装 App。routine 配好却不触发,先查 App 是否安装。

三、安全边界与限额

分支安全护栏:默认 Claude 只能 push 到 claude/ 前缀分支,写得不好的 routine 碰不到 main。只在有完善下游审查时才关。

日运行上限(与交互式会话共享同一份用量额度):

计划 每日运行数
Pro 5
Max 15
Team / Enterprise 25

自动化会和你的交互用量抢配额,排期时算进去。

预览期不稳定性/fire 挂在 experimental-cc-routine-2026-04-01 beta header 下,请求/响应结构、限流、token 语义可能变。Anthropic 保留最近两个带日期 header 可用,给迁移窗口。

四、加一层模型分诊:高危告警才触发 routine

API 触发的本质是外部系统发 POST。但"任何告警都拉起一次云端会话"既费配额又吵。更实用的做法是先用一个便宜模型做分诊,只有高危才触发 routine:

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-...",
    base_url="https://gw.claudeapi.com",
)

def triage(alert_text: str) -> str:
    """告警分诊:返回 HIGH / LOW,决定是否触发自动修复 routine。"""
    resp = client.messages.create(
        model="claude-haiku-4-5-20251001",   # 分类任务用 Haiku,快且省
        max_tokens=10,
        system="你是告警分诊器。高危(影响生产、数据丢失)回 HIGH,否则回 LOW。只回一个词。",
        messages=[{"role": "user", "content": alert_text}],
    )
    return resp.content[0].text.strip().upper()


def on_alert(alert_text: str):
    if triage(alert_text) == "HIGH":
        fire_routine(alert_text)   # 你封装的 routine /fire 调用
    else:
        log_only(alert_text)

分诊用 Haiku(¥1/¥5 每 M),真正的修复交给 Routines 在云端跑。这样既省了 routine 的日配额,也避免低危噪音淹没自动化。

五、小结

  • Routines = 保存好的配置 + 三触发器(定时/API/GitHub)+ 云端全新会话执行。
  • 三个硬约束记牢:定时不能比每小时更频繁push 默认只到 claude/ 分支webhook 要先装 GitHub App
  • 日限额与交互用量共享;想省配额,在触发前加一层便宜模型做分诊。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐