StateGraphWorkflow:步进循环 + 两级路由判定

StateGraphWorkflow:步进循环 + 两级路由判定 由 Archify 生成的工作流图。 01 / 宿主调用面 02 / StateGraphWorkflow 引擎 + resolveNext 03 / AgentNode 节点面 初始化 节点执行 路由与终止 宿主调用方 · run / runStream · 宿主调用面 › 初始化 宿主调用方 run / runStream AgentResult · lastResult 返回 · 宿主调用面 › 路由与终止 AgentResult lastResult 返回 WorkflowContext · session+request 初始化 · StateGraphWorkflow 引擎 + resolveNext › 初始化 WorkflowContext session+request 初始化 步进循环 · current!=null && steps<maxSteps · StateGraphWorkflow 引擎 + resolveNext › 节点执行 步进循环 current!=null && steps<maxSteps 上下文回写 · lastResult·req'=outputText · StateGraphWorkflow 引擎 + resolveNext › 路由与终止 上下文回写 lastResult·req'=outputText resolveNext · 条件边优先·无条件边兜底 · StateGraphWorkflow 引擎 + resolveNext › 路由与终止 resolveNext 条件边优先·无条件边兜底 currentNodeId=next · 回边成环 · null 终止 · StateGraphWorkflow 引擎 + resolveNext › 路由与终止 currentNodeId=next 回边成环 · null 终止 AgentNode · execute(context, request) · AgentNode 节点面 › 节点执行 AgentNode execute(context, request) execute / executeStream null/超限 → return current=start 下一步(可回边成环) resolveNext 命中 nodeId run(session, request) lastResult 图例 Agent 逻辑 策略 外部系统

两级路由次序

  • • 先遍历 conditionalEdges:router.route(ctx,req,result) 非 null 即命中,routeMap 可把语义键映射为 nodeId
  • • route 为 null 才查 transitions:condition==null 恒命中;全不命中 → currentNodeId=null 终止

上下文接力

  • • 执行前写 currentNodeId/currentRequest,执行后写 lastResult/lastNodeId;WorkflowContext 全图共享可读写
  • • 下一节点 request.input = 上一节点 lastResult.outputText;executeStream 经 WorkflowResultAware.getLastResult 补回结果

回边与终止

  • • 路由返回已执行过的 nodeId 即成环(decide→tool→decide 的图编排)
  • • maxSteps≤0 不限步;start 缺失或 nodeId 未注册 → IllegalStateException