Skip to content

【Feature】ralph 循环模式:带判据的自动继续 + ask_followup_questions 挂起/恢复 #62

Description

@willy-scr

使用场景与痛点 *

当前 auto_continue 开关(Agent 设置)只做「盲循环」:每次工具成功后就注入一次 "continue",硬上限 20 次,遇到工具失败或 ask_followup_questions 就整体停止。多步创作流程(如多步视频/配音/剪辑工作流)里:

  • 循环是无条件的——不管上一个工具结果是什么、离完成还有多远,都只数次数,不判断该不该继续。
  • 遇到 ask_followup_questions(用户必须在卡片上做选择的分叉点)就永久停住,选完答案后不会自动接着往下走,用户得再手动打 "continue"。
  • 没有「该继续 / 该停」的显式判据,也没有可观察的循环状态(现在跑到第几步、卡在哪个场景),长流程跑丢了很难排查。

期望的行为 *

新增一个「ralph 循环」工作模式(与现有 auto_continue 独立开关),实现带判据的自动继续

  1. 显式继续/停止判据,按优先级判断每轮:
    • 继续:上个工具成功、流程未到末尾、还有下一步(例如 voice 已放置 → 该转录 → 该规划镜头 → 该搜素材 → 该放素材)。
    • 暂停(等待用户):调用了 ask_followup_questions 等需要用户选择的分叉工具——先挂起循环,用户选完后再自动恢复接着跑,而不是永久停住。
    • 停止:出现工具失败、遇到成本守护确认卡片、输出结束标记(如 "Video selesai. STOP.")、或达到迭代上限。
  2. 每次「暂停」附带明确上下文:说明为什么暂停、下一步要做什么、用户确认后如何恢复。
  3. 可观察的循环状态:在界面上显示当前循环进度(第 N 步 / 卡在哪个场景 / 下一步工具),方便长流程排查。
  4. 可配置迭代上限(默认建议 20,可调),避免失控。

参考实现(可选)

现有的 useAgent.ts auto-continue(注入 __auto_continue__)可作基础,但需要把「数次数」升级为「判断下一步」,并把 ask_followup_questionsawaitingUserChoice 分支从「跳过循环」改为「挂起→恢复」。

验收标准(可选)

  • 开启 ralph 模式后,一个多步流程能从开头一路跑到底,无需手动输入 "continue"。
  • 遇到 ask_followup_questions 时循环暂停并提示用户;用户选完后自动恢复,不中断流程。
  • 工具失败 / 成本确认卡片 / 结束标记 / 达到上限时,循环正确停止。
  • 界面上能看到当前循环进度与下一步。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions