Claude Code 的 /loop 一到点就丢任务?TaoToken 这样配 settings.json 稳跑
2026/9/18 18:20:31 网站建设 项目流程

你在 Claude Code 里敲下/loop 30m,关掉终端再回来,任务列表空了;更烦的是同一个/loop有时 27 分钟触发,有时拖到 33 分钟才动,跑满三天还会直接断。要排掉这些坑,先把请求通道换成 TaoToken:打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 注册并创建YOUR_API_KEY,再让 Claude Code 通过https://taotoken.net/api发请求。TaoToken 只负责给 Claude Code 供 Key 与兼容通道,让每次定时触发都能稳定发出模型请求,它不替/loop做定时,也不会替你保住终端会话。

1. /loop 一到点就丢任务:先分清是会话断了还是请求没发出去

1.1 关终端就丢:/loop 跑在当前 Claude Code 会话里

很多人第一次用/loop会把它当成系统 cron:设一个 30 分钟周期,关掉笔记本盖子,第二天回来收结果。实际不是。/loop的执行上下文在当前 Claude Code 会话里,终端一关、SSH 一断、tmux 会话被 kill,循环任务就跟着没了。你看到的现象不是“模型没回答”,而是“根本没人到点触发”。

所以排障第一步不是改模型,而是确认会话还在不在。重新打开终端后先tmux ls,看claude会话是否还活着;如果没装 tmux,那终端关闭基本等于/loop被终止。会话在但是/loop列表空了,再去查 Hook 和请求通道。顺序反了,你会把时间浪费在换 Key、换模型上,最后发现是终端被关了。

1.2 两个老坑:最多活三天与 27~33 分钟抖动

原文里提到的两个坑很典型。第一个是“最多活三天”:长会话会受进程生命周期、系统资源回收、终端复用器状态影响,硬撑三天不是稳定方案。第二个是“时间抖 27~33 分钟”:/loop不是硬实时调度器,Hook 同步阻塞、模型请求排队、tmux 所在机器负载、系统休眠恢复,都会让触发时间漂移。

这两个现象要分开看。三天上限属于会话层,解法是让会话可重启、任务可幂等,而不是指望一个会话永不掉。27~33 分钟抖动属于调度层加请求层,先把 Hook 里阻塞的命令摘掉,再确认 Claude Code 到点后能不能顺利发出请求。TaoToken 能保证请求通道可用,但不会把 27 分钟校准成 30 分钟整点。

1.3 排障顺序:先保会话,再查 Hook,最后看请求通道

推荐按这个顺序查:

  1. 会话是否还活着:tmux lsclaude是否存在。
  2. /loop是否还登记在当前会话:在 Claude Code 里执行/loop或查看启动回显,确认周期任务没丢。
  3. Hook 是否阻塞:看~/.claude/settings.jsonhooks段,重点查同步命令、超时、写日志命令。
  4. 请求通道是否通:确认ANTHROPIC_BASE_URLhttps://taotoken.net/api,Key 从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建。
  5. 最后再看模型 ID 和用量,别一上来就怀疑模型。

这个顺序能把“会话被杀”“Hook 卡住”“Base URL 多写 /v1”“Key 失效”四类问题分开,避免一锅乱炖。

2. 准备环境:从 TaoToken 拿 Key,让 /loop 到点发得出请求

2.1 打开官网注册并创建 YOUR_API_KEY

先打开 TaoToken,完成注册登录,进入控制台创建一把 API Key。Key 用占位符YOUR_API_KEY表示,不要把它写进文章、截图或公开仓库。创建完成后先复制到本地密码管理器,后面要填进~/.claude/settings.jsonenv段。

这一步对应原文“准备环境”的位置,但通道换成 TaoToken。你不需要在多个供应商后台之间来回切,也不需要为/loop单独准备一套临时 Key。统一用一把 Key,后面验证、排障、看用量都围绕它。

2.2 Base URL 填 https://taotoken.net/api,不要加 /v1

Claude Code 认的环境变量是ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKENANTHROPIC_MODEL。其中 Base URL 填:

https://taotoken.net/api

注意末尾不要加/v1。很多 404 或path not found不是 Key 坏了,而是 Base URL 被写成了https://taotoken.net/api/v1。官网落地页是给人看的,带 UTM;填进工具的 Base URL 是给 Claude Code 发请求的,不带 UTM,也不要混用。

2.3 在 ~/.claude/settings.json 写入 env

先备份,再编辑:

cp ~/.claude/settings.json ~/.claude/settings.json.bak

写入或合并下面的结构:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }

YOUR_API_KEY从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建;YOUR_MODEL_ID不要凭记忆写,去模型广场复制当时可用的模型 ID。模型广场的列表会变,配置文件里写错一个后缀就可能在/loop到点时返回模型不存在。

提示:如果你之前已经用环境变量导出过ANTHROPIC_*,settings.json 里的env和 shell 环境变量可能互相覆盖。排障时先env | grep ANTHROPIC看一眼,再决定以哪份为准。

3. ~/.claude/settings.json 里检查 Hook 与 /loop 的登记项

3.1 先备份,再用 jq 看 env、hooks、permissions

settings.json 一多,人眼容易看漏。用jq把关键段拉出来:

cp ~/.claude/settings.json ~/.claude/settings.json.bak jq '{env: .env, hooks: .hooks, permissions: .permissions}' ~/.claude/settings.json

重点看三件事:env里的 Base URL 是否还是https://taotoken.net/apihooks里有没有同步执行很慢的命令;permissions里有没有把/loop需要的命令拦掉。如果env被旧配置覆盖,/loop到点时会用错通道,表现就像“任务丢了”。

3.2 Hook 别阻塞 /loop:命令超时、写日志、退出码

Hooks 适合做审计、提醒、轻量校验,不适合在到点路径上做重活。下面是一个只写日志、不阻塞的 Hook 示例:

{ "hooks": { "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "echo \"[$(date)] stop\" >> ~/.claude/hooks.log" } ] } ], "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "echo \"[$(date)] pre-bash\" >> ~/.claude/hooks.log" } ] } ] } }

如果你的 Hook 里跑了全量构建、大文件扫描、网络探测,/loop的触发时间就会被拖到 33 分钟甚至更晚。把重活挪到/loop任务内部,或者改成异步写入,别让 Hook 卡住主路径。

3.3 /loop 登记项与会话状态:用 /hooks、/loop 输出对照

在 tmux 里的 Claude Code 会话中执行/hooks,确认当前加载的 Hook 和 settings.json 一致。再执行/loop查看当前循环任务状态;不同版本回显可能不同,以你当前终端输出为准。要确认的是:周期表达式还在、目标任务还在、没有因为重启终端而丢登记。

如果/loop列表为空,但 Hooks 正常,那多半是会话被重启了。此时不要反复改 settings.json,直接把/loop重新登记一遍,再用 tmux 保活。登记完之后跑一轮短周期,比如/loop 5m <你的检查指令>,看日志里有没有到点记录。

4. 用 tmux 保住 Claude Code 长会话,别让终端关闭杀掉 /loop

4.1 tmux new-session -d -s claude 'claude'

最直接的办法是把 Claude Code 放进 tmux 会话:

tmux new-session -d -s claude 'claude' tmux ls tmux attach -t claude

-d让会话后台启动,-s claude命名为 claude,后面 attach 进去继续操作。这样 SSH 断开、终端窗口关闭,只要 tmux 服务还在,Claude Code 和/loop就还在。注意:这不是让 TaoToken 替你跑定时,只是保住会话进程。

4.2 重新附着、看日志、避免误杀

重新连上机器后:

tmux attach -t claude

想暂时离开又不杀进程,按Ctrl-b再按ddetach。要看最近输出:

tmux capture-pane -pt claude | tail -n 80

需要重启时才 kill:

tmux kill-session -t claude tmux new-session -d -s claude 'claude'

别在排障时随手pkill -f claude,那会把/loop一起带走。先tmux ls,再决定是 attach、detach 还是重启。

4.3 最多三天的现实:会话要能重启,而不是硬撑

“最多活三天”不是靠某个配置永久解决的。机器重启、tmux 被杀、系统休眠、Claude Code 进程退出,都会让长会话结束。更稳的做法是:

  • 任务写成幂等:重复执行不会破坏数据。
  • 状态写文件:~/.claude/loop-audit.log记录每次触发。
  • 外部计划任务只负责拉起 tmux 和 Claude Code,不负责替/loop定时。
  • 重启后重新登记/loop,再用日志补齐断档。

如果/loop里跑数据库诊断,不要让 Claude Code 直连生产库执行。让它生成 SQL,你在本地或 SQL*Plus 执行,把报错贴回对话。Claude Code 负责生成和解释,执行权留在你手里。

5. 验证:让 /loop 真正触发一次 TaoToken 请求

5.1 用模型对话发测试消息

配置改完后,先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错。这一步能快速区分“Key/通道问题”和“Claude Code 配置问题”。如果模型对话都不通,先回 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 检查 Key 状态和模型权限。

5.2 在 tmux 里跑一轮短周期 /loop

在 tmux 的 Claude Code 会话里,把原来 30 分钟的任务临时改成 5 分钟:

/loop 5m <你的检查指令>

等它触发一轮,观察终端输出。如果到点没有任何动静,先看/hooks是否加载、/loop是否登记成功。如果到点有输出但报 401、404,转到第 6 节排障。短周期验证通过后,再改回 30 分钟,避免长时间等不到结果。

5.3 看日志与用量,确认不是 Hook 假成功

Hook 写了日志不等于请求成功。打开~/.claude/hooks.log看时间戳,再回控制台看这次调用是否记上账。如果 Hook 有记录、模型没回复、用量也没增加,说明请求没发出去,优先查 Base URL、Key、网络出口。如果用量增加但/loop没显示结果,查 Claude Code 会话输出和 Hook 的退出码。

6. 排障:401、404、模型 ID、时间抖动分别怎么查

6.1 401/403:Key 与 Base URL 对照

401 通常表示 Key 无效或没被读到。检查YOUR_API_KEY是否从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建,是否复制完整,是否被 shell 环境变量覆盖。403 则可能是 Key 权限或模型权限问题,先回控制台确认这把 Key 能用哪些模型。

6.2 404/path not found:多了 /v1

Claude Code 的ANTHROPIC_BASE_URL只写到:

https://taotoken.net/api

不要再拼/v1。如果你从别的工具复制配置时带上了/v1,删掉再试。官网落地页的 UTM 参数只用于注册、创建 Key、看模型广场,不要加到 Base URL 上。

6.3 模型 ID 不存在:去模型广场复制

ANTHROPIC_MODEL写错会返回模型不存在。不要凭印象写gpt-5或带随意日期后缀的 ID。打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的模型广场,复制当时可用的模型 ID,粘回~/.claude/settings.jsonenv.ANTHROPIC_MODEL

6.4 27~33 分钟抖动与三天上限:会话层问题,不是 TaoToken 定时

时间抖动优先查 Hook 是否阻塞、tmux 所在机器是否休眠、/loop周期是否被系统负载拉长。三天上限优先查会话是否被杀、是否有外部计划任务重新拉起 Claude Code。TaoToken 只负责请求通道,不提供/loop的定时器,也不解决终端会话生命周期。

现象更可能的原因怎么改
401Key 错或 settings.json 没读到从官网重新创建 Key,确认ANTHROPIC_AUTH_TOKEN
404 / path not foundBase URL 多了/v1改成https://taotoken.net/api
模型不存在ANTHROPIC_MODEL写错去模型广场复制当时可用 ID
27~33 分钟抖动Hook 阻塞、会话调度、系统休眠hooks.log,缩短 Hook,tmux 保活
第三天断会话生命周期结束外部计划任务重新拉起 tmux 与 Claude Code

7. 跑通之后去控制台对一下这次调用

7.1 模型对话验证

先用 TaoToken 模型对话 发一条测试消息,确认同一把 Key、同一个模型 ID 在对话侧能通。这一步对应原文最后“去控制台看结果”的动作,只是现在看的是 TaoToken 侧的调用记录。

7.2 Coding Plan 与创建 Key

如果要长期让 Claude Code 跑/loop,可以打开 Coding Plan 看套餐是否够用。Key 不够就回 控制台 API Keys 创建新的YOUR_API_KEY,再更新~/.claude/settings.json

7.3 Claude Code 接入文档

环境变量、settings.json 对照和 Claude Code 接入细节,看 Claude Code 接入文档。配完 tmux 和/loop后,回控制台确认这次 Claude Code 调用是否记上账,再把短周期验证改回你真正需要的 30 分钟周期。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询