)
1. 为什么你的 Claude Code 定时任务总是跑不起来很多人第一次接触 Claude Code 的定时任务都是被/loop和/schedule这两个命令吸引进来的。前者能在你写代码的时候帮你盯着部署状态、CI 结果、日志输出后者能把任务丢到云端你关掉电脑它照样按点执行。听起来很美好但真正动手时问题往往出在最前面一步请求通道没配好命令敲下去要么报错要么一直转圈。我自己在项目里用 Claude Code 做周期性代码检查、构建监控和提醒踩过的坑基本集中在三块一是settings.json里的 API 通道没写对导致/loop触发时请求直接失败二是环境变量和配置文件冲突明明配了却读不到三是/schedule依赖的云端执行环境拿不到统一的 Key任务创建成功但每次运行都空转。这篇内容面向需要周期性执行代码检查、构建或提醒的开发者把/loop和/schedule两类定时任务机制拆开讲清楚重点给出settings.json中接入 TaoToken 统一 Key/API 通道的可复制配置骨架并演示创建、触发、查看日志的完整验证动作。你跟着做能快速跑通定时任务链路而不是卡在“命令认识我、我不认识它”的阶段。先说清楚这两个命令的分工后面配置才不会乱维度/loop/schedule一句话定义会话级轮询器云端定时任务运行位置你的本地终端云端执行环境关闭终端后停止继续运行最长持续约 3 天自动过期直到手动关闭访问本地文件可以不可以每次从仓库拉取适合场景开发中临时盯任务每天/每周重复的运维任务创建方式终端输入/loopWeb / Desktop / 终端/schedule简单记/loop是开发时的临时闹钟关窗口就没了/schedule是云端永动机关电脑也照跑。两者都依赖同一个底层请求通道所以配置一次两边都能用。2. TaoToken 前置统一 Key 与 API 通道准备在写settings.json之前先把请求通道这件事理清楚。Claude Code 的定时任务在触发时本质上是按你配置的模型通道发请求。如果通道指向不明确/loop会在后台静默失败/schedule则会在云端执行记录里留下一堆看不懂的错误。TaoToken 在这里的作用是提供一个统一的 Key 和 API 入口让本地终端和云端任务走同一套配置。你需要先拿到两样东西一个可用的 API Key以及对应的 API 地址。获取 Key 的入口在控制台的 API Keys 页面地址是https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite创建 Key 的时候注意两点一是给它起一个能认出来的名字比如claude-code-loop方便后面排查是哪个任务在用二是创建后立刻复制页面刷新后就看不到完整 Key 了。API 通道的基础地址是https://taotoken.net/api这个地址不加任何查询参数直接作为base_url使用。如果你后面要接 Claude Code 的 Anthropic 兼容通道文档里有对应的路径说明接入文档入口在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意Key 只存在本地配置文件或环境变量里不要写进会提交到仓库的代码。/schedule的云端任务如果需要 Key通过环境变量或连接器传递不要硬编码在 prompt 里。拿到 Key 和地址后先别急着配定时任务。建议先用模型对话页面验证一下 Key 是否可用确认通道通了再往下走能省掉后面一半的排障时间https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite3. 可复制配置settings.json 接入骨架Claude Code 的配置分两层一层是全局的settings.json一层是项目级的.claude/settings.json。定时任务相关的通道配置建议放在全局这样/loop和/schedule都能读到。先找到配置文件位置。macOS 和 Linux 一般在~/.claude/settings.jsonWindows 一般在C:\Users\你的用户名\.claude\settings.json如果文件不存在直接新建。下面是一个可复制的配置骨架把YOUR_API_KEY换成你刚才创建的 Key{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, permissions: { allow: [ Bash(git status), Bash(git diff:*), Read ] } }这里有几个关键点要说明。ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址注意结尾不要多加斜杠否则部分版本会拼出双斜杠导致 404。ANTHROPIC_API_KEY填你创建的 Key。ANTHROPIC_MODEL按你实际可用的模型名填不确定就先留空让 Claude Code 用默认值。如果你不想把 Key 写进文件可以用环境变量覆盖。在~/.zshrc或~/.bashrc里加export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYYOUR_API_KEY然后执行source ~/.zshrc让它生效。环境变量的优先级高于settings.json排查冲突时先看这里。配置写完后用一条命令验证 Claude Code 能不能读到claude --version能正常输出版本号说明 CLI 本身没问题。接着在项目目录里启动一次交互随便问一句确认请求能通。这一步过了再进定时任务。对于需要长期跑编码任务和 Agent 的场景比如你打算让/schedule每天自动做代码审查、修 CI建议单独配一个 Coding Plan把额度和通道分开管理避免和日常对话抢资源https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite4. /loop 实战创建、触发、查看日志/loop的语法很直接/loop 时间间隔 你要 Claude 做什么时间单位支持s、m、h、d。秒级会被向上取整到分钟实际用起来 5 分钟起步比较合理。先跑一个最简单的部署监控例子。假设你刚触发了一次构建想每 3 分钟看一次状态/loop 3m check the build status and tell me if anything failed回车后Claude 会解析间隔、注册一个后台任务、生成一个 Job ID然后按点触发。你继续写代码有异常它会打断你。再试一个 CI 巡检的例子这个在多人协作的项目里特别实用/loop 10m check the CI status of all open PRs. If any failed, summarize the error触发之后怎么确认任务真的在跑有两个办法。一是直接在对话里问list all loopsClaude 会列出当前所有活跃的 loop包括 Job ID、间隔和下次执行时间。二是看执行日志。/loop的日志跟着会话走每次触发都会在对话里留下一条记录你能看到它实际执行了什么、返回了什么。取消任务也用自然语言cancel loop job ID想一次性全清掉直接关会话或者cancel all loops如果你在调试阶段不想让它一直触发可以用环境变量彻底禁用export CLAUDE_CODE_DISABLE_CRONtrue这个变量对/loop生效设了之后新任务不会注册。排查完记得取消不然你会以为命令坏了。关于/loop的限制有几个必须知道。它是会话绑定的关终端、断连、重启 Claude Code所有任务都会消失没有持久化。每个任务最多跑 3 天到期执行最后一次后自动删除。单会话最多 50 个任务。每次执行都消耗 token5 分钟间隔的任务一天跑 288 次开多了账单会很难看。所以间隔别太短prompt 要写明确。不要写“检查一下状态”要写“检查 staging 环境的 /health 接口如果返回非 200 或响应时间超过 2 秒就立即告诉我”。这样触发时才有明确的判断标准不会每次都返回一堆模棱两可的话。5. /schedule 实战云端任务与日志验证/schedule解决的是/loop最大的短板会话绑定。你不可能为了每天早上 9 点审查 PR 而一直开着终端所以任务要放到云端执行。创建方式有三种。Web 界面最直观Desktop App 适合本地任务CLI 适合脚本化。这里重点讲 CLI因为它和前面的配置链路衔接最紧。在 Claude Code 终端里输入/scheduleClaude 会用对话引导你完成设置。你也可以直接写完整描述/schedule daily PR review at 9am创建时最关键的配置是 prompt。因为云端任务完全自主运行你不在场不能补充说明所以 prompt 必须自包含、有明确成功标准、指定输出格式。对比一下好的 prompt审查过去 24 小时内所有提交到 main 的 commit。 检查bug、安全问题、错误处理遗漏、需要注释的复杂代码。 用 file:line 格式列出问题按严重程度排序。 如果发现严重问题创建一个 Issue。差的 prompt看看代码有什么问题后者在云端跑起来返回的东西你根本没法用。创建完成后验证任务是否真的在跑要看执行记录。Web 端在 scheduled 页面能看到每次运行的状态、耗时和输出。CLI 里可以用/schedule list列出所有定时任务。想改配置用/schedule update/schedule有几个和/loop完全不同的特性。它每次运行都从仓库全新克隆没有“上次跑到哪了”的概念所以 prompt 里不要依赖历史状态。执行时间可能有几分钟偏移但每个任务的偏移是固定的。默认只能推送到claude/前缀的分支这是保护机制别随便关。如果任务需要 API key 或数据库密码通过连接器传递不要硬编码在 prompt 里。还有一个容易忽略的点云端任务拿不到你本地的settings.json。所以如果你在本地配了 TaoToken 的通道云端任务需要单独配置环境变量或连接器否则它会走默认通道可能出现 Key 无效或额度不足的情况。这也是为什么前面建议把通道配置和任务配置分开管理。6. 本篇常见错排查配置和任务都跑起来之后剩下的时间基本花在排障上。下面这几个是我遇到频率最高的。报错一/loop注册成功但从不触发。先检查CLAUDE_CODE_DISABLE_CRON是不是被设成了true。这个变量一旦存在新任务不会注册但命令不会报错很容易误判。用echo $CLAUDE_CODE_DISABLE_CRON确认一下。报错二请求返回 401 或 403。大概率是 Key 没读到。检查顺序是环境变量 项目级settings.json 全局settings.json。如果环境变量里有一个旧的 Key它会覆盖你刚写的配置。用env | grep ANTHROPIC看一眼当前生效的值。报错三ANTHROPIC_BASE_URL拼出双斜杠。地址结尾多写了/请求会变成https://taotoken.net/api//v1/...部分接口直接 404。配置里保持https://taotoken.net/api结尾不加斜杠。报错四/schedule任务创建成功但每次运行都空转。云端任务读不到本地配置需要单独设置环境变量或连接器。检查任务的环境配置里有没有把 Key 和 base_url 传进去。报错五/loop任务跑着跑着消失了。两种可能一是会话断了/loop不持久化二是到了 3 天自动过期。需要长期跑的任务迁移到/schedule。报错六token 消耗异常快。检查是不是开了太多短间隔任务。10 个 5 分钟间隔的任务一小时就是 120 次执行。建议按优先级开部署监控和 PR 巡检必开安全扫描和代码质量检查按需开。排障时如果拿不准是通道问题还是任务配置问题先用模型对话页面单独发一条请求确认通道本身是通的再回头查任务配置。这样能把问题范围缩小一半https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite如果确认是接入层的问题比如 base_url 路径、模型名、兼容格式对不上直接翻接入文档比猜快得多https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite7. 组合工作流与长期编码场景/loop和/schedule不是互斥的组合起来才覆盖从“这几分钟”到“每天每周”的全部自动化需求。白天开发时用/loop盯当前任务/loop 5m check the CI status of the current PR /loop 10m check if the staging environment is healthy /loop 15m run the test suite and report new failures24/7 长期运行的任务交给/schedule/schedule daily PR review at 9am /schedule fix CI failures at 2am /schedule generate CHANGELOG every Friday at 5pm部署流水线可以这样串终端里触发部署/loop 3m盯状态部署完成后切到/loop 10m跑 smoke test确认没问题取消 loop最后用/schedule设一个每 6 小时的健康检查长期跑。如果你长期用 Claude Code 做编码和 Agent 任务比如让/schedule每天自动审查代码、修 CI、生成文档建议把这类任务单独走 Coding Plan和日常对话的额度分开避免定时任务把对话额度吃光https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite最后给一个判断路径帮你决定用哪个任务需要定期重复吗不需要就直接在对话里说。需要但只是这几个小时用/loop。需要而且是长期的用/schedule。需要本地文件但电脑常开用 Desktop 定时任务。需要本地文件但电脑不常开用系统 cron 配合 headless 模式。配置这件事一次写对后面所有定时任务都省心。先把settings.json的通道骨架搭好用一条简单请求验证通再往上叠/loop和/schedule链路就稳了。