云计算百科
云计算领域专业知识百科平台

翻了 449 个被限额杀掉的 Claude Code 子 Agent:438 个被从头重做了一遍

用 Claude Code 的 Pro/Max 订阅跑长任务的人应该都遇到过这个场景:5 小时窗口一到,正在跑的子 Agent 全部失败;额度重置以后回来发一句"继续",主 Agent 把同样的任务重新派一遍,之前做了一半的活作废,额度再花一次。

我一直觉得这是偶发的,直到把自己 6 个会话的记录翻了一遍:

  • 449 个子 Agent 被限额打断
  • 只有 8 个被按 ID 叫醒,而且全是在重置之前叫的,所以又失败了一次
  • 438 个从头重做

信息其实都在本机

死掉的子 Agent 并没有丢。Claude Code 把每个子 Agent 的记录存在 ~/.claude/projects/<项目>/<会话>/subagents/agent-<id>.jsonl,里面有它的原始任务、改过的文件、最后几步。一个停掉的子 Agent 用 SendMessage <id> 就能带着完整上下文接着干。问题只是:没有任何东西告诉主 Agent 应该这么做,它看到的只是一堆 “failed”。

重置时间也一样。界面上只显示 “resets 8pm”,但 transcript 里那条 error: "rate_limit" 记录带着 quotaLimits.resetsAt,精确到秒。状态栏脚本收到的 JSON 里有 rate_limits.five_hour 和 rate_limits.seven_day,各带 used_percentage 和 resets_at。

Claude Code 自带的 auto-continue 覆盖的范围比想象中小:只续跑主对话、只在交互式会话里、只在重置不到 24 小时时。无人值守的 claude -p、周限额、撞限额那一刻正在跑的子 Agent,都不管。

于是写了个小工具

agent-limit-retry 就是把上面这些信息读出来,在正确的时刻告诉 Agent 该做什么。一个 Claude Code 插件里的四个 hook,加一个状态栏转接:

  • 状态栏转接:把 Claude Code 传给状态栏的额度百分比存下来,再原样输出你自己的状态栏
  • 提前交接(PostToolUse):窗口用到 90% 时,让 Agent 做完当前一步先写 HANDOFF.md(目标、已完成、进行中、下一步、坑),每个窗口只提醒一次
  • 收尾保护(Stop):想在没写交接文件的情况下结束,提醒一次,绝不拦第二次
  • 撞限额(StopFailure):记下精确重置时间,发桌面通知
  • 无人值守:alr run "<任务>" 跑 claude -p,撞限额后睡到重置时间,用 –resume 续跑同一个会话,周限额同样处理
  • 安装一条命令,重启一次 Claude Code:

    npx agent-limit-retry
    alr selftest # 本地假接口模拟一次撞限额 + 自动续跑,不花额度
    alr status # 两个窗口的用量和重置时间

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    全部在本机运行:不走代理、不需要账号、不联网、不轮换账号。它不能提高额度,只是帮你把已经付了钱的套餐用干净。

    基础部分开源 MIT:https://github.com/error0702/agent-limit-retry

    子 Agent 按原 ID 续跑那部分(判断撞限额那一刻哪些子 Agent 真的在跑、排除 Claude Code 自己已经报告过的、等限额真的重置之后再让主 Agent 按 ID 叫醒;Claude Code / Codex / ZCode 都支持)是付费的 Pro 版,$29 一次性含源码:https://retry.autorun.fun

    要求 Node.js 18+,Claude Code 2.1.234+。撞过限额之后 alr report 能生成一份不含对话和代码的反馈文件,有问题欢迎发 issue。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 翻了 449 个被限额杀掉的 Claude Code 子 Agent:438 个被从头重做了一遍
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!