Skip to content
FunCoding

Search

Search docs, Skills and MCP

API 报表结构与基础字段

区分用户、聚合、28 天封装和仓库记录,正确处理事件数与可选字段。

This page has not been translated into English yet. The original Chinese version is shown below.

Copilot usage metrics 并非所有请求返回同一种 JSON。先识别报表粒度,再读取字段;逐用户报表没有聚合报表的全部字段,反之亦然。

报表族

报表结构与范围
Per-user 1-day / 28-day用户 ID、登录名、消耗、used_*、阶段和活动明细;没有活跃用户总数、pull_requests 或 totals_by_ai_adoption_phase
Enterprise / organization 1-day每个实体的日聚合记录,包含活跃人数、PR 与阶段汇总;没有单个 user_id / user_login / used_*
Enterprise / organization 28-day顶层报告窗口、生成时间、可选功能参与对象;day_totals 中放日聚合记录
User-teams 1-day用户与当日团队关系,用来构建团队指标
Repos 1-day每个当天有 PR 活动的仓库一条记录

一般报表用 day、enterprise_id 标识日期与企业,组织范围另带 organization_id。仓库报告还需按其特定 schema 处理没有企业归属时的字段,见PR 报表。

三种事件计数

字段计数内容
user_initiated_interaction_count主动发给模型的提示;打开面板、切换模式、打开 inline UI 或修改设置不计入
code_generation_activity_count独立生成事件,包括注释和 docstring;同一提示的多个代码块可分别计数
code_acceptance_activity_count内置 apply / insert / Copy 等接受动作;每次动作计一次,不包含操作系统手动 Ctrl+C

一个提示可产生多个代码块,agent 又可能不走逐条接受流程,因此三者不应被要求一一对应。需要计算行内接受率时,应在相应补全范围比较接受与生成,不能混入所有 agent 写入后再解释为“用户认可比例”。

ai_credits_used 仅逐用户报告提供,不按 feature / model / surface 拆分,用于消耗分析而非发票总额。

明细维度

totals_by_ide、totals_by_feature、totals_by_language_feature、totals_by_language_model、totals_by_model_feature 是不同数组。语言×功能数组没有 user_initiated_interaction_count;模型相关明细针对 Chat,不包括补全。

逐用户 IDE 条目可包含 last_known_ide_version 与 last_known_plugin_version,分别带版本与 sampled_at;聚合记录不提供这种用户版本对象。不要把最近采样版本当作全部历史事件都由该版本发出。

28 天封装示意

下面只展示官方字段组成的结构片段,不是完整接口返回:

{
  "report_start_day": "2025-09-04",
  "report_end_day": "2025-10-01",
  "day_totals": [
    {
      "day": "2025-10-01",
      "enterprise_id": "1",
      "daily_active_users": 2
    }
  ]
}

不要把 day_totals 的每天去重人数相加当作窗口独立用户数。逐用户 28 天报告则在用户记录上直接携带相关字段,不能照搬此聚合封装。

缺省、空数组与零

常规活动明细数组存在但可能为 [];可选功能字段还可能缺省或为 null。无匹配活动、未采集到详细遥测、功能数据尚不可用,不能都替换成同一个零值。

used_copilot_cloud_agent 与保留兼容性的 used_copilot_coding_agent 值相同,不应算两项活动。Review 主动/被动字段没有当天信号时可以为 null;专用客户端字段另见客户端指标。