写代码的时候想刷 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