Vue d’ensemble
Devin Desktop prend en charge une API d’analyse personnalisée. Elle permet d’interroger les données issues de l’autocomplétion, du chat et de Command, ainsi qu’un large éventail de filtres, de regroupements et d’agrégations. Tous les exemples sont fournis en curl, puis peuvent être adaptés en requêtes HTTP dans d’autres langages.L’API d’analyse est disponible avec les offres Enterprise
Spécification de l’API d’analyse des données des utilisateurs
Les données de la table Users de la page Teams peuvent être obtenues à l’aide de la commande suivante :Exemple de sortie
Spécification de l’API d’analyse de Cascade
Les données spécifiques à Cascade affichées sur la page d’analyse peuvent être récupérées via l’API.emails est défini.
START_TIMESTAMP/END_TIMESTAMP: Horodatages au format RFC 3339, par ex. 2023-01-01T00:00:00Z
EMAILS: Une liste d’adresses e-mail à utiliser pour le filtrage. Ce champ est facultatif. Il ne peut pas être défini si group_name est défini.
IDE_TYPES: Une liste de types d’IDE à utiliser pour le filtrage. Ce champ est facultatif. Les valeurs possibles sont décrites ci-dessous.
QUERY_REQUESTS: Une liste de requêtes à effectuer. Ce champ est obligatoire. Les valeurs possibles de CASCADE_DATA_SOURCE sont décrites ci-dessous.
Exemple de requête
Types d’IDE
Nous répartissons les données Cascade en catégories selon le type d’IDE. Si vous excluez le champ ide_types de la requête, les données pour tous les types sont renvoyées. Si vous souhaitez interroger les données pour un seul IDE, vous pouvez utiliser l’une des options suivantes :- “editor” pour l’éditeur Devin Desktop
- “jetbrains” pour le plugin JetBrains
- “cli” pour Devin CLI
Lors du filtrage par Devin CLI (
"cli"), le champ mode de cascade_runs n’est pas renseigné. cascade_lines et cascade_tool_usage couvrent l’activité de Devin CLI et de Devin Local, mais incluent uniquement les données enregistrées après que ces agents ont commencé à les signaler.Sources de données de Cascade
Il existe trois valeurs possibles pour CASCADE_DATA_SOURCESource : cascade_lines
Utilisez cascade_lines pour obtenir des données sur les lignes Cascade suggérées et acceptées chaque jour. Exemple de sortie :Source : cascade_runs
Utilisez cascade_runs pour interroger les données relatives à l’utilisation du modèle, à la consommation de crédits et au mode. Exemple de sortie :Source : cascade_tool_usage
Utilisez cascade_tool_usage pour obtenir des données sur l’utilisation des outils. Notez que cela renvoie un décompte agrégé des outils sur la période indiquée. Exemple de sortie :- CODE_ACTION: ‘Modification du code’
- VIEW_FILE: ‘Afficher le fichier’
- RUN_COMMAND: ‘Exécuter la commande’
- FIND: ‘Outil de recherche’
- GREP_SEARCH: ‘Recherche grep’
- VIEW_FILE_OUTLINE: ‘Afficher le plan du fichier’
- MQUERY: ‘Riptide’
- LIST_DIRECTORY: ‘Lister le répertoire’
- MCP_TOOL: ‘Outil MCP’
- PROPOSE_CODE: ‘Proposer du code’
- SEARCH_WEB: ‘Recherche Web’
- MEMORY: ‘Mémoire’
- PROXY_WEB_SERVER: ‘Aperçu dans Browser’
- DEPLOY_WEB_APP: ‘Déployer l’application Web’
Spécification de l’API d’analyse personnalisée
Certaines sources de données permettent d’effectuer des requêtes personnalisées via l’API d’analyse personnalisée. Les schémas complets des sélections, filtres, agrégations et ordres de tri figurent dans la section suivante, au format JSON. Des exemples de requêtes pour chacune des trois sources de données, ainsi que des conseils de débogage des requêtes, se trouvent à la fin du document.Schémas
Sélections
Les sélections sont obligatoires. Chaque sélection correspond à une valeur sur laquelle effectuer une requête.Filtres
Les filtres permettent de limiter les données aux seuls éléments répondant à certains critères. Ils sont facultatifs.Agrégations
Les agrégations servent à répartir les données en groupes sur la base d’un critère spécifié. Elles sont facultatives.Champs disponibles
Données utilisateur
Toutes les données de la source USER_DATA sont agrégées par utilisateur et par heure. Remarque : le PCW (pourcentage de code écrit) dispose désormais de sa propre table et ne dépend pas de la table user_data.Données de chat
Notez que toutes les données fournies dans l’API de données de chat concernent les réponses du modèle de chat, et non les questions des utilisateurs.Données de Command
Notez que la source de données Command contient toutes les commandes, y compris celles qui ont été refusées. Le champ “accepted” peut être utilisé pour filtrer uniquement les commandes acceptées.Données PCW
Sélections valides
Données Cascade
La source de données Cascade contient une entrée pour chaque message envoyé à Cascade.Pour accéder à tous les champs listés ci-dessous, assurez-vous d’utiliser la version 1.11.2 ou une version ultérieure.
Filtres valides
Pour filtrer par date, utilisez start_timestamp et end_timestamp, qui doivent être au format RFC 3339 (p. ex. 2023-01-01T00:00:00Z, voir l’exemple ci-dessous).
Exemples
Données utilisateur
Données de chat
Données de Command
Données PCW
Débogage des requêtes
À partir de la version 1.10.0, les requêtes non valides renverront un message d’erreur. Cette section présente quelques messages d’erreur courants, leur signification et comment déboguer les requêtes correspondantes.| Message d’erreur | Explication |
|---|---|
| at least one field or aggregation is required | Aucune sélection ni agrégation n’a été détectée ; assurez-vous que la requête en contient au moins une. |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | L’une des sélections utilise une fonction d’agrégation non valide. Dans ce cas, nous avons essayé d’utiliser SUM sur le champ “ide”, mais il ne prend en charge que COUNT et UNSPECIFIED. |
| invalid query table: QUERY_DATA_SOURCE_UNSPECIFIED | Il y a probablement une faute de frappe dans le champ data_source ; vérifiez l’orthographe. |
| all selection fields should have an aggregation function, or none of them should | S’il y a plusieurs champs de sélection, soit ils doivent tous contenir une aggregation_function, soit aucun ne doit en contenir. Par exemple, cette sélection est non valide, car num_acceptances est additionné, mais num_lines_accepted ne l’est pas : |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Tous les champs ne prennent pas en charge toutes les fonctions d’agrégation ; consultez la section des champs disponibles pour connaître les correspondances. Dans ce cas, la requête utilise la fonction d’agrégation QUERY_AGGREGATION_SUM avec le champ “ide”, ce qui n’est pas valide. |
| tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date] | Les champs correspondant au modèle “distinct_*” ne peuvent pas figurer dans la section aggregations ; l’erreur suggère un ou plusieurs champs alternatifs sur lesquels agréger à la place. Donc, au lieu de : |
| duplicate field alias for selection/aggregation: num_acceptances | Toutes les sélections et agrégations doivent avoir un nom différent. Gardez à l’esprit que si le nom n’est pas spécifié, il est défini par défaut sur <AGGREGATION_FUNCTION>_<FIELD_NAME>. |
| invalid group name: GroupName | Le groupe portant le nom indiqué est introuvable ; vérifiez l’orthographe. |

