OTel: parallel task dispatch emits successful chat spans without response identity or usage
Personne n'a encore pris cette issue.
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Description
Describe the bug
With metadata-only OpenTelemetry file export enabled, a prompt-mode run that dispatches two named subagents emits two chat spans that have successful status and a stop finish reason but omit all of:
gen_ai.response.idgen_ai.response.modelgen_ai.usage.input_tokensgen_ai.usage.output_tokens
This also occurs when the parent model is explicitly pinned, so it is not limited to --model auto.
The remaining parent and subagent chat spans in the same trace contain complete request/response model and usage fields.
Affected version
GitHub Copilot CLI 1.0.83 on macOS.
Steps to reproduce
- Enable the file exporter and force content capture off.
- Run prompt mode with streaming enabled and an explicitly pinned parent model.
- In one synthetic prompt, use the
tasktool twice with two named agent types and explicit models. - Parse the resulting JSONL.
A representative trace contained one root invoke_agent, two execute_tool task spans, two nested named invoke_agent spans, and seven chat spans. Every completed-response chat had the expected provider, request model, response model, response ID, and usage. Two root-level chats had request model, streaming=true, status code 0, and finish reason stop, but no response identity or usage.
Expected behavior
Each logical completed inference should contain independently reported response identity and usage when available. An abandoned, cancelled, routing, or retry attempt should not look like a successful completed chat: it should carry an explicit attempt/outcome classification or a non-success terminal status. Consumers must not have to synthesize gen_ai.response.model from the requested model.
Privacy
The reproduction used synthetic prompts with OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false. No prompt, response, repository, or credential content is included here.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire la trace de prompt-mode avec un export OpenTelemetry limité aux métadonnées, le streaming, un modèle parent explicitement épinglé et deux agents de tâche nommés. Analysez le JSONL obtenu et comparez les deux spans de chat incomplets au niveau racine avec les spans de chat complets. Le travail est considéré comme terminé lorsque chaque inférence terminée rapporte l’identité de la réponse et l’utilisation lorsqu’elles sont disponibles, tandis que les tentatives abandonnées ou non terminées ne sont pas marquées comme réussies.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- shell
- Domaine
- observability
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100