OpenTelemetry
De Copilot CLI heeft ingebouwde tracing via OpenTelemetry. Je hoeft dit alleen aan de SDK-kant te configureren om tracedata van het CLI-proces te verzamelen.Telemetrie van modelaanroepen
Via het CLI-eventassistant.usage kun je aantallen opvragen over toolaanroepen van vóór het opschonen van de request.
data['requestFingerprint'] van het event model.call_failure kan structurele informatie over de mislukte request bevatten, zoals het aantal berichten, afbeeldingen en toolaanroepen. De inhoud van de request wordt niet opgenomen. errorCode en errorType zijn waarden afkomstig van de server en bedoeld voor beperkte telemetrie. De SDK bewaart de eventdata ongewijzigd. Stuur deze waarden en errorMessage niet door naar niet-goedgekeurde logs of externe diensten.
GitHub-telemetry-events ontvangen
Los van OpenTelemetry kun je GitHub-telemetry-events ontvangen met de clientoptieonGitHubTelemetry (of on_github_telemetry). Wanneer je een handler instelt, schakelt de SDK het doorsturen in bij het verbinden en telkens wanneer een sessie wordt aangemaakt of hervat. De clienthandler heeft voorrang op enableGitHubTelemetryForwarding: false in de sessieconfiguratie.
Basisgebruik
Tracing van het CLI-proces inschakelen
Voeg een telemetry-configuratie toe aanconfig/copilot.php, of geef die rechtstreeks als optie mee.
TelemetryConfig-opties
W3C Trace Context-propagatie
De meeste gebruikers hebben deze functie niet nodig. Met alleen de bovenstaande
TelemetryConfig kun je al traces van de CLI verzamelen. Wat volgt is een geavanceerde functie voor als je aan de applicatiekant eigen OpenTelemetry-spans wilt maken en die in dezelfde gedistribueerde trace wilt tonen als de spans van de CLI.traceparent/tracestate) in de JSON-RPC-requests session.create, session.resume en session.send.
Automatische propagatie (aanbevolen)
Installeer alleen het pakketopen-telemetry/api en de tracecontext wordt automatisch gepropageerd.
Custom provider
Als je je eigen logica wilt gebruiken om de tracecontext op te halen:SDK → CLI (uitgaand)
traceparent/tracestate worden automatisch geïnjecteerd in de volgende RPC-aanroepen.
session.create— bij het aanmaken van een sessiesession.resume— bij het hervatten van een sessiesession.send— bij het versturen van een bericht
CLI → SDK (inkomend)
Wanneer de CLI een tool aanroept, bevat de$invocation-array van de toolhandler de tracecontext.
open-telemetry/api is geïnstalleerd, wordt de OpenTelemetry-context tijdens het uitvoeren van de toolhandler automatisch gekoppeld aan de span van de CLI. Je hoeft traceparent niet expliciet te gebruiken.
Afhankelijkheden
open-telemetry/api staat in de suggest-sectie van composer.json. De SDK zelf werkt gewoon, ook als het pakket niet is geïnstalleerd.
Zie de GitHub-repository voor de meest recente informatie.