#1568·adk-go

Runner.Run 在使用原生连接后中断 RequestInput 后不会恢复 WorkflowAgent 图形的直接根节点

作者: chriskuy创建于 2026年9月11日更新于 2026年9月12日

def scripted(name, output string, interrupt bool) agent.Agent { a, err := agent.New(agent.Config{Name: name, Run: func(ctx agent.InvocationContext) iter.Seq2[*session.Event, error] { return func(yield func(*session.Event, error) bool) { if interrupt { if _, ok := workflow.ResumeOrRequestInput(agent.Promote(ctx), func(ev *session.Event) error { yield(ev, nil); return nil }, session.RequestInput{InterruptID: name, Message: "approve"}); ok != nil { return } yield(&session.Event{LLMResponse: model.LLMResponse{Content: genai.NewContentFromText(output, genai.RoleModel)}}, nil) return } ev := session.NewEvent(ctx, ctx.InvocationID()) ev.Content = genai.NewContentFromText(output, genai.RoleModel) yield(ev, nil) } } } func TestRunnerResumeDoesNotResumeGraphRoot(t *testing.T) { b := scripted("b", "B", true) c := scripted("c", "C", false) d := scripted("d", "D", false) bNode, _ := workflow.NewAgentNode(b, workflow.NodeConfig{}) cNode, _ := workflow.NewAgentNode(c, workflow.NodeConfig{}) dNode, _ := workflow.NewAgentNode(d, workflow.NodeConfig{}) join := workflow.NewJoinNode("join") root, err := workflowagent.New(workflowagent.Config{Name: "root", SubAgents: []agent.Agent{b, c, d}, Edges: []workflow.Edge{ From: workflow.Start, To: bNode}, {From: workflow.Start, To: cNode}, {From: bNode, To: join}, {From: cNode, To: join}, {From: join, To: dNode}, } if err != nil { t.Fatal(err) } svc := session.InMemoryService() r, err := runner.New(runner.Config{AppName: "repro", Agent: root, SessionService: …