🌙 发现问题:你睡觉时,谁在帮你写代码?

作为一名开发者,你可能经历过这样的场景:盯着一个长期任务发愁,比如“重构整个项目的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
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐