跳转至

Ralph 迭代飞轮与 Goal 系统

Fresh-Agent 零上下文污染自主迭代飞轮与长程多轮目标推进系统。

在处理特大规模任务(如完整重构整个前端、解决复杂的跨模块 Issue)时,传统 Agent 经常在执行 20~30 步后陷入混乱:之前的报错信息、过期的临时探索占满了数万 Token,导致模型"注意力涣散",开始反复犯同样的低级错误。

DSH 给出了两项前沿解决方案:Ralph 迭代飞轮Goal 目标驱动器


核心文件速查

路径 职责 重要度
packages/workflow/tool-ralph/src/index.ts Ralph 循环驱动工具与状态协议 ⭐⭐⭐
packages/goal/goal/src/index.ts Goal 服务定义与状态迁移机 ⭐⭐⭐
packages/goal/goal-round-driver/ 跨轮次自主推进驱动器 ⭐⭐⭐

Ralph 循环:Fresh-Agent 范式

Ralph 循环 是一种前台自治的迭代执行范式。它的核心思想是:"每一轮都使用干净的 Fresh-Agent,共享工作区是唯一持久记忆"

                    Ralph Objective: "完成 100% 单元测试覆盖率"
                                       │
                ┌──────────────────────┴──────────────────────┐
                │                                             │
         Round 1 (Fresh Agent)                        Round 2 (Fresh Agent)
┌──────────────────────────────────────┐     ┌──────────────────────────────────────┐
│ - 零历史上下文 (Zero Conversation)    │     │ - 零历史上下文 (Zero Conversation)    │
│ - 读取上轮结构化摘要报告             │     │ - 读取上轮结构化摘要报告             │
│ - 检查当前工作区代码与测试通过率     │     │ - 检查当前工作区代码与测试通过率     │
│ - 编写 5 个测试用例,运行并修复      │     │ - 编写剩余 3 个用例,运行并修复      │
│ - 生成结构化汇报: 8/10 测试已通过    │     │ - 生成结构化汇报: 10/10 测试全部通过 │
└──────────────────┬───────────────────┘     └──────────────────┬───────────────────┘
                   │                                            │
                   ▼                                            ▼
          Shared Workspace (磁盘文件持久化)             Report Complete -> Exit Loop

Ralph 循环的三大定律:

  1. 零上下文继承:每一轮打开一个全新的 Child Agent,不继承上一轮的对话历史,彻底消除上下文膨胀(Context Bleed);
  2. 物理工作区为真理:磁盘上的真实文件、Git 提交和测试运行结果是跨轮次的唯一长期记忆;
  3. 有界的结构化报告:上一轮 Agent 仅通过一份极度紧凑的结构化汇报(Structured Report)告诉下一轮"做了什么、现状如何、下一步建议"。

Goal 系统:长程目标的跨轮持久推进

对于不需要彻底重开 Fresh-Agent,但需要跨越多个自主轮次(Autonomous Continuation Rounds)推进的同会话长程任务,DSH 提供了 Goal 体系:

┌────────────────────────────────────────────────────────────┐
│                    Goal State Machine                      │
│                                                            │
│       ┌─────────┐      resume      ┌─────────┐             │
│       │  armed  │ ◄─────────────── │ paused  │             │
│       └────┬────┘                  └────▲────┘             │
│            │ (Auto continue)            │                  │
│            ▼                            │ pause            │
│       ┌─────────┐      block       ┌────┴────┐             │
│       │ active  │ ───────────────► │ blocked │             │
│       └────┬────┘                  └─────────┘             │
│            │ complete                                      │
│            ▼                                               │
│       ┌─────────┐                                          │
│       │ completed                                          │
│       └─────────┘                                          │
└────────────────────────────────────────────────────────────┘
  • create_goal:在当前会话中设立一个持久目标,并设定最大自主推进轮次;
  • get_goal:查询当前目标的精确版本号(Revision)、已完成轮数与阻塞状态;
  • update_goal:在多轮推进中更新目标状态(完成 complete、阻塞 blocked、暂停 pause 或继续 resume)。

本章思考与自测

  1. 思考题:在什么场景下应该使用 ralph 工具,而在什么场景下应该使用 create_goal
  2. 自测题:在 Ralph 循环中,如果某个子 Agent 陷入死循环并在达到单轮上限前未主动报告,Ralph 驱动器是如何通过最大轮次上限(maxRounds)进行兜底保护的?