Skip to main content

概述

Devin Desktop 提供用于自定义分析的 API。您可以查询自动补全、聊天和命令相关的数据,并使用多种筛选、分组和聚合方式。 我们所有示例均使用 curl;随后可将其转换为其他语言中的 HTTP 请求。
分析 API 适用于 Enterprise 套餐

用户数据分析 API 规范

可使用以下命令获取 Teams 页面中 Users 表的数据:
SERVICE_KEY:服务密钥——Admin 用户可在设置页面的服务密钥部分创建该密钥。该服务密钥的 role 必须具有 “Teams Read-only” 权限。 GROUP_NAME:要筛选的组名称。此字段为可选。 START_TIMESTAMP/END_TIMESTAMP:RFC 3339 格式的时间戳,例如 2023-01-01T00:00:00Z

示例输出

Cascade 分析 API 规范

analytics 页面上显示的 Cascade 相关数据可通过 API 查询。
SERVICE_KEY:服务密钥——Admin 用户可以在团队设置中创建新的密钥 GROUP_NAME:要筛选的组名称。此字段为可选。如果设置了 emails,则不能设置此字段。 START_TIMESTAMP/END_TIMESTAMP:RFC 3339 格式的时间戳,例如 2023-01-01T00:00:00Z EMAILS:要筛选的电子邮件列表。此字段为可选。如果设置了 group_name,则不能设置此字段。 IDE_TYPES:要筛选的 IDE 类型列表。此字段为可选。可能的值如下所述。 QUERY_REQUESTS:要发起的查询请求列表。此字段为必填。CASCADE_DATA_SOURCE 的可能值如下所述。

查询示例

IDE 类型

我们按 IDE 类型对 cascade 数据进行分类。如果查询中不包含 ide_types 字段,则会返回所有类型的数据。如果你只想查询某一种 IDE 的数据,可以使用以下任一选项:
  • “editor” 表示 Devin Desktop Editor
  • “jetbrains” 表示 JetBrains 插件
  • “cli” 表示 Devin CLI
按 Devin CLI ("cli") 筛选时,只有 cascade_runs 会返回数据。Devin CLI 不支持 cascade_linescascade_tool_usage 数据源,因此会返回空结果。

Cascade 数据源

CASCADE_DATA_SOURCE 有以下三种可能的取值

来源:cascade_lines

使用 cascade_lines 查询按天统计的建议和已接受的 cascade lines 数据。 示例输出:
linesSuggested:给定日期内建议的代码行数。 linesAccepted:给定日期内采纳的代码行数。

来源:cascade_runs

使用 cascade_runs 查询模型用量、credit 消耗和模式相关数据。 示例输出:
day: 运行日期。 model: 该消息使用的模型。 mode: 运行模式。可以是 CONVERSATIONAL_PLANNER_MODE_DEFAULT (写模式) 、CONVERSATIONAL_PLANNER_MODE_READ_ONLY (只读模式) 、CONVERSATIONAL_PLANNER_MODE_NO_TOOL (旧版模式) 或 UNKNOWN 之一。 messagesSent: 已发送的消息数。 cascadeId: 运行的 ID。此 id 可用于了解已启动了多少个不同的会话 (而不是用户发送了多少次消息) 。 promptsUsed: 已使用的 credits 数量。该值以分为单位返回。例如,0.25 credits 会返回为 25,而 1 credit 会返回为 100。 api 返回的数据是原始格式,因此可能会出现 “UNKNOWN” 值。如果你将此数据源用于你自己的指标,建议按你关注的具体指标进行聚合 (例如,汇总 promptsUsed 字段以了解用户用量规律,汇总 messagesSent 以了解用户参与度等) ,因为 mode 和 prompt 数据可能会分散在多个条目中。

来源:cascade_tool_usage

使用 cascade_tool_usage 查询工具用量数据。请注意,返回结果是所提供时间段内工具使用情况的汇总计数。 示例输出:
tool: 该消息使用的工具。 count: 该工具的使用次数。 以下是返回的枚举值及其在 UI 中显示的易读名称映射:
  • CODE_ACTION: ‘代码编辑’
  • VIEW_FILE: ‘查看文件’
  • RUN_COMMAND: ‘运行命令’
  • FIND: ‘查找工具’
  • GREP_SEARCH: ‘Grep 搜索’
  • VIEW_FILE_OUTLINE: ‘查看文件大纲’
  • MQUERY: ‘Riptide’
  • LIST_DIRECTORY: ‘列出目录’
  • MCP_TOOL: ‘MCP 工具’
  • PROPOSE_CODE: ‘建议代码’
  • SEARCH_WEB: ‘搜索 Web’
  • MEMORY: ‘记忆’
  • PROXY_WEB_SERVER: ‘Browser 预览’
  • DEPLOY_WEB_APP: ‘部署 Web 应用’

自定义分析 API 规范

某些数据源支持通过自定义分析 API 执行自定义查询。 选择、筛选、聚合和排序的完整结构定义位于下一节,并以 JSON 格式提供。三个数据源各自的示例查询以及查询调试提示将在文档末尾给出。
DATA_SOURCE:根据你要查找的是自动补全、聊天、Command、PCW 还是 Cascade 数据,选择 USER_DATA、CHAT_DATA、COMMAND_DATA、PCW_DATA 或 CASCADE_DATA 之一。 SERVICE_KEY:服务密钥——Admin 用户可以在团队设置中创建新的服务密钥。该服务密钥的角色必须具有 “Analytics Read” 权限。 GROUP_NAME:要筛选的组名称。此字段可选。

架构

选择项

选择项为必填项。每个选择项都对应一个要查询的值。
FIELD_NAME:你要查询的字段。请参阅下方的“可用字段”部分。 NAME:字段的别名。如果未指定,则默认为 <AGGREGATION_FUNCTION>_<FIELD_NAME> 的小写形式,例如 sum_num_acceptances。必须与所有其他字段名和聚合名称区分开。 AGGREGATION_FUNCTION:应为 UNSPECIFIED、COUNT、SUM、AVG、MAX、MIN 之一。如果未提供 “aggregation_function”,则默认为 UNSPECIFIED。

过滤器

过滤器用于缩小数据范围,使其仅包含满足特定条件的元素。该项为可选。
NAME:你要筛选的字段名称。如果筛选项与某个 Selection/Aggregation 相同,则该值必须与该字段/聚合的名称一致。 VALUE:要比较的值。 FILTER:EQUAL、NOT_EQUAL、GREATER_THAN、LESS_THAN、GE (大于或等于) 、LE (小于或等于) 之一。

聚合

聚合用于根据指定条件将数据分组。此项为可选。
FIELD_NAME:你要查询的字段。请参阅“可用字段”部分。 NAME:该字段的别名。必须与所有其他字段名和聚合名称区分开。

可用字段

用户数据

来自 USER_DATA 数据源的所有数据都会按用户、按小时聚合。 注意:PCW (代码编写百分比) 现在有单独的表,不再依赖 user_data 表。

聊天数据

注意,聊天数据 API 中提供的所有数据都针对聊天模型的响应,而不是用户提出的问题。

命令数据

请注意,Command Data 数据源包含所有命令,包括被拒绝的命令。可使用 “accepted” 字段筛选出仅已接受的命令。

PCW 数据

有效选项

Cascade Data

Cascade Data 数据源中,每条发送到 Cascade 的消息都会有一个对应条目。
要访问下方列出的所有字段,请确保你使用的是 1.11.2 或更高版本。

有效过滤条件

如需按日期过滤,请使用 start_timestamp 和 end_timestamp,格式应为 RFC 3339 (例如 2023-01-01T00:00:00Z,参见下方示例) 。

示例

用户数据

此查询计算了 2024 年 1 月整个月的总体代码编写百分比。示例响应 (为便于阅读,已格式化为 JSON) :

聊天数据

此查询显示按 IDE 分组的通过 “Generate Docstring” 代码透镜接受的代码行数 (全部时间) 。 响应示例:

命令数据

此查询按编程语言分组,统计 edit 命令中新增和删除的行数。 示例响应:

PCW 数据

此查询会返回 PCW (代码编写百分比) 数据,以及按 go 语言筛选后的字节数。 响应示例:

查询调试

从 1.10.0 开始,无效查询会返回错误消息。本节介绍一些常见错误消息、它们的含义,以及如何调试对应的查询。
错误消息说明
at least one field or aggregation is required未检测到任何 selection 或 aggregation——请确保查询请求中至少包含一个。
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM某个 selection 使用了无效的聚合函数。在这个例子中,我们尝试对 “ide” 字段使用 SUM,但该字段只支持 COUNT 和 UNSPECIFIED。
invalid query table: QUERY_DATA_SOURCE_UNSPECIFIEDdata_source 字段很可能有拼写错误,请再次检查。
all selection fields should have an aggregation function, or none of them should如果有多个 selection 字段,要么全部都包含 aggregation_function,要么全部都不包含。例如,下面这个 selection 是无效的,因为 num_acceptances 被求和了,而 num_lines_accepted 没有:
注意:PCW 始终被视为已聚合。如果未显式选择 aggregation_function,则会被视为 unspecified。如果你想同时获取这两个字段的信息,请使用两个单独的查询。
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM并不是每个字段都支持所有聚合函数;对应关系请参见可用字段部分。在这个例子中,查询对 “ide” 字段使用了 QUERY_AGGREGATION_SUM 聚合函数,这是无效的。
tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date]符合 “distinct_*” 模式的字段不能放在 aggregations 部分;该错误会提示你改用哪些字段进行聚合。因此,不要使用:
请改为尝试:
duplicate field alias for selection/aggregation: num_acceptances所有 selection 和 aggregation 都必须使用不同的名称。请注意,如果未指定 name,默认会设置为 <AGGREGATION_FUNCTION>_<FIELD_NAME>。
invalid group name: GroupName未找到指定名称的组,请再次检查拼写。