☰
auto-deep-researcher-24x7核心代码拆解:THINK→EXECUTE→REFLECT自主循环如何7×24不间断运转
2026/10/13 6:22:40 网站建设 项目流程
  • 人工智能
  • AI Agent
  • 大模型
  • 深度研究
  • 自主智能体
  • 深度学习

【免费下载链接】auto-deep-researcher-24x7

🔥 An autonomous AI agent that runs your deep learning experiments 24/7 while you sleep. Zero-cost monitoring, Leader-Worker architecture, constant-size memory.

项目地址:https://gitcode.com/gh_mirrors/au/auto-deep-researcher-24x7
点击查看免费下载

auto-deep-researcher-24x7 是一个自主 AI Agent,核心能力是让你睡觉时它替你 7×24 小时自动跑深度学习实验。它的灵魂是一个名为 THINK→EXECUTE→REFLECT 的自主循环:想清楚下一步 → 动手做实验 → 复盘并更新记忆,然后无限重复。这篇文章带你完整拆解core/目录下的核心代码,看看这个 24×7 研究循环是如何被写出来、又是如何保证一直稳定转下去的。

一张图看懂:auto-deep-researcher-24x7 的核心架构

在拆代码之前,先看官方架构图,后文每一节都对应图中的一块:

整个项目core/目录只有 7 个 Python 文件,职责非常清晰:

文件角色一句话说明
core/loop.py循环驱动THINK→EXECUTE→REFLECT 主循环
core/agents.py多智能体调度Leader-Worker 架构 + 工具调用循环
core/tools.py工具注册每个 Agent 3~5 个最小工具集
core/memory.py两层记忆恒定大小的记忆系统
core/monitor.py零成本监控训练期间零 LLM 调用
core/execution.py执行后端local / SSH 双模式
core/obsidian.py进度导出Obsidian 看板 + 每日笔记

主循环拆解:一个 while 循环如何驱动 7×24 研究循环

一切从 core/loop.py 的ResearchLoop.run()开始,它就是一个朴素到极致的无限循环,每个周期做四件事:

  1. 重置 Leader 上下文(把 LLM 对话成本限制在单个周期内)
  2. THINK:让 Leader 决策下一步
  3. EXECUTE + 监控:派 Worker 干活,零成本盯到实验结束
  4. REFLECT:复盘结果、写回记忆、刷新进度看板

core/loop.py#L91-L98:

while self._running: if self.max_cycles > 0 and self.cycle_count >= self.max_cycles: break self.cycle_count += 1 self._save_cycle_counter() logger.info(f"=== Cycle {self.cycle_count} ===")

三个"永远不崩"的设计细节藏在主循环里:

  • 异常兜底:整个周期包在try/except里,任何一步出错都会把错误写进workspace/state.json和记忆日志,然后进入加倍冷却再试,而不是直接挂掉(core/loop.py#L179-L190);
  • 周期计数器落盘:cycle_count持久化到.cycle_counter文件,进程重启后接着数,不会"失忆";
  • 优雅退出:构造时就注册了SIGTERM/SIGINT信号处理,kill一下它也会体面收尾(core/loop.py#L83-L85)。

THINK 阶段:上下文只有 4 份材料,Leader 只输出一个 JSON

_think()的实现短到惊人——组装一个上下文字典,扔给 Leader Agent:

core/loop.py#L194-L211:

context = { "brief": self.memory.get_brief(), # 项目目标(冻结摘要) "memory_log": self.memory.get_log(), # 滚动记忆 "cycle": self.cycle_count, "directive": directive, # 人工指令(可选) } result = self.dispatcher.dispatch_leader(task="think", context=context)

Leader 的人设在 agents/leader.md 里,它被要求严格输出一个 JSON 决策块:

{ "action": "experiment|wait|report", "agent": "code|idea|writing", "task": "给 worker 的完整任务描述", "hypothesis": "我们期望学到什么", "success_criteria": "如何判断成功" }

框架解析这个 JSON 后:action是wait就进入智能冷却(core/loop.py#L119-L130);是experiment就进入 EXECUTE 阶段。

值得注意的一个 token 成本控制:Leader 在一个周期内保留对话历史(THINK 和 REFLECT 可以"接着聊"),但每个周期结束都会清空历史(reset_leader_history())。这就是为什么它跑一周也不会上下文爆炸。

EXECUTE 阶段:Leader-Worker 架构与多轮工具调用循环

EXECUTE 的本质是一次"派工":_execute()读取 Leader 决策里的agent字段,把任务连同工具集交给对应的 Worker(core/loop.py#L213-L226)。三个 Worker 的工具配置写在 core/agents.py#L53-L69:

Worker最大轮次最小工具集
idea(想法)12论文搜索、读/写文件
code(代码)40跑 shell、launch_experiment、读写文件、列目录
writing(写作)30写文件、读文件、列目录

Worker 如何"动手"?core/agents.py#L204-L232 实现了经典的 ReAct 式多轮工具调用循环:LLM 输出tool_call块 → 框架执行工具 → 结果以tool_result块回传 → 继续下一轮,直到某轮回复里没有tool_call块,视为最终答案。

两个精妙的防御性设计值得点名:

  • 围栏免疫:解析前先剥掉代码围栏内容(core/agents.py#L261-L277)——LLM 经常把协议示例写在 ``` 里"讲解",不剥掉就会把示例当真实调用执行;
  • 权威 PID:code Worker 调用launch_experiment后,进程 PID 和日志路径直接从工具返回值取,只保留正则抓取文本作为兜底(core/agents.py#L637-L661),保证监控环节拿到的信息永远可靠。

工具层还有安全边界:所有路径必须工作区相对(防穿越),rm、sudo、dd等危险命令被黑名单拦截(core/tools.py#L197-L209),state.json、MEMORY_LOG.md等状态文件禁止 Worker 覆写(core/tools.py#L32)。

零成本监控:实验跑 10 小时,LLM 费用是 0

这是整个项目最省钱的一招。实验一旦启动,ExperimentMonitor.wait_for_completion()进入轮询(core/monitor.py#L74-L116),默认每15 分钟只做三件"纯系统调用"的事:

while self._is_process_alive(pid): time.sleep(self.poll_interval) # 默认 900 秒 gpu_info = self._safe_gpu_status() log_tail = self._safe_tail_file(log_file, lines=5)

进程还活着吗?看一眼日志尾部、查一下 GPU 利用率——全程零 LLM 调用。训练 10 小时的实验,监控成本是 0;只有实验结束、需要分析结果时,才"叫醒" LLM 进入 REFLECT 阶段。配合 config.yaml 里的monitor.zero_llm: true和poll_interval: 900,这就是"24×7 低成本"的真正含义。

实验结束时,框架还会用正则从日志尾部抽取loss、accuracy、FGD、FID等常见指标(core/monitor.py#L142-L167),直接喂给 REFLECT 阶段。

REFLECT 阶段:把结果变回记忆,闭环成立

_reflect()把实验结果、训练日志尾部、指标打包给 Leader 做复盘(core/loop.py#L243-L265):

if result.get("milestone"): self.memory.log_milestone(result["milestone"]) if result.get("decision"): self.memory.log_decision(result["decision"])

Leader 按固定框架思考四件事:超过基线了吗?假设被证实了吗?继续迭代还是转向?应该记录什么里程碑?——然后里程碑和决策被写回两层记忆系统。至此,一个完整的 THINK→EXECUTE→REFLECT 闭环跑完,while循环进入下一个周期。

两层恒定记忆:跑 7 天和跑 70 天,上下文一样大

长期运行的 Agent 最容易死在"上下文无限膨胀"上。core/memory.py 的解法是恒定预算:

  • Tier 1 — 项目摘要:PROJECT_BRIEF.md,人写的"项目宪法",Agent 只读不改,上限 3000 字符;
  • Tier 2 — 滚动日志:workspace/MEMORY_LOG.md分"关键结果"和"最近决策"两区,自动压缩规则写死在代码里(core/memory.py#L67-L89):关键结果超 1200 字符就丢最旧一条,决策只保留最近 15 条,总日志硬上限 2000 字符。

总预算约5K 字符(约 1500 token)——不管 Agent 跑了多久,每次 THINK 看到的上下文规模都一样,性能不衰减、token 费用不失控。

防呆机制:让循环"一直转"而不是"一直空转"

24×7 不间断,最怕的不是出错,而是出错后的无效循环。代码里埋了三个防呆开关:

机制触发条件行为
无进展回退同一计划连续 3 个周期无进展强制wait,等新信号(core/loop.py#L289-L314)
错误退避周期异常冷却时间 ×2,上限 30 分钟(core/loop.py#L355-L359)
智能冷却Leader 决策wait每 60 秒轮询,实验一完成立即"唤醒"(core/loop.py#L342-L353)

还有一个很实用的"人类干预口":往workspace/HUMAN_DIRECTIVE.md写一句话,下一个周期就会以最高优先级注入 Leader 的决策上下文,读完自动归档(core/loop.py#L361-L374)——想改方向,不用停进程。

核心文件地图:下一步读什么

想了解从哪里读起
主循环与状态机core/loop.py
Leader-Worker 调度与工具调用协议core/agents.py
四个 Agent 的人设提示词agents/leader.md、agents/code_agent.md
记忆压缩策略core/memory.py
零成本监控core/monitor.py
工具安全边界core/tools.py
全部可调参数config.yaml
完整架构说明docs/architecture.md

总结:三招换来 7×24 稳定运转

拆开看完你会发现,auto-deep-researcher-24x7 的设计哲学可以浓缩成三招:

  1. 把 LLM 当"昂贵的决策大脑"——只在 THINK 和 REFLECT 关键时刻唤醒;
  2. 把"便宜的活"全部交给纯代码——进程存活检查、日志轮询、GPU 查询,监控期间 LLM 费用归零;
  3. 恒定记忆预算 + 防呆回退——上下文不膨胀、循环不空转。

一个朴素while循环,配上克制的 LLM 使用策略,这就是它敢说自己能 7×24 不间断跑实验的全部底气。

  • 人工智能
  • AI Agent
  • 大模型
  • 深度研究
  • 自主智能体
  • 深度学习

【免费下载链接】auto-deep-researcher-24x7

🔥 An autonomous AI agent that runs your deep learning experiments 24/7 while you sleep. Zero-cost monitoring, Leader-Worker architecture, constant-size memory.

项目地址:https://gitcode.com/gh_mirrors/au/auto-deep-researcher-24x7
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询