Vigil:让 Claude Code 在我睡觉的时候自己跑队列任务 —— 撞墙自动续、跑完自动 commit

写代码的时候想刷 Claude Code ,但 5h 窗口动不动就打爆、网络抽筋一两次任务就死、人还得盯着, 所以做了个轮子,叫 Vigil (守夜人)—— 别人休息的时候保持警觉。 简单说,你 vigil add 几条 prompt , vigil start 一开就一条条 spawn claud...
Vigil:让 Claude Code 在我睡觉的时候自己跑队列任务 —— 撞墙自动续、跑完自动 commit
Vigil:让 Claude Code 在我睡觉的时候自己跑队列任务 —— 撞墙自动续、跑完自动 commit

写代码的时候想刷 Claude Code ,但 5h 窗口动不动就打爆、网络抽筋一两次任务就死、人还得盯着, 所以做了个轮子,叫 Vigil (守夜人)—— 别人休息的时候保持警觉。

简单说,你 vigil add 几条 prompt ,vigil start 一开就一条条 spawn claude -p 帮你跑。 每个任务跑在独立的 git worktree 里(~/.vigil/worktrees/<id>/,源仓库永远不会被动到), 分支叫 vigil/<id>-<slug>。跑完按 Conventional Commits 自动 commit + push 到 origin 。 早上起来你看到的是一摞等审的分支 —— 想要的 merge ,不要的 vigil discard 删掉。

几个自己觉得有用的设计:

  • 5h 配额真实可见claude -p 的 stream-json 只发个鸡肋的 overage 标记,看不到真 5h 用量。 Vigil 跑一个长驻 PTY sidecar 通过 Claude Code 的 statusLine 拿到 Anthropic 真给的 five_hour / seven_day 数据,每个任务的 report 都带快照。

  • 撞墙不预测:只在 server 把 limiter 翻成 blocked(窗口越界)或 rejected(请求被 429 ) 时才暂停,resume_at = limiter.resets_at + 60s,直接用 Anthropic 自己给的数据。 不猜阈值、不预暂停。到点恢复时 --resume <session_id> 接回同一个 Claude session, 对话历史完整保留,不会丢上下文重新扫工程。

  • 瞬时失败自动重试:「 Stream idle timeout - partial response received 」这种网络层抽筋 自动重试 3 次( 30s / 60s / 120s backoff ),同样 --resume 接回同 session ,prompt cache 还热, 每次重试几分钱。第 4 次还失败才标 FAILED 。

  • 永远不自动合并:任务终态永远是一个等你审的分支。让无人值守 agent 自动 merge 是 丢系统信任的捷径,review 恰好是人类擅长的事。

  • Self-summary:跑完 --resume 让 Claude 自己出一份结构化 JSON 总结(决策 / 假设 / 跳过 / 合并风险 / 置信度),cache 命中几分钱。

  • Scope hook:任务可声明 --scope-write 'src/auth/**',PreToolUse hook 拦截 Edit/Write/ MultiEdit/NotebookEdit ,越界写文件被结构化拒绝。

  • DAG 任务依赖--depends-on t001 自动从前置任务的分支末梢 fork ,串行重构能拿到上一步成果。

  • Web 仪表盘vigil web 起一个本地 SPA ,列表 + 筛选 + 单任务详情 + 删除 / 清空。

技术栈 Python 3.11+ / Click / SQLite / FastAPI 。需要本地装好 claude CLI (已登录)、git 2.30+。 MIT license 。

v0.1 预发布,功能完整正在试用,欢迎拍砖。

GitHub: https://github.com/jzb1006/claude-vigil

来源: V2EX - 技术查看原文