@@ -251,14 +251,10 @@ func buildAgentSteps(agentSpan *Span, spanMap map[string]*Span) []*Step {
251251 childSpans := getDirectChildren (agentSpan , spanMap )
252252
253253 for _ , childSpan := range childSpans {
254- // 深度遍历每个分支收集所有普通子节点,每个分支直到遇到agent节点为止
255- branchSteps := collectOtherSteps (childSpan , spanMap )
256- steps = append (steps , branchSteps ... )
257-
258- // 对每个直接子节点,向下深度遍历找到每个分支的第一个agent/model/tool节点
259- agentModelToolSteps := findAgentModelToolNode (childSpan , spanMap )
260- if len (agentModelToolSteps ) > 0 {
261- steps = append (steps , agentModelToolSteps ... )
254+ // 深度遍历每个分支收集所有子节点,每个分支直到遇到agent节点为止
255+ branchSteps := collectSubSteps (childSpan , spanMap )
256+ if len (branchSteps ) > 0 {
257+ steps = append (steps , branchSteps ... )
262258 }
263259 }
264260
@@ -315,34 +311,8 @@ func buildStep(span *Span) *Step {
315311 return step
316312}
317313
318- // findAgentModelToolNode 向下深度遍历,找到每个分支的第一个agent/model/tool节点
319- func findAgentModelToolNode (startSpan * Span , spanMap map [string ]* Span ) []* Step {
320- if startSpan == nil {
321- return nil
322- }
323-
324- steps := make ([]* Step , 0 )
325- stepType := getStepType (startSpan )
326-
327- // 如果当前节点就是agent/model/tool,直接返回
328- if stepType == StepTypeAgent || stepType == StepTypeModel || stepType == StepTypeTool {
329- steps = append (steps , buildStep (startSpan ))
330- return steps
331- }
332-
333- // 如果是other节点,继续向下遍历
334- children := getDirectChildren (startSpan , spanMap )
335- for _ , child := range children {
336- if result := findAgentModelToolNode (child , spanMap ); len (result ) > 0 {
337- steps = append (steps , result ... )
338- }
339- }
340-
341- return steps
342- }
343-
344- // collectOtherSteps 深度遍历分支,收集任意层级的普通子节点,直到遇到agent节点为止
345- func collectOtherSteps (startSpan * Span , spanMap map [string ]* Span ) []* Step {
314+ // collectSubSteps 深度遍历分支,收集任意层级的普通子节点,直到遇到agent节点为止
315+ func collectSubSteps (startSpan * Span , spanMap map [string ]* Span ) []* Step {
346316 if startSpan == nil {
347317 return nil
348318 }
@@ -351,19 +321,15 @@ func collectOtherSteps(startSpan *Span, spanMap map[string]*Span) []*Step {
351321 stepType := getStepType (startSpan )
352322
353323 // 如果当前节点是agent节点,停止遍历
324+ steps = append (steps , buildStep (startSpan ))
354325 if stepType == StepTypeAgent {
355326 return steps
356327 }
357328
358- // 如果是普通节点,添加到结果中,然后继续向下遍历
359- if stepType != StepTypeModel && stepType != StepTypeTool {
360- steps = append (steps , buildStep (startSpan ))
361- }
362-
363329 // 获取当前节点的子节点,继续深度遍历
364330 children := getDirectChildren (startSpan , spanMap )
365331 for _ , child := range children {
366- childSteps := collectOtherSteps (child , spanMap )
332+ childSteps := collectSubSteps (child , spanMap )
367333 if len (childSteps ) > 0 {
368334 steps = append (steps , childSteps ... )
369335 }
0 commit comments