❌ 以为发生了什么
「额度没了 = 会话被终结,得开新窗口从头把需求再讲一遍。」于是要么盯着屏幕手动 --continue,要么干脆放弃跑到一半的活。这是把「暂停」错当成「关机」。
长任务跑一半弹「5-hour limit reached」、人又不在?先破除一个普遍误解——它没死,只是被按了暂停键。
// 面向团队工程与运营 · 问题 → 四派方案 → 首选工具 unsnooze
几乎所有人第一反应是「任务死了、得重来」。其实 Claude Code 撞到 5 小时限额时进程没退出——它停在提示那里等你敲键,整段对话上下文原封不动躺在内存里。这一点,决定了所有「自动续」方案能不能成立。
「额度没了 = 会话被终结,得开新窗口从头把需求再讲一遍。」于是要么盯着屏幕手动 --continue,要么干脆放弃跑到一半的活。这是把「暂停」错当成「关机」。
会话暂停,卡在 5-hour limit reached · resets 3pm,上下文全在、进程还活着。缺的只是「到点有人替你敲一下 continue」这一个动作。
既然只是暂停,那就派一个外部哨兵守着终端:解析出窗口重置时间,到点自动把 continue 送进去(或 claude --resume)。社区绝大多数工具,都吃这一个原理。
这是社区呼声最高的缺失项之一——官方仓库里一串 open issue 从 2 月挂到 3 月,至今未实现。撞墙后官方只给了三条临时手段,且都要人盯着。
#18980 / #26775 / #35744 / #36320 / #38263,诉求高度一致:撞限额后自动等窗口重置再续,最好给一个 --auto-resume 开关或 settings.json 配置。状态:全部 open,未内置。
切轻模型(/model sonnet 或 haiku)压低消耗、干等 5 小时滚动窗口重置、或切 API 按量计费换「无限」。三招都要人盯着,且都不「续」——只是让你能继续手动干。
「自动续」目前完全靠社区外部工具。下面按机制把它们分成四派,再深讲首选。
按「用什么机制续」分成四派。它们不是互斥的——① 和 ② 常叠着用;关键是先想清楚你要续的是同一个满上下文的会话,还是能接受从零重来。
| 流派 | 怎么做 | 适合谁 | 代价 |
|---|---|---|---|
| ① 本地守候自动续 | tmux + 外部 monitor 守着终端,检测限额 → 到点敲 continue | 机器开着跑长任务、想接同一会话满上下文 | 占一个终端 / 机器不能关机 |
| ② 凌晨预热错峰 | crontab 或 ccschedule 凌晨发廉价 ping,把 5h 窗口起点挪到开工前 | 想避免工作时段撞墙的日常节奏 | 链多个 ping 会吃周额度 |
| ③ 内置 /loop | Claude Code 的 /loop --interval 或 --cron 定时重跑一个 prompt | 周期性推进、轮询到达标类任务 | 非专门解限额,撞墙仍需配 ① |
| ④ 云端 Routines | 云端定时 agent,独立于本机 clone 仓库干活 | 机器会关机 / 完全无人值守 | 零上下文,靠 git 交接,接不上当前会话 |
你要「续同一个跑到一半的长任务、保留全部上下文」→ ① 本地守候派最贴合。这派有一堆项目,下面深讲功能最全的 unsnooze。
本地守候派里项目不少——claude-auto-retry、terryso/claude-auto-resume、vibe-coding-auto-resume、Windows 版 cys1750 等,机制大同小异。unsnooze 胜在三点。
Codex / Grok / Qwen / Kimi / OpenCode / Antigravity 一把抓;tmux、Zellij、VS Code、桌面 App 都能接,一个工具管全套 CLI。
用 30 秒 wall-clock epoch 轮询而非一个长定时器,笔记本合盖睡眠、甚至跨周(weekly 限额)等待都不掉链子。
既吃 Claude Code 的 StopFailure hook(带 session_id + 重置时间),又抓终端 banner 文本兜底,不押注单一信号。
把它想成一个守在终端门口的哨兵:盯着你的会话,一旦撞墙就记下「几点开门」,到点替你推门进去。五步闭环。
claude;unsnooze 后台 monitor 盯着这个 pane 与会话状态文件
5-hour limit reached banner 兜底
~/.unsnooze/state.json
claude --resume <session_id> 重开同一会话。验证上限 5 次防死循环
// 关键:它续的是同一个 session_id——满上下文接着干,不是开新窗口从头讲。
依赖很轻,核心就一句话——别裸跑 claude,在 tmux 里跑。这样会话不随终端关闭而丢,哨兵才有得守。
Node ≥ 20;tmux ≥ 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 文件),不是同一条路。
💸 prompt cache 会失效:隔几小时才 resume,之前的 prompt 缓存早过期了。第一条 wake 消息会让 API 全量、未缓存地重读整段对话——长会话这一下不便宜。对策:长任务别把上下文堆到极限,或在续跑点前主动收敛。
它 resume 的是原 session_id,不会替你并发开新任务;跑偏了也不会失控扩散。
续跑前会确认 claude 仍在前台,且整体尝试 capped 5 次,避免无限重试打空枪。
主流实现(如 claude-auto-retry)会等到重置时刻再 +60s 才发,避开「刚好卡在边界又被拒」。
wake 消息是当普通文本 send-keys 进去的;若 claude 正卡在某个确认弹窗,可能误触——长任务里留意收尾态。
我们跑得最长的两个仓库是 Akke 和 Workflow。默认走本地守候派,只有机器会关机时才回退云端。
HANDOFF.md 交接