Resumen
Devin Desktop incluye una API de analítica personalizada. Permite consultar datos de Autocomplete, chat y Command, además de aplicar diversos filtros, agrupaciones y agregaciones. Incluimos todos los ejemplos en curl; luego pueden traducirse a solicitudes HTTP en otros lenguajes.La API de Analytics está disponible para los planes Enterprise
Especificación de la API de analítica de datos de usuarios
Los datos de la tabla Users de la página Teams se pueden obtener con el siguiente comando:Ejemplo de salida
Especificación de la API de Analytics de Cascade
Los datos específicos de Cascade que aparecen en la página de analytics pueden consultarse a través de la API.emails está establecido.
START_TIMESTAMP/END_TIMESTAMP: Marcas de tiempo en formato RFC 3339, por ejemplo, 2023-01-01T00:00:00Z
EMAILS: Una lista de correos electrónicos por los que filtrar. Este campo es opcional. No se puede establecer si group_name está establecido.
IDE_TYPES: Una lista de tipos de IDE por los que filtrar. Este campo es opcional. Los valores posibles se describen a continuación.
QUERY_REQUESTS: Una lista de consultas que se deben realizar. Este campo es obligatorio. Los valores posibles de CASCADE_DATA_SOURCE se describen a continuación.
Consulta de ejemplo
Tipos de IDE
Dividimos los datos de cascade en categorías según el tipo de IDE. Si se excluye el campoide_types de la consulta, se devuelven datos de todos ellos. Si quieres consultar datos de solo uno de los IDE, puedes usar cualquiera de las siguientes opciones:
- “editor” para el editor de Devin Desktop
- “jetbrains” para el plugin de JetBrains
- “cli” para Devin CLI
Al filtrar por Devin CLI (
"cli"), el campo mode de cascade_runs no se completa. cascade_lines y cascade_tool_usage abarcan la actividad de Devin CLI y Devin Local, pero solo incluyen datos registrados después de que esos agentes comenzaran a reportarlos.Fuentes de datos de Cascade
Hay tres valores posibles paraCASCADE_DATA_SOURCE
Fuente: cascade_lines
Usa cascade_lines para consultar datos sobre las líneas de Cascade sugeridas y aceptadas cada día. Ejemplo de salida:Fuente: cascade_runs
Utiliza cascade_runs para consultar datos sobre el uso del modelo, el consumo de créditos y el modo. Resultado de ejemplo:Fuente: cascade_tool_usage
Usa cascade_tool_usage para consultar datos sobre el uso de herramientas. Ten en cuenta que esto devuelve un recuento agregado del uso de herramientas durante el período proporcionado. Resultado de ejemplo:- CODE_ACTION: ‘Editar código’
- VIEW_FILE: ‘Ver archivo’
- RUN_COMMAND: ‘Ejecutar comando’
- FIND: ‘Herramienta Find’
- GREP_SEARCH: ‘Búsqueda Grep’
- VIEW_FILE_OUTLINE: ‘Ver esquema del archivo’
- MQUERY: ‘Riptide’
- LIST_DIRECTORY: ‘Listar directorio’
- MCP_TOOL: ‘Herramienta MCP’
- PROPOSE_CODE: ‘Proponer código’
- SEARCH_WEB: ‘Buscar en la web’
- MEMORY: ‘Memoria’
- PROXY_WEB_SERVER: ‘Vista previa del navegador’
- DEPLOY_WEB_APP: ‘Desplegar aplicación web’
Especificación de la Custom Analytics API
Ciertas fuentes de datos permiten realizar consultas personalizables mediante la Custom Analytics API. Los esquemas completos de selecciones, filtros, agregaciones y ordenaciones se encuentran en la siguiente sección, en formato JSON. Al final del documento se incluyen consultas de ejemplo para cada una de las tres fuentes de datos, así como consejos para depurar consultas.Esquemas
Selecciones
Las selecciones son obligatorias. Cada selección corresponde a un valor que se va a consultar.Filtros
Los filtros se utilizan para limitar los datos de modo que solo incluyan elementos que cumplan ciertos criterios. Son opcionales.Agregaciones
Las agregaciones se utilizan para dividir los datos en grupos según un criterio específico. Son opcionales.Campos disponibles
Datos de usuario
Todos los datos de la fuente USER_DATA se agregan por usuario y por hora. Nota: PCW (porcentaje de código escrito) ahora tiene su propia tabla y no depende de la tabla user_data.Datos del chat
Ten en cuenta que todos los datos proporcionados en la API de datos del chat corresponden a las respuestas del modelo de chat, no a las preguntas del usuario.Datos de Command
Ten en cuenta que la fuente de datos de Command contiene todos los comandos, incluidos los que se rechazaron. El campo “accepted” puede usarse para filtrar solo los comandos aceptados.Datos de PCW
Selecciones válidas
Datos de Cascade
La fuente de datos de Cascade contiene una entrada por cada mensaje que se envía a Cascade.Para acceder a todos los campos que se enumeran a continuación, asegúrate de usar la versión 1.11.2 o posterior.
Filtros válidos
Para filtrar por fecha, usa start_timestamp y end_timestamp, que deben estar en formato RFC 3339 (p. ej., 2023-01-01T00:00:00Z; consulta el ejemplo a continuación).
Ejemplos
Datos de usuario
Datos del chat
Datos de Command
Datos de PCW
Depuración de consultas
A partir de la versión 1.10.0, las consultas no válidas devolverán un mensaje de error. Esta sección incluye algunos mensajes de error comunes, qué significan y cómo depurar las consultas correspondientes.| Mensaje de error | Explicación |
|---|---|
| at least one field or aggregation is required | No se detectó ninguna selección ni agregación; asegúrate de que la solicitud de consulta contenga al menos una. |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Una de las selecciones usó una función de agregación no válida. En este caso, se intentó usar SUM en el campo “ide”, pero solo admite COUNT y UNSPECIFIED. |
| invalid query table: QUERY_DATA_SOURCE_UNSPECIFIED | Probablemente haya un error tipográfico en el campo data_source; vuelve a comprobar la ortografía. |
| all selection fields should have an aggregation function, or none of them should | Si hay múltiples campos de selección, todos deben contener un aggregation_function o ninguno debe contenerlo. Por ejemplo, esta selección no es válida porque num_acceptances se suma, pero num_lines_accepted no: |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | No todos los campos admiten todas las funciones de agregación; consulta la sección de campos disponibles para ver cuáles corresponden. En este caso, la consulta usó la función de agregación QUERY_AGGREGATION_SUM con el campo “ide”, lo cual no es válido. |
| tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date] | Los campos con el patrón “distinct_*” no pueden estar en la sección agregación; el error sugiere uno o varios campos alternativos sobre los que agregar. Así que, en lugar de: |
| duplicate field alias for selection/aggregation: num_acceptances | Todas las selecciones y agregaciones deben tener un nombre distinto. Ten en cuenta que, si no se especifica el nombre, de forma predeterminada se establece como <AGGREGATION_FUNCTION>_<FIELD_NAME>. |
| invalid group name: GroupName | No se encontró el grupo con el nombre especificado; vuelve a comprobar la ortografía. |

