Raven Agent Loop全解:Turn、Iteration、子代理与检查点回滚如何协同工作

发布时间:2026/9/25 19:10:57
Raven Agent Loop全解:Turn、Iteration、子代理与检查点回滚如何协同工作 Raven Agent Loop全解Turn、Iteration、子代理与检查点回滚如何协同工作【免费下载链接】RavenThe Harness of Harnesses: a trusted, persistent, self-evolving multi-agent ecosystem for all-domain collaboration.项目地址: https://gitcode.com/gh_mirrors/raven35/Raven如果你想知道 Raven 多智能体系统的心脏是如何跳动的这篇文章就是为你准备的。Raven Agent Loop 是 Raven一个可信、持久、可自进化的多智能体协作生态的核心执行引擎它接收消息、组装上下文、调用大模型、执行工具并返回结果。本文将用最少代码、最多的类比带你快速看懂 Turn回合、Iteration迭代、子代理Subagent与检查点回滚Checkpoint Rollback四大机制以及它们如何协同保障每一次任务可靠完成。上图是 Raven 插件体系中一份技能参考文档的截图——这类结构化材料正是 Agent Loop 在每一轮上下文中为模型准备的背景知识之一。 先看整体AgentLoop 是什么AgentLoop 定义在 raven/agent/loop/main.py它的职责被官方注释概括为五步从脊柱spine接收消息用历史、记忆、技能组装上下文调用大模型执行模型发起的工具调用把结果发回去它由四个 Mixin 组合而成TurnPathMixin回合执行、WiringMixin装配、McpGlueMixinMCP 工具、OrganGlueMixin记忆等器官对应源码 raven/agent/loop/turn_path.py、raven/agent/loop/wiring.py。可以把它想象成一家餐厅Turn 是一单订单的处理周期Iteration 是厨师在灶台前后跑的一趟趟。⏱️ Turn 与 Iteration一个回合里的两层循环Turn回合 你发一句话 → 代理干完活给出答复的完整过程。Iteration迭代 回合内部的单次思考—行动循环模型输出 → 可能带工具调用 → 执行工具 → 结果喂回模型 → 再思考……两层结构在代码里体现得很直接回合策略 TurnPolicy 定义了max_iterations默认40 次迭代、是否交互式、空响应恢复策略等真正的迭代循环while iteration iteration_cap位于 raven/agent/loop/turn_path.py 中每次迭代都会经过上下文刷新 → 能力选择 → 迭代钩子 → LLM 调用 → 工具执行。防卡死保险丝迭代不会无限转迭代循环内置了三道保险丝常量见 raven/agent/loop/main.py保险丝触发条件动作工具失败环检测同一工具以同类错误连续失败 2 次注入换条路的提示无进展检测同一调用拿到完全相同的结果达 8 次提示一次仍无变化则升级到拒绝执行拒绝上限无进展拒绝达 3 次结束回合避免空转烧钱此外还有墙钟预算即使迭代次数没到上限累计耗时超限也会触发收尾模式让模型总结当前进展而不是硬跑到底。 检查点回滚每回合自动存档钩子可时光倒流每回合一次的影子 Git 快照Raven 的 CheckpointService 为每个工作目录维护一个独立的影子 Git 仓库存放在.raven/shadow.git一个回合 一个提交每回合结束执行commit_turncheckpoint.py 第277行记录回合改了哪些文件绝不碰你的.git影子仓库用独立--git-dir与用户仓库完全隔离可随时删除默认黑名单.env、node_modules/、venv/、私钥等一律不进快照永不破坏回合任何 git 操作失败都静默降级且单次 git 调用限时 30 秒。如果某个回合中途被打断比如一次多文件编辑写到一半下一回合的恢复提示里就能列出上一个回合改过哪些文件配合影子仓库把损坏的文件还原回去——这就是文档所说的工作树的撤销栈。钩子回滚模型层面也可以重掷骰子除了文件快照Agent Loop 还支持迭代级回滚注册在 raven/agent/hook/ 的钩子可以检查模型的草稿不满意就把本轮追加的消息全部弹出、重新采样且不消耗迭代预算。为防止门神钩子无限弹稿每回合回滚上限为 8 次_MAX_HOOK_ROLLBACKS超限后降级放行。也就是说检查点守护的是磁盘钩子回滚守护的是对话质量两层机制各管一段。 子代理大任务拆给外包团队当主代理判断某个子任务可以并行时会通过子代理管理器派生独立的小代理。关键约束在 SubagentWiring 中定义并发子代理上限默认8 个每小时派生上限默认30 个防止失控繁殖。子代理拥有多种后端raven/agent/subagent/backends/可以复用 Raven 自身的 AgentLoop也可以接入 CLI 代理或纯 API 调用。更高级的玩法是DAG 模式把任务拆成有向无环图各节点由子代理认领执行并提供三个控制工具供主代理随时介入——CancelDagTool取消整张图、ResolveDagNodeTool手动裁决卡住的节点、DagStatusTool查看进度。子代理的结果最终被收敛回主回合作为工具结果并入上下文主代理再据此决定下一步。 一次完整回合的旅程总结把上面四块拼起来一次典型回合的时间线是进入回合接收消息组装上下文历史 记忆 技能材料迭代循环思考 → 调工具 → 结果回流受 40 次上限、墙钟预算与三道防卡死保险丝约束需要时派生子代理并行干活钩子把关草稿被回滚重采样每回合 ≤8 次回合收尾向影子 Git 提交检查点记录变更文件清单随时可回滚交付答复结果经脊柱发回给用户。想进一步动手可以直接打开这几个入口核心循环 raven/agent/loop/、子代理编排 raven/agent/subagent/、钩子契约 raven/agent/hook/以及追踪规范 docs/TRACING_STANDARD_API.md。理解了 Turn、Iteration、子代理与检查点回滚这四块拼图你就掌握了读懂 Raven 多智能体系统的钥匙 ️。【免费下载链接】RavenThe Harness of Harnesses: a trusted, persistent, self-evolving multi-agent ecosystem for all-domain collaboration.项目地址: https://gitcode.com/gh_mirrors/raven35/Raven创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考