Claude Code · 长任务续跑 · 工具讲解

额度撞墙之后
让任务自己等到点续跑

长任务跑一半弹「5-hour limit reached」、人又不在?先破除一个普遍误解——它没死,只是被按了暂停键

// 面向团队工程与运营 · 问题 → 四派方案 → 首选工具 unsnooze

TMUX / ZELLIJ NODE ≥ 20 StopFailure HOOK EPOCH POLL · 30s claude --resume 官方尚未内置
SCROLL / 向下滚动
01
The Core Misconception

撞限额不是被杀,是暂停

几乎所有人第一反应是「任务死了、得重来」。其实 Claude Code 撞到 5 小时限额时进程没退出——它停在提示那里等你敲键,整段对话上下文原封不动躺在内存里。这一点,决定了所有「自动续」方案能不能成立。

🔌

❌ 以为发生了什么

「额度没了 = 会话被终结,得开新窗口从头把需求再讲一遍。」于是要么盯着屏幕手动 --continue,要么干脆放弃跑到一半的活。这是把「暂停」错当成「关机」

⏸️

✅ 实际发生了什么

会话暂停,卡在 5-hour limit reached · resets 3pm上下文全在、进程还活着。缺的只是「到点有人替你敲一下 continue」这一个动作。

于是思路就清楚了

既然只是暂停,那就派一个外部哨兵守着终端:解析出窗口重置时间,到点自动把 continue 送进去(或 claude --resume)。社区绝大多数工具,都吃这一个原理。

02
Official State · Not Built In

官方至今没有内置自动续

这是社区呼声最高的缺失项之一——官方仓库里一串 open issue 从 2 月挂到 3 月,至今未实现。撞墙后官方只给了三条临时手段,且都要人盯着。

📮

一串未实现的 issue

#18980 / #26775 / #35744 / #36320 / #38263,诉求高度一致:撞限额后自动等窗口重置再续,最好给一个 --auto-resume 开关或 settings.json 配置。状态:全部 open,未内置

🩹

官方给的临时三招

切轻模型(/model sonnethaiku)压低消耗、干等 5 小时滚动窗口重置、或切 API 按量计费换「无限」。三招都要人盯着,且都不「续」——只是让你能继续手动干。

结论

「自动续」目前完全靠社区外部工具。下面按机制把它们分成四派,再深讲首选。

03
Four Community Approaches

社区四派方案全景

按「用什么机制续」分成四派。它们不是互斥的——① 和 ② 常叠着用;关键是先想清楚你要续的是同一个满上下文的会话,还是能接受从零重来

流派怎么做适合谁代价
① 本地守候自动续tmux + 外部 monitor 守着终端,检测限额 → 到点敲 continue机器开着跑长任务、想接同一会话满上下文占一个终端 / 机器不能关机
② 凌晨预热错峰crontab 或 ccschedule 凌晨发廉价 ping,把 5h 窗口起点挪到开工前想避免工作时段撞墙的日常节奏链多个 ping 会吃周额度
③ 内置 /loopClaude Code 的 /loop --interval--cron 定时重跑一个 prompt周期性推进、轮询到达标类任务非专门解限额,撞墙仍需配 ①
④ 云端 Routines云端定时 agent,独立于本机 clone 仓库干活机器会关机 / 完全无人值守零上下文,靠 git 交接,接不上当前会话
选型直觉

你要「续同一个跑到一半的长任务、保留全部上下文」→ ① 本地守候派最贴合。这派有一堆项目,下面深讲功能最全的 unsnooze

04
Why unsnooze

同类里为什么选它

本地守候派里项目不少——claude-auto-retryterryso/claude-auto-resumevibe-coding-auto-resume、Windows 版 cys1750 等,机制大同小异。unsnooze 胜在三点。

🧰

COVERAGE · 覆盖最广不止 Claude Code

Codex / Grok / Qwen / Kimi / OpenCode / Antigravity 一把抓;tmux、Zellij、VS Code、桌面 App 都能接,一个工具管全套 CLI。

😴

RESILIENT · 扛睡眠合盖也不掉

用 30 秒 wall-clock epoch 轮询而非一个长定时器,笔记本合盖睡眠、甚至跨周(weekly 限额)等待都不掉链子。

📡

DUAL-CHANNEL · 双通道两条腿检测

既吃 Claude Code 的 StopFailure hook(带 session_id + 重置时间),又抓终端 banner 文本兜底,不押注单一信号。

05
How It Works · The Watchdog Loop

一个哨兵怎么替你守到点

把它想成一个守在终端门口的哨兵:盯着你的会话,一旦撞墙就记下「几点开门」,到点替你推门进去。五步闭环。

挂钩 你在 tmux / Zellij 里正常跑 claude;unsnooze 后台 monitor 盯着这个 pane 与会话状态文件
检测 撞墙瞬间:接 StopFailure hook(拿到 session_id + reset 时间),或抓 pane 里 5-hour limit reached banner 兜底
解析 从文本解析出重置时刻,带完整 IANA 时区 / 半小时偏移 / DST 处理,换算成一个目标 epoch
轮询等待 每 30s 拿 wall-clock 和目标 epoch 比——不是一个长 sleep,所以睡眠 / 跨周都稳;状态存 ~/.unsnooze/state.json
续跑 到点:pane 还开着就把 wake 消息敲进 live pane;原 pane 关了就 claude --resume <session_id> 重开同一会话。验证上限 5 次防死循环

// 关键:它续的是同一个 session_id——满上下文接着干,不是开新窗口从头讲。

06
Getting Started

装好它,然后这样跑长任务

依赖很轻,核心就一句话——别裸跑 claude,在 tmux 里跑。这样会话不随终端关闭而丢,哨兵才有得守。

📦

依赖与安装

Node ≥ 20tmux ≥ 3.2 或 Zellij;zsh / bash(装 wrapper)。支持 macOS / Linux / Windows(WSL)。装完它会注入一个包裹 claude 的 shell 函数——你照常敲 claude,它透明地把你放进 tmux 并起后台 monitor。

🚀

跑长任务的标准姿势

进 tmux → 跑你的长线程 → 撞墙时人可以走开。哨兵到点自动续;你回来 tmux attach 看结果即可。想每天满额开工,再叠一层 ②「凌晨预热」的 crontab ping。

边界

⚠️ 仅限终端会话。VS Code 扩展 / 桌面 App 这类 GUI 界面要走它的 daemon 模式(盯 session 文件),不是同一条路。

07
The Catch · Cost & Guardrails

一个必须知道的成本坑

Cost

💸 prompt cache 会失效:隔几小时才 resume,之前的 prompt 缓存早过期了。第一条 wake 消息会让 API 全量、未缓存地重读整段对话——长会话这一下不便宜。对策:长任务别把上下文堆到极限,或在续跑点前主动收敛。

🔒

只续同一会话

它 resume 的是原 session_id,不会替你并发开新任务;跑偏了也不会失控扩散。

🛑

5 次验证上限

续跑前会确认 claude 仍在前台,且整体尝试 capped 5 次,避免无限重试打空枪。

⏱️

60s 安全边际

主流实现(如 claude-auto-retry)会等到重置时刻再 +60s 才发,避开「刚好卡在边界又被拒」。

✍️

纯文本注入风险

wake 消息是当普通文本 send-keys 进去的;若 claude 正卡在某个确认弹窗,可能误触——长任务里留意收尾态。

08
Our Playbook · Akke / Workflow

放到我们自己的活里怎么用

我们跑得最长的两个仓库是 Akke 和 Workflow。默认走本地守候派,只有机器会关机时才回退云端。

✅ 默认路线 · 本地守候

  • Akke / Workflow 长线程一律 tmux + unsnooze
  • 机器别关机;合盖睡眠 OK(epoch 轮询扛得住)
  • 叠加凌晨 crontab 预热,每天满额开工
  • 续的是同一会话,改到一半的活不丢

🌤️ 何时回退云端

  • 只有机器会关机 / 完全无人
  • 走云端 Routine:clone 仓库 + 读 HANDOFF.md 交接
  • 代价:零上下文、看不到本地未提交改动
  • 触发前务必把工作 commit + push

🧗 两个共同注意

  • resume 后首条 wake 全量重读、贵——控住上下文体积
  • 云端接不上本地未 push 的活
  • PR 优先:无人值守别直推 main
一句话总括:撞限额只是暂停不是被杀——本地用 tmux + unsnooze 派个哨兵守着、到点续同一会话,是「续长任务」的最优解;只有机器会关机才退回零上下文的云端 Routine

// 信源与证据档位
A 级(官方一手) Claude Code 仓库 open issues #18980 / #35744 / #36320 / #38263 —— 坐实「官方未内置」。
B–C 级(多点社区) unsnooze · claude-auto-retry 等项目 README —— 机制细节以各自 README 为准,版本 / 命令可能随更新变动。
// 数据核对于 2026-07;引用前请复核最新版本