新闻详情

新闻详情

首页 / 资讯中心 / 详情

深入gnhf编排器架构:状态机如何让AI代理整夜循环不丢一行代码

发布时间:2026/11/13 12:22:12来源:尧图网络
深入gnhf编排器架构:状态机如何让AI代理整夜循环不丢一行代码
深入gnhf编排器架构状态机如何让AI代理整夜循环不丢一行代码【免费下载链接】gnhfBefore I go to bed, I tell my agents: good night, have fun项目地址: https://gitcode.com/gh_mirrors/gn/gnhfgnhfgood night, have fun是一个 AI 代理过夜运行编排器睡前一条命令它就让编码代理Claude Code、Codex、Copilot 等朝着你的目标整夜循环工作——每一轮迭代完成一小步可验证的改动成功即自动提交失败即自动回滚。你醒来时得到的是一条装满干净提交的分支和一份完整日志。它的核心秘密就是 orchestrator.ts 里那台精心设计的状态机。 gnhf 编排器AI 代理的“过夜模式”传统用法是你在终端里盯着 AI 写代码它一卡壳、一出错就得你接手。gnhf 换了一个思路——把“盯着”这件事交给状态机。你只需在一个 Git 仓库里执行一条命令gnhf 在不改变功能的前提下降低代码库的复杂度然后安心睡觉。gnhf 会自动校验工作区是否干净并创建独立的gnhf/分支每轮迭代生成一份提示词调用你配置的代理默认claude解析代理返回的结构化结果agents/types.ts决定提交还是回滚直到达到迭代上限、token 上限、你设定的停止条件或你按下停止整个运行过程由Orchestrator类驱动它继承自 Node.js 的EventEmitter通过事件把状态推送给终端界面renderer.ts所以你能实时看到迭代数、token 消耗和提交计数。 核心状态机驱动整夜循环的 4 个状态gnhf 的状态机定义在 orchestrator.ts 的OrchestratorState接口中只有 4 个主状态状态含义触发条件running正在执行某轮迭代每次迭代开始时waiting指数退避中暂停等待代理连续硬错误后aborted运行已中止达到上限或连续失败连续 3 次失败、token 超限、永久错误stopped优雅停止完成两次 CtrlC 或 SIGTERM主循环的逻辑非常直白orchestrator.ts迭代前检查是否达到--max-iterations或--max-tokens是则中止执行迭代构建提示词 → 调用代理 → 等待结构化结果迭代后检查记录成败 → 判断是否触发--stop-when停止条件失败熔断连续失败达到maxConsecutiveFailures默认 3 次立即中止退避等待有硬错误时按60秒 × 2^(n-1)指数等待然后回到第 1 步这个“检查—执行—检查”的节奏正是状态机不丢工作的第一个原因任何异常都只会把循环推回安全点而不是带着脏状态继续跑。✅ 每轮提交与回滚“不丢一行代码”是如何保证的这是 gnhf 最巧妙的部分。每轮迭代结束时的处置逻辑成功→ 立即git add -A并创建独立提交git.ts并把本轮摘要、关键改动、关键学习追加到notes.md代理自报失败→git reset --hard硬回滚git.ts工作区恢复原样代理崩溃硬错误→ 同样回滚并进入退避等待提交本身失败→ 唯一不立即回滚的情况gnhf 保留未提交的工作并在下一轮提示词里注入“修复指令”让下一轮代理先修好提交再继续orchestrator.ts也就是说代理的任何胡作非为都只存活到那一轮迭代结束。成功的工作被固化为提交失败的工作被彻底清除。你早上醒来时分支上的每一个提交都是“成功过验证的工作”可以逐个 cherry-pick 或 revert互不牵连。还有一个细节提交时强制关闭 GPG 签名-c commit.gpgsignfalse避免自动循环被密码弹窗卡死——这是为“无人值守”场景专门做的防御。⚠️ 故障处理三级故障分级与指数退避整夜运行最怕的不是单次失败而是“雪崩式失败”。gnhf 的解法是把故障分成三类各给不同的待遇orchestrator.ts代理自报失败successfalse说明循环本身健康只是这一步走不通 → 直接进下一轮不等待硬错误代理进程崩溃、网络超时等环境可能暂时性出问题 → 触发指数退避第 1 次等 60 秒、第 2 次 2 分钟、第 3 次 4 分钟……orchestrator.ts永久错误如 Claude 额度用尽重试毫无意义 → 立即中止并打印运行日志路径另外两个保命设计零进展熔断一轮既没改文件、也没产生新学习 自报失败计入连续失败防止代理在原地打转烧 tokentoken 上限中途拦截--max-tokens达到时立刻中止当前迭代账单不会失控同时 gnhf 会默认开启防休眠sleep.tsmacOS 用caffeinate、Linux 用systemd-inhibit、Windows 用SetThreadExecutionState保证机器不会在你睡着时自己“下班”。 优雅中断两次 CtrlC两种结局过夜运行必然要处理“我想停”这个场景。gnhf 的中断本身也是一台状态机interrupt-state.ts你的操作状态机处置结果第 1 次 CtrlCrequest-graceful-stop让当前迭代跑完或提前结束退避等待再干净退出第 2 次 CtrlCforce-stop立即中止回滚未提交内容SIGTERMforce-stop立即强停已中止状态下再按exit直接退出界面优雅停止的关键在于它只标记、不抢跑orchestrator.ts。状态机先记下gracefulStopRequested等主循环在迭代间隙自然收敛后才真正停机。这样即使你半夜被闹钟吵醒按了一下 CtrlC也不会出现“提交提交到一半”的半成品状态。 notes.md跨迭代的共享记忆状态机保证“不丢代码”那“不丢上下文”呢答案是一个纯文本文件notes.md每轮迭代前代理被要求先读notes.md了解历史iteration-prompt.ts每轮结束后编排器自动把摘要、关键改动、关键学习追加进去run.ts所有提示词、停止条件、提交规范等元数据都保存在.gnhf/runs/runId/下并且被本地忽略不会污染你的分支这让每一轮代理都像是“从昨晚接着干的人”而不是失忆的陌生人。 关键源码路径速查想深挖实现从这几个文件入手状态机主循环src/core/orchestrator.ts运行元数据与 notes.mdsrc/core/run.ts中断状态机src/core/interrupt-state.tsGit 提交与回滚src/core/git.ts迭代提示词模板src/templates/iteration-prompt.ts代理输出 schemasrc/core/agents/types.tsCLI 入口src/cli.ts代理技能说明skills/gnhf/SKILL.md 快速上手 gnhf 过夜运行安装npm install -g gnhf准备在 Git 仓库中确保工作区干净空目录请先git init启动执行gnhf 你的目标建议加上限更安心gnhf reduce complexity of the codebase --max-iterations 10 --max-tokens 5000000进阶--worktree可让多个代理在隔离 worktree 中同时干活--stop-when支持用自然语言设定停止条件在已有gnhf/分支上重跑gnhf即可断点续跑一次运行结束后gnhf 会打印退出摘要分支、耗时、迭代数、token 总量、diff 统计和复盘命令。从此你只需要在睡前说一句good night, have fun。【免费下载链接】gnhfBefore I go to bed, I tell my agents: good night, have fun项目地址: https://gitcode.com/gh_mirrors/gn/gnhf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉