睡前给AI布置任务,醒来代码已经提交好了——gnhf让自动化开发成为现实
🌙 发现问题:你睡觉时,谁在帮你写代码?
作为一名开发者,你可能经历过这样的场景:盯着一个长期任务发愁,比如“重构整个项目的API层”或“为300个模块补充单元测试”。这些事情技术难度不高,但极其耗时。你明明可以交给AI去处理,但现有的AI编程助手都是交互式的,你得坐在屏幕前等它跑完,然后审核修改,再下达下一个指令。
如果你能睡前给它布置任务,睡醒直接验收结果,该多好?
这就是gnhf(Good Night, Have Fun)要解决的问题。它的名字已经说得很明白了:你去睡觉,AI替你干活。它在GitHub上线仅两周就收获了超过550颗星,迅速成为开发者圈的谈资。有用户在知乎分享:“昨晚睡前给AI布置了个任务,今早起来一看,代码已经迭代了好几轮,Git提交记录整整齐齐。”
🔧 找到工具:gnhf是什么?
gnhf是一个AI代理编排器,能够在你休息时让AI代理持续工作。你只需要输入一句指令,它就会自动唤醒Claude Code、Codex等AI代理,进入全自动循环——改代码、跑验证、生成Git提交,报错了自动回滚重试,全程不需要人工干预。
这个名字本身就带着程序员特有的幽默:“Good Night, Have Fun”——晚安,玩得开心。工具名称本身就是它的使用场景,简洁而直白。
🎯 介绍工具:gnhf的核心能力
gnhf采用了autoresearch风格的编排架构。每次迭代都会在验证Git仓库状态、创建专用分支后,构建包含上下文的目标提示(prompt),调用AI代理执行任务,代理完成后按结果决定是提交变更还是执行回滚。
gnhf的设计有两个非常聪明的点:
1. 迭代记忆机制
每轮AI执行的结果会被写入notes.md文件,下一轮AI能够读取上一轮的工作记录,知道自己之前做了什么、哪些完成了、哪些还需要继续。这样就避免了AI“原地转圈”或重复处理同一件事。
2. 指数退避的重试策略
AI代理运行时可能遇到各种问题——API限流、网络波动、工具调用失败等。如果是代理自身报告的任务失败,gnhf会立即进入下一轮迭代继续推进;但如果是硬性代理错误(如程序崩溃),gnhf会启动指数退避机制,失败次数越多,等待时间越长,连续3次失败则中止运行。这种设计既保证了推进效率,又避免了在不可恢复的错误上无限烧token。
架构工作流程示意
┌─────────────┐
│ gnhf start │
└──────┬──────┘
▼
┌──────────────────────┐
│ 验证Git仓库干净状态 │
│ 创建gnhf/分支 │
│ 写入prompt.md │
└──────────┬───────────┘
▼
┌────────────────────────────┐
│ 构建迭代prompt │◄───────────┐
│ (注入notes.md上下文) │ │
└────────────┬───────────────┘ │
▼ │
┌────────────────────────────┐ │
│ 调用你的AI代理 │ │
│ (非交互模式) │ │
└────────────┬───────────────┘ │
▼ │
┌─────────┐ │
│ 成功? │ │
└──┬──┬───┘ │
是│ │否 │
▼ ▼ │
┌──────┐ ┌──────┐ │
│commit│ │回滚 │ │
└──┬───┘ └──┬───┘ │
│ │ │
└────────┴──────────────────────┘
(循环继续)

✨ 工具优点与实现逻辑
1. Agent无关性设计
gnhf做到了“不挑食”——它支持Claude Code、Codex、Rovo Dev、OpenCode、GitHub Copilot CLI以及Pi等主流AI代理,开箱即用。这意味着无论你习惯使用哪家AI编程助手,都可以直接接入gnhf的自动化编排体系。
2. 增量提交 + 原子化回滚
每轮成功的迭代都会生成一个独立的Git提交。如果某轮失败了,gnhf会用git reset --hard完整回滚到迭代前的状态。这种设计让你可以随意cherry-pick或回滚某一次AI的修改,而不会因为一次失败影响整个任务的所有成果。
3. 运行时上限控制
gnhf允许你通过--max-iterations设置最大迭代次数,达到后会在下轮迭代开始前自动停止;通过--max-tokens设置token上限,即使当前迭代正在执行,一旦token用量超过上限也会中断。此外还有--stop-when参数,当agent报告的自然语言条件满足时结束循环——比如“所有测试都通过了”或“任务已完成”。这些参数让你可以精准控制资源消耗,不会在睡觉时不知不觉烧光token。
4. Worktree并发模式
这是gnhf最让人惊艳的功能之一。通过--worktree参数,你可以在同一个仓库上同时启动多个Agent,每个Agent在自己的隔离工作目录中独立工作,互不干扰。
你的主分支保持原样不变,而gnhf会为每个Agent生成独立的工作目录:
你的仓库(保持不变)
-gnhf-worktrees/
├── / ← Agent 1的工作目录
└── / ← Agent 2的工作目录
有提交产出的工作树会被保留供你review和合并,而没有提交产出的工作树则会在退出时自动清理。你可以同时运行三个任务:
gnhf --worktree "实现功能X" &
gnhf --worktree "为Y模块补充测试" &
gnhf --worktree "重构API层" &
5. 可恢复运行机制
如果你在一个已有的gnhf/分支上再次运行gnhf,它会自动检测之前的运行状态并从中断处继续。这意味着即使你的电脑中途关机了,下次开机重新运行就能无缝接上之前的进度。
多Agent并发架构示意
你的仓库(主分支保持不变)
│
┌─────────┼─────────┐
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│Agent 1│ │Agent 2│ │Agent 3│
│实现X │ │补充Y │ │重构Z │
└───┬───┘ └───┬───┘ └───┬───┘
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│Worktree│ Worktree│ Worktree│
│(独立) │ (独立) │ (独立) │
└───────┘ └───────┘ └───────┘

📦 使用安装教程
前置要求
- Node.js / npm
- Git
- 已安装并配置好的AI代理(如Claude Code)
方式一:npm全局安装(推荐)
npm install -g gnhf
安装完成后,gnhf命令即可在全局使用。
注意:如果你使用Claude Code,需要先全局安装:
npm install -g @anthropic-ai/claude-code claude --version # 验证安装
方式二:从源码安装
git clone https://github.com/kunchenguid/gnhf.git
cd gnhf
npm install
npm run build
npm link
快速使用
基础用法——在一个Git仓库中,确保工作区是干净的(没有未提交的更改),然后运行:
gnhf "降低代码库的复杂度,不改变原有功能"
gnhf会自动创建gnhf/分支,进入循环执行。它会实时在你的终端标题栏显示状态、token消耗和提交数量。想要停止时,按Ctrl+C即可(第一次按是优雅停止,第二次强制退出)。
进阶用法——控制运行时上限:
gnhf "重写API层为TypeScript" --max-iterations 10 --max-tokens 5000000
恢复中断的运行:
# 切换到已有的gnhf/分支,直接运行gnhf即可
git checkout gnhf/some-run
gnhf # 自动从断点处继续
多Agent并发模式(需要主分支干净):
gnhf --worktree "实现用户认证模块" &
gnhf --worktree "补充API文档" &
💡 结束语
gnhf的核心理念其实很朴素:让AI在你睡觉时帮你工作。但它把这个理念执行到了极致——它不是一个简单的脚本,而是一个考虑周全的自动化工作流。从迭代记忆到指数退避重试,从增量提交到worktree并发,每一处设计都在解决真实开发者遇到的问题。
对于独立开发者来说,gnhf就像雇了一个不睡觉的程序员值夜班,工资按token结算。对于团队来说,它可以作为持续集成的智能补丁,在日常迭代中默默推进那些“有意义但优先级不高”的技术债务。
工具本身还在快速迭代中,项目创建仅两周多就获得了550+星,73个活跃PR和3个issue也显示社区正在积极参与。如果你感兴趣,可以去GitHub上试试。
玩得开心。祝你醒来时收获满满的一串Git提交记录✨
🔗 相关链接:
- GitHub仓库:https://github.com/kunchenguid/gnhf
- NPM包:https://www.npmjs.com/package/gnhf
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)