Visão geral
O Devin Desktop oferece suporte a uma API para análises personalizadas. Ela permite consultar dados de autocompletar, chat e comandos, com diversos filtros, agrupamentos e agregações. Fornecemos todos os exemplos em curl; depois, eles podem ser convertidos em requisições HTTP em outras linguagens.A API de Análises está disponível nos planos Enterprise
Especificação da API de análises de dados de usuários
Os dados da tabela Users na página Teams podem ser obtidos com o seguinte comando:Exemplo de saída
Especificação da API de análises do Cascade
Os dados específicos do Cascade exibidos na página de análises podem ser consultados pela API.Exemplo de consulta
Tipos de IDE
Dividimos os dados do Cascade em categorias por tipo de IDE. Se o campo ide_types for omitido da consulta, serão retornados dados de todos os tipos. Se você quiser consultar dados de apenas um dos IDEs, pode usar qualquer uma das seguintes opções:- “editor” para o Devin Desktop Editor
- “jetbrains” para o plugin do JetBrains
- “cli” para o Devin CLI
Ao filtrar por Devin CLI (
"cli"), o campo mode de cascade_runs não é preenchido. cascade_lines e cascade_tool_usage abrangem a atividade do Devin CLI e do Devin Local, mas incluem apenas dados registrados depois que esses agentes começaram a reportá-los.Fontes de dados do Cascade
Há três valores possíveis para CASCADE_DATA_SOURCEFonte: cascade_lines
Usecascade_lines para consultar dados sobre as linhas do Cascade sugeridas e aceitas por dia.
Exemplo de saída:
Fonte: cascade_runs
Use o cascade_runs para consultar dados sobre o uso do modelo, o consumo de créditos e o modo. Exemplo de saída:Fonte: cascade_tool_usage
Use cascade_tool_usage para consultar dados de uso de ferramentas. Observe que isso retorna uma contagem agregada do uso de ferramentas no período informado. Exemplo de saída:- CODE_ACTION: ‘Editar código’
- VIEW_FILE: ‘Visualizar arquivo’
- RUN_COMMAND: ‘Executar comando’
- FIND: ‘Ferramenta Find’
- GREP_SEARCH: ‘Busca grep’
- VIEW_FILE_OUTLINE: ‘Visualizar estrutura do arquivo’
- MQUERY: ‘Riptide’
- LIST_DIRECTORY: ‘Listar diretório’
- MCP_TOOL: ‘Ferramenta MCP’
- PROPOSE_CODE: ‘Propor código’
- SEARCH_WEB: ‘Pesquisar na web’
- MEMORY: ‘Memória’
- PROXY_WEB_SERVER: ‘Pré-visualização no navegador’
- DEPLOY_WEB_APP: ‘Implantar app web’
Especificação da API de Análises Personalizadas
Certas fontes de dados permitem consultas personalizadas por meio da API de Análises Personalizadas. Os esquemas completos de seleções, filtros, agregações e ordenações estão na seção a seguir, em formato JSON. Consultas de exemplo para cada uma das três fontes de dados, assim como dicas de depuração de consultas, estarão no final do documento.Esquemas
Seleções
As seleções são obrigatórias. Cada seleção corresponde a um valor que será consultado.Filtros
Os filtros são usados para restringir os dados, de modo que contenham apenas elementos que atendam a determinados critérios. Eles são opcionais.Agregações
As agregações servem para dividir os dados em grupos com base em um critério especificado. Elas são opcionais.Campos disponíveis
Dados do usuário
Todos os dados da fonte USER_DATA são agregados por usuário, por hora. Observação: PCW (percentual de código escrito) agora tem sua própria tabela e não depende da tabela user_data.Dados do chat
Observe que todos os dados fornecidos na API de dados do chat se referem às respostas do modelo de chat, não às perguntas do usuário.dados de comando
Observe que a fonte dados de comando contém todos os comandos, inclusive os que foram recusados. O campo “accepted” pode ser usado para filtrar apenas os comandos aceitos.Dados do PCW
Seleções válidas
Dados do Cascade
A fonte de dados do Cascade contém uma entrada para cada mensagem enviada ao Cascade.Para acessar todos os campos listados abaixo, verifique se você está usando a versão 1.11.2 ou posterior.
Filtros válidos
Para filtrar por data, use start_timestamp e end_timestamp, que devem estar no formato RFC 3339 (por exemplo, 2023-01-01T00:00:00Z; consulte o exemplo abaixo).
Exemplos
Dados do usuário
Dados do chat
Dados do comando
Dados do PCW
Depuração de consultas
A partir da versão 1.10.0, consultas inválidas retornam uma mensagem de erro. Esta seção apresenta algumas mensagens de erro comuns, o que elas significam e como depurar as consultas correspondentes.| Mensagem de erro | Explicação |
|---|---|
| at least one field or aggregation is required | Nenhuma seleção ou agregação foi detectada — verifique se a requisição de consulta contém pelo menos uma. |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Uma das seleções usou uma função de agregação inválida. Neste caso, tentamos usar SUM no campo “ide”, mas ele só oferece suporte a COUNT e UNSPECIFIED. |
| invalid query table: QUERY_DATA_SOURCE_UNSPECIFIED | Provavelmente há um erro de digitação no campo data_source; verifique a grafia. |
| all selection fields should have an aggregation function, or none of them should | Se houver vários campos de seleção, todos deverão conter um aggregation_function, ou nenhum deles deverá conter. Por exemplo, esta seleção é inválida porque num_acceptances está sendo somado, mas num_lines_accepted não está: |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Nem todo campo oferece suporte a todas as funções de agregação; consulte a seção de campos disponíveis para ver quais combinações são válidas. Neste caso, a consulta usou a função de agregação QUERY_AGGREGATION_SUM com o campo “ide”, o que é inválido. |
| tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date] | Campos com o padrão “distinct_*” não podem estar na seção aggregations; a mensagem de erro sugere campos alternativos para agregar no lugar. Então, em vez de: |
| duplicate field alias for selection/aggregation: num_acceptances | Todas as seleções e agregações devem ter nomes diferentes. Lembre-se de que, se o nome não for especificado, por padrão ele será definido como <AGGREGATION_FUNCTION>_<FIELD_NAME>. |
| invalid group name: GroupName | O grupo com o nome especificado não foi encontrado; verifique a grafia. |

