核心框架:WAT
Nate Herk 提出 WAT 框架来思考部署内容:
- W = Workflow(工作流)
- A = Agent(智能体)
- T = Tools(工具)
Skills 通常位于 W 和 T 层。有时 skill 纯粹是工作流(" here's how to write a LinkedIn post"),有时 skill 将工作流与工具链结合("write a LinkedIn post and generate the infographic with this image API")。Agent 是决定下一步做什么的自主推理层。
每个部署方法提供 WAT 的不同部分。有些提供全部三个,有些只提供 W 和 T。
两个决策轴
每个部署方法在两个轴上定位:
- 运行位置:你的机器 vs 别人的云端(Anthropic 云、Modal、Trigger.dev、VPS 等)——你的笔记本是否需要保持开机
- 自主程度:完整的自主 loop(含 skills 和 tools)vs 每次运行方式相同的确定性脚本
没有单一最佳方法。匹配方法与工作。
方案一:Loop(本地循环)
最简单。零设置。
打开 Claude Code 说:"set up a loop every 10 minutes to read the new comments on my latest YouTube upload and reply using the transcript." 完成。
底层机制:使用三个工具——cron create、cron list、cron delete。调度器内置于 Claude Code 进程,loop 是 session-scoped 的。五个不同终端可运行五个不同 loop,除非它们都写入同一文件。
桌面 app vs 终端:
- 桌面 app 运行 loop 后 /clear chat → cron 死亡
- 终端中 /clear 不会杀死 cron——可以 clear 上下文,问 "do you have any crons in this session",Claude Code 用 cron list 显示活跃的 cron
关键技巧:双 Loop 保持上下文健康
设置两个 loop:
- 每 10 分钟运行实际 skill
- 每 5 分钟运行 /clear 保持上下文窗口健康
Claude Code 认为注入 /clear 不会工作,但实际可以。cron 触发 slash command,session clear,下一轮 fresh start。
限制:
- 机器必须保持开机
- Session 必须保持打开
- 终端 loop 7 天后过期,桌面 app 3 天后上限(这是默认使用终端的原因之一)
- 循环任务触发有最多 30 分钟 jitter——"每 10 分钟"不会精确在 10:10、10:20、10:30 触发(防止全球所有 Claude Code session 同时 hammer API)
获得:完整 WAT(Workflow + Agent + Tools)
方案二:Scheduled Tasks & Claude Routines(定时任务)
直接内置于 Claude Code。
打开桌面 app → Routines → 创建本地 Scheduled Task 或远程 Claude Routine。设置看起来几乎相同:写 prompt,Claude 在 schedule 上将其注入 fresh Claude Code session,session 执行工作。
唯一区别:运行位置
| 类型 | 运行位置 | 计算机关闭时 |
|---|---|---|
| Local Scheduled Task | 你的机器 | 不触发 |
| Claude Routine | Anthropic 基础设施 | 仍然运行 |
Claude Routine 配额(按 plan):
- Pro:每天 5 个
- Max:每天 15 个
- Team/Enterprise:每天 25 个
- 超出后从 extra usage 扣除
关键行为差异:
Local Scheduled Task 的 catch-up:计算机关闭 5 天,回来后打开桌面 app,Claude Code 会运行所有错过的触发(除非暂停了任务)。某些情况下有用,其他情况下危险。暂停任何不想补跑的任务。
Claude Routine 的 webhook 触发:不仅基于时间,还可由 API endpoint 或 GitHub event 触发。其他自动化可以按需调用你的 routine。
环境变量:因为 routine 在 Anthropic 云端的 repo clone 上运行,环境变量需要与本地设置不同的连接方式。
限制:最小间隔 1 小时。无法设置每 20 分钟运行。需要更短周期时回退到 /loop。
获得:完整 WAT(Agent 活跃、skills 加载、MCPs 工作、subagents 工作、slash commands 工作)
方案三:Modal 或 Trigger.dev(外部部署)
将自动化完全推出 Claude Code。
- 为 Modal 写 Python 脚本
- 为 Trigger.dev 写 TypeScript 脚本
- 部署、设置 cron 或连接 webhook
- 脚本在它们的云端运行,带 dashboard 查看运行历史、错误和持续时间
Claude Code 可以帮你完成:推送脚本到 dev、移到 prod、在 Modal 或 Trigger.dev 上设置环境变量以便部署代码认证外部服务。
Modal vs Trigger.dev:
| 特性 | Modal | Trigger.dev |
|---|---|---|
| 语言 | Python | TypeScript |
| 感觉 | 云端 cron job | 持久工作流引擎 |
| 选择建议 | 更熟悉 Python | 想要更 agentic 的编排 |
| 触发方式 | cron 或 webhook | cron 或 webhook |
关键变化:失去 Agent
此方案中,你部署的是 Workflow 和 Tools,不是自主 loop。也失去了 Claude Code subscription——部署脚本内的任何 AI 处理变成 API 调用(Claude API、OpenAI、OpenRouter 等),按 token 付费,不小心会很贵。
但:很多部署根本不需要 AI。如果脚本是确定性的("fetch this data, transform it, write it to a sheet"),就不需要模型。这是 Modal 或 Trigger.dev 闪耀的地方——获得所有部署优势,没有 per-token 成本。
获得:
- 无需保持任何东西运行
- 机器可关闭、session 可关闭
- 真实 dashboard、错误跟踪、运行历史
- Webhook 触发,不仅 cron
失去:
- 除非引入 Claude Agent SDK,否则没有自主 agent
- 没有 Claude Code subscription,AI 调用额外收费
- 比前两种方案更多设置
方案四:Claude Agent SDK(进阶)
如果需要在方案三中加入 agent,使用 Claude Agent SDK。
Claude Agent SDK 是 Claude Code 的底层构建基础。相同的 harness、tools、skills、MCPs、hooks、compaction。区别是它是从自己的代码调用的 SDK,而不是在终端中交谈的 CLI。
工作流程:发送 query → SDK 读取 → 决定使用哪些工具 → 运行 → 获得结果 → 迭代 → 输出。这就是 Claude Code,只是包装成可部署形式。
关键陷阱:默认 stateless
默认情况下,每次调用 Agent SDK 都是无状态的——醒来时没有记忆。
修复:每次请求传递 session ID,SDK 将它们视为一个持续对话。需要时自动 compact。没有 /clear 等价物;想要 clean slate 时开始新 session。
官方 Anthropic SDK,获得所有功能:subagents、MCPs、hooks、skills、slash commands、claude.md、memory、compaction。
成本:Agent SDK 不使用 Claude Code subscription。需要 Claude API key,按 token 付费。比直接在终端或 VS Code 中使用 Claude Code 更贵。
好消息:Anthropic 5 月 13 日宣布月度订阅积分现在可用于 Agent SDK。不是 Claude Code 内的每周使用量,是独立的 dedicated budget。
Managed Agents & Hooks
Managed Agents:较新的 Anthropic 服务,在 Anthropic 云端完整运行 agent,包装精美。Nate 试用后认为对已有 Claude Code 经验的用户价值有限,更适合从未使用过的新手。
Hooks:事件驱动的 mini 自动化,在特定 Claude Code 事件上触发:
- pre-tool-use
- post-tool-use
- session start
- session end
- 每条消息
示例:
- 每次 Claude Code 完成响应 → 播放通知声音
- 每次 session 结束 → 运行清理脚本
- 每次使用特定工具 → 记录到某处
堆叠足够多 → 在 agentic flow 上叠加确定性 glue。
选型速查
| 场景 | 推荐方案 |
|---|---|
| 实时工作,需要完整 agent loop | /loop |
| 希望 Claude Code 按 schedule 工作,无需保持机器开机 | Claude Routine |
| 确定性脚本,无需 AI 推理 | Modal / Trigger.dev |
| 需要 agent 推理,但在自己的基础设施中 | Agent SDK + Modal/Trigger.dev |
最常见错误:默认选择最 agentic 的方法。确定性工作不需要 agent,agentic 工作不能被压扁成脚本。
资源
- 作者:Nate Herk
- 原文:https://x.com/nateherk/status/2055313067144065352
- Claude Agent SDK:https://x.com/ClaudeDevs/status/2054610152817619388
- Modal:https://modal.com
- Trigger.dev:https://trigger.dev