invoke_agent OpenTelemetry (OTel) span을 생성합니다. Agents 뷰에서는 이 중첩 구조가 이를 트리거한 turn 아래의 하위 에이전트 호출로 렌더링되며, 그 아래에 해당 하위 에이전트의 LLM Call과 도구 Call이 그룹화되어 표시됩니다.
하위 에이전트 데이터 모델
weave.start_subagent span은 OTel invoke_agent span에 매핑되며, 상위 turn과 동일한 오퍼레이션 이름을 생성합니다. Weave는 트레이스의 부모-자식 관계를 통해 이 둘을 구분합니다:
conversation_id를 상속하므로 Agents 뷰에서 나머지 대화와 함께 그룹화됩니다.
weave.start_subagent는 invoke_agent span을 생성하며, 이 span은 OTel 컨텍스트에서 현재 활성화된 span의 자식으로 자동 연결됩니다. 일반적으로 상위 turn 또는 위임을 트리거한 LLM Call의 자식이 됩니다. OTel 컨텍스트 전파가 이러한 부모-자식 관계를 처리하므로 명시적으로 위임을 지정할 필요는 없습니다.
단일 하위 에이전트 트레이스하기
weave.start_conversation으로 감싸고 이어서 conversation.start_turn을 사용해 전체 계층 구조를 캡처합니다. 그런 다음 Weave는 specialist의 weave.start_subagent 블록을 사용해 하위 에이전트 트레이스를 캡처하고, 각 LLM Call과 도구 실행을 하위 span으로 기록합니다.
이 예시에서는 에이전트 간 Tracing에 집중할 수 있도록 라우팅 로직을 의도적으로 생략했습니다.
invoke_agent 블록으로 표시되며, 그 아래에 자체 LLM Calls와 도구 Calls가 함께 그룹화되어 나타납니다. supervisor의 직접 LLM Calls는 하위 에이전트와 같은 계층에 그대로 표시됩니다.
여러 하위 에이전트 트레이스
researcher, 게시물 초안을 작성하는 writer, 최종 출력을 다듬는 reviewer의 세 하위 에이전트에 순차적으로 작업을 위임합니다.
Weave는 각 하위 에이전트마다 별도의 weave.start_subagent 블록을 열어, 세 하위 에이전트를 모두 동일한 turn 아래의 형제 관계로 캡처합니다. 각 하위 에이전트는 활성 turn의 OTel 컨텍스트를 상속하므로, 서로 아래에 중첩되는 대신 turn 아래에 중첩된 동일 레벨의 invoke_agent span으로 표시됩니다.
researcher에는 도구 Call도 포함됩니다. 어느 하위 에이전트도 다른 하위 에이전트의 자식이 아닙니다.
중첩된 하위 에이전트 트레이스
start_subagent 호출은 OTel 컨텍스트에서 현재 활성 상태인 span 아래에 중첩됩니다.
research-coordinator가 turn의 하위 에이전트로 표시되고, anthropic-researcher와 openai-researcher는 coordinator 아래에서 같은 수준으로 표시되며, anthropic-summarizer는 anthropic-researcher의 하위 에이전트로 표시됩니다.