资讯动态

实验中断了怎么办?NanoResearch断点续跑机制详解:manifest.json检查点原理与实操

发布时间:2026/10/14 17:52:44 来源:尧图企业网站定制
【免费下载链接】NanoResearch NanoResearch: The Autonomous AI Research Assistant项目地址https://gitcode.com/gh_mirrors/na/NanoResearch点击查看免费下载做科研自动化的朋友都遇到过这种糟心场景NanoResearch 这条 AI 自主研究流水线已经跑到一半网络抖动、模型限流或者机器断电任务直接中断了。别慌——NanoResearch 内置了断点续跑机制每个阶段的完成状态都实时记录在manifest.json检查点文件里用一条nanoresearch resume命令就能从上次的断点继续不用从头再跑一遍。本文带你彻底搞懂检查点的工作原理并给出一套「查状态 → 恢复 → 验证」的实操流程。一、manifest.json流水线状态的「账本」NanoResearch 每次研究会话都会在工作空间目录下创建一份manifest.json它就是整条流水线的状态账本默认根目录~/.nanoresearch/workspace/research/{session_id}/会话 ID 是 12 位随机码nanoresearch list可以随时查到自己跑过哪些会话账本里记录当前所处阶段、每个阶段的执行状态与时间戳、重试次数、产物清单含 MD5 校验和工作空间目录结构账本所在的工作空间按阶段分目录存放产物续跑时这些产物都会被复用~/.nanoresearch/workspace/research/{session_id}/ ├── manifest.json # 流水线状态追踪检查点 ├── papers/ # 文献检索产物 ├── plans/ # 实验方案和分析 ├── experiment/ # 生成的实验代码 结果 ├── figures/ # 生成的论文配图 ├── drafts/ # 论文草稿和审稿意见 ├── output/ # 最终导出main.tex / main.pdf └── logs/ # 运行日志四个阶段状态pending / running / completed / failed每个阶段PipelineStage在账本中对应一条StageRecord状态只有四种定义在 nanoresearch/schemas/manifest.py状态含义续跑时的处理pending尚未开始按顺序等待执行running执行中视为崩溃残留自动重置重跑completed已完成直接跳过加载已有产物failed失败重置为pending从该阶段续跑standard 模式下的阶段顺序为IDEATION → PLANNING → EXPERIMENT → FIGURE_GEN → WRITING → REVIEWdeep 模式额外包含SETUP / CODING / EXECUTION / ANALYSIS可在 TUI 界面里直观看到 9 个阶段列表二、检查点机制的 4 个核心原理续跑逻辑的源码集中在 nanoresearch/pipeline/base_orchestrator.py 和 nanoresearch/pipeline/workspace.py核心设计有四点。1️⃣ 原子写入断电也不会写坏账本manifest.json每次更新都不会直接覆盖原文件而是先写入同目录的临时文件再用os.replace()原子改名替换见 nanoresearch/pipeline/workspace.py。这意味着哪怕写入瞬间断电账本要么是旧的完整版本、要么是新的完整版本永远不会出现半个 JSON即使临时文件方案失败如跨设备文件系统还会回退到直接写入保底这是「续跑可靠」的地基——账本本身不会被损坏。2️⃣ 状态机只允许合法跳转阶段之间的跳转由 nanoresearch/pipeline/state.py 中的PipelineStateMachine校验非法跳转比如从IDEATION直接跳到WRITING会抛出InvalidTransitionError。这保证了续跑时的进度推进始终沿着合法路径走不会因为账本脏数据出现「跳着跑」的怪异行为。3️⃣ 跳过已完成阶段并回读历史产物续跑进入主循环时编排器会逐阶段检查账本见 nanoresearch/pipeline/base_orchestrator.py状态为completed的阶段直接跳过不重复消耗 token同时通过_load_stage_output从磁盘把该阶段的 JSON 产物读回来注入后续阶段的输入上下文——所以后面的 Writing 阶段照样能拿到前面 Ideation、Planning 的结果如果某阶段标记为完成但产物文件丢失会明确报错提示「workspace 可能损坏删除重跑或手动重置 manifest.json 中该阶段状态」4️⃣ 自愈能力running 卡死自动重置、FAILED 一键复活两类「脏状态」都有自动处理逻辑卡死的 running如果上次是硬崩溃CtrlC、断电某阶段可能永远停在running。编排器启动时执行_reset_stale_running_stages()把这些阶段重置为pending并记录日志保证续跑一定能推进见 nanoresearch/pipeline/base_orchestrator.pyFAILED 会话resume命令会自动找到那条failed记录把它重置为pending并从该阶段继续见 nanoresearch/cli.py。另外每个阶段在执行时还有指数退避重试increment_retry会累加重试计数小抖动往往在会话内部就恢复了根本轮不到你手动干预三、实操中断后的 3 步恢复流程假设你的流水线在PLANNING阶段挂了按下面三步操作即可。第 1 步status 查看断点在哪nanoresearch status --workspace ~/.nanoresearch/workspace/research/{session_id}会打印一张阶段状态表Stage / Status / Started / Completed / Retries一目了然地看到哪个阶段是failed或卡在running顺便还能看到已注册的产物列表。第 2 步resume 从断点续跑nanoresearch resume --workspace ~/.nanoresearch/workspace/research/{session_id} --verboseresume命令会先打印会话信息面板Session、Topic、Current Stage然后根据manifest.json里的pipeline_mode自动选择对应的编排器standard / deep / evo从第一个未完成阶段继续执行。第 3 步再次 status 验证nanoresearch status --workspace ~/.nanoresearch/workspace/research/{session_id}确认原失败阶段变为completed、current_stage继续向后推进。全部跑完后manifest.json的current_stage会变成DONE再用nanoresearch export导出论文即可。 提示如果忘记 session_id直接运行nanoresearch list可列出所有研究会话及其当前阶段。四、常见问题与注意事项Q续跑会不会把已完成的阶段再跑一遍、重复烧 token不会。completed阶段被跳过后直接回读磁盘产物只有断点之后的阶段会真正执行。Q报错说「marked completed but output file missing」怎么办说明账本记录完成但产物文件丢了多半是手动删过文件。两种处理删除该会话工作空间重跑或者手动编辑manifest.json把对应阶段的status改回pending。Q我想跳过某些阶段再续跑配置里支持skip_stages被跳过的阶段会在状态机中记录为 skipped 并直接推进见 nanoresearch/pipeline/base_orchestrator.py。Q失败阶段的重试次数怎么看status表格中的Retries列就是账本里retries字段每次失败重试都会 1方便你判断某个阶段是不是「屡战屡败」需要换配置。总结NanoResearch 的断点续跑 manifest.json 检查点账本原子写入 阶段状态机校验 已完成阶段跳过与产物回读 卡死状态自愈。理解这套机制后实验中断对你来说就不再是「推倒重来」而只是「看一眼 status、敲一条 resume」的小事。 相关源码索引阶段枚举与账本数据结构nanoresearch/schemas/manifest.py工作空间与 manifest 读写原子写入nanoresearch/pipeline/workspace.py检查点 / 续跑 / 重试主逻辑nanoresearch/pipeline/base_orchestrator.py状态机与非法跳转校验nanoresearch/pipeline/state.pyresume/status命令实现nanoresearch/cli.py赞分享【免费下载链接】NanoResearch NanoResearch: The Autonomous AI Research Assistant项目地址https://gitcode.com/gh_mirrors/na/NanoResearch点击查看免费下载相关推荐中断后无需重跑designing-multiagent-systems 工作流检查点与断点续跑实战中断后无需重跑designing multiagent systems 工作流检查点与断点续跑实战 designing multiagent systemsgh-ost迁移中断了怎么办Checkpoint断点续传与Revert一键回滚完整方案gh ost迁移中断了怎么办Checkpoint断点续传与Revert一键回滚完整方案 当大型 MySQL 表结构变更进行到一半时gh ost 进程意外中断数据库运维Open Multi Agent 检查点与断点续跑Checkpoint Resume完整实战指南Open Multi Agent 检查点与断点续跑Checkpoint Resume完整实战指南 长时间运行的多 Agent 工作流难免遇到进程崩溃、请人工智能AI Agent多智能体Agent 编排Agent 工作流创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑