Claude Code Ping Start 5h Quota
睡前/离开前额度耗尽时,设置一次性本机定时器,在 Claude 订阅额度重置后自动发一条极简 claude -p 消息,立刻开启新的 5...
Install
npx skills add daymade/claude-code-skills --skill claude-code-ping-start-5h-quota -g -a claude-code -y- Repository
- daymade/claude-code-skills1.5k
- Category
- AI and agents
- Updated
- 3d ago
- License
- MIT
- Context cost
- Lightabout 1,057 tokens
- Runs scripts
- No, instructions only
What it does
睡前/离开前额度耗尽时,设置一次性本机定时器,在 Claude 订阅额度重置后自动发一条极简 claude -p 消息,立刻开启新的 5 小时用量窗口, , 用户睡醒时新窗口已跑掉大半,等于白赚一个 冷却期。Use when 用户说「还有 X 小时重置额度,帮我定时戳一下 Claude」「我去睡觉了, 到点 ping 一下开启新窗口」「额度用完了,重置后帮我踩个点」「设个定时器开启新的 5 小时 冷却期」,或提到 定时戳、戳 Claude、quota ping、开窗、额度重置后自动发消息。 仅限一次性定时任务与 macOS 本机(caffeinate/BSD date);周期性任务用 /loop 或 cron, 查询 ChatGPT/Codex 何时重置用 tibo-reset-codex,分析额度为什么烧完用 claude-usage-analyst。
Claude Code Ping · Start 5h Quota, 额度重置后定时戳一下,开启新的 5 小时窗口
原理(为什么这么做有价值)
Claude 订阅的 5 小时用量窗口从窗口内第一条请求开始计时,而不是按固定时刻轮转。 所以额度耗尽后如果没人发消息,新窗口就一直不开始计时;用户睡醒后亲自发第一条消息, 等于从那一刻才开始一个全新的 5 小时。反过来,在重置时刻刚过时由定时任务替用户发一条 极简消息,新窗口就从深夜开始计时, , 用户睡醒时这个窗口已经消耗掉大半时长(而几乎没 消耗额度),相当于把一个冷却期藏进了睡眠时间。
一次戳的成本极小:一条 claude -p 单轮消息。2026-08-29 实测全流程成功。
入口分流
- 用户给相对时间(「还有 1 小时 20 分钟重置」)→ 等待分钟数 = 相对分钟数 + 5 分钟缓冲。
- 用户给绝对时刻(「6 点 15 重置」)→ 先
date拿当前时间算差值;目标钟面时刻早于或等于 当前时间,一律按次日同刻理解(深夜说「6 点 15 重置」指明早,睡前跨零点是本 skill 的 常态输入,不是用户输错),算出差值后再加 5 分钟缓冲。 - 用户要周期性/每天都戳 → 超出本 skill 边界,用 /loop 或系统 cron,别用一次性 sleep 链。
- 用户问 ChatGPT/Codex 什么时候重置 → tibo-reset-codex skill。
- 用户问额度为什么烧这么快 → claude-usage-analyst skill。
执行步骤
Step 0:幂等检查(已有定时器就别再起一个)
ps -ef | grep -E 'claude -p "Reply with exactly: ok"' | grep -v grep
有输出说明已有一个 ping 定时器在跑, , 报告用户现有定时器的启动时间,问清是否要替换, 不要默默叠加第二个。替换的做法:按 Troubleshooting「用户中途改主意要取消」行的特征串 pkill 杀掉旧链,ps 确认干净后按新参数重走 Step 1, 4 全流程(尤其 Step 4, , 新定时器的 output 路径必须重新交代,否则唤醒通知一旦丢失,兜底路径还指着已被杀掉的旧定时器)。
Step 1:算时间并报告
date '+%Y-%m-%d %H:%M:%S'; date -v+<等待分钟数>M '+目标时刻 %H:%M:%S'
换算公式(占位符全文统一):等待分钟数 = 距重置分钟数 + 5;SLEEP_SECONDS = 等待分钟数 × 60。
例:「还有 1 小时 20 分钟重置」→ 85 分钟 → SLEEP_SECONDS=5100。
把具体的触发时刻(几点几分)报告给用户,不要只说「85 分钟后」, , 用户睡前想知道的是墙钟时刻。
Step 2:启动定时进程(run_in_background)
用 Bash 工具、run_in_background: true 运行:
caffeinate -is /bin/sh -c 'sleep <SLEEP_SECONDS> && cd "$HOME" && claude -p "Reply with exactly: ok"'
必须 run_in_background:前台 sleep 会被 harness 拦截;后台任务是 detached 进程, 且退出时会重新唤醒当前会话(见 Step 5)。启动回执里有任务 output 文件路径, , 记住它, Step 4 要把它写进给用户的交代(这是路径唯一可靠的持久化机会)。
Step 3:独立读回验证
启动回执不算数,用 ps 确认进程链真的存在:
ps -ef | grep -E 'caffeinate -is|sleep <SLEEP_SECONDS>' | grep -v grep
预期输出:至少三行, , /bin/sh -c sleep ...、caffeinate -is ...、sleep <SLEEP_SECONDS>。
少了 sleep 行说明进程没起来,回到 Step 2 查报错。

