《Cursor文档》-AI Code Tracking API

AI Code Tracking API 可让你跟踪团队各代码仓库中 AI 生成的代码贡献,包括每次提交的 AI 用量以及细粒度的已接受 AI 更改。

  • AI Code Tracking API 使用 Basic 认证,以你的 API 密钥作为用户名,与 Admin API 的认证方式相同。
  • 有关创建 API 密钥、身份验证方法、速率限制和最佳实践的详细信息,请参阅 API Overview
  • 可用性:仅限企业版;如需获取访问权限,请联系销售
  • 状态:Alpha (响应结构和字段可能会更改)
  • 工作区限制:仅计算工作区根目录顶层 Git 代码仓库的指标。目前不支持多根工作区。

端点

获取 AI 提交指标 (JSON,分页)

/analytics/ai-code/commits

获取按提交聚合的指标,用于将代码行归因于 TAB、COMPOSER 和非 AI。

参数

startDate string | date

ISO 日期字符串、字面量 “now”,或 “7d” 等相对天数 (表示当前时间减 7 天) 。默认值:now - 7 days

endDate string | date

ISO 日期字符串、字面量 “now”,或 “0d” 等相对天数。默认值:now

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页结果数。默认值:100,最大值:1000

user string

可选:按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123…) 或数字 ID (例如 42)

响应字段

字段 类型 描述
commitHash string Git 提交哈希
userId string 编码用户 ID (例如 user_abc123)
userEmail string 用户电子邮件地址
repoName string null 代码仓库名称
branchName string null 分支名称
isPrimaryBranch boolean null 是否为主分支
commitSource “ide” “cli” “cloud” 提交来源
totalLinesAdded number 提交中新增的总行数
totalLinesDeleted number 提交中删除的总行数
tabLinesAdded number 通过 TAB 补全新增的行
tabLinesDeleted number 通过 TAB 补全删除的行
composerLinesAdded number 通过 Composer 新增的行
composerLinesDeleted number 通过 Composer 删除的行
nonAiLinesAdded number null 新增的非 AI 代码行
nonAiLinesDeleted number null 删除的非 AI 代码行
message string null 提交说明
commitTs string null 提交时间戳 (ISO 格式)
createdAt string 数据摄取时间戳 (ISO 格式)
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:

响应:

{
  "items": [
    {
      "commitHash": "a1b2c3d4",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "repoName": "company/repo",
      "branchName": "main",
      "isPrimaryBranch": true,
      "commitSource": "ide",
      "totalLinesAdded": 120,
      "totalLinesDeleted": 30,
      "tabLinesAdded": 50,
      "tabLinesDeleted": 10,
      "composerLinesAdded": 40,
      "composerLinesDeleted": 5,
      "nonAiLinesAdded": 30,
      "nonAiLinesDeleted": 15,
      "message": "Refactor: extract analytics client",
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

下载 AI 提交指标 (CSV,流式传输)

/analytics/ai-code/commits.csv

以 CSV 格式下载提交指标数据,适用于大规模数据提取。

参数

startDate string | date

ISO 日期字符串、字面量 “now”,或 “7d” 等相对天数 (表示当前时间减 7 天) 。默认值:now - 7 days

endDate string | date

ISO 日期字符串、字面量 “now”,或 “0d” 等相对天数。默认值:now

user string

可选:按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123…) 或数字 ID (例如 42)

响应头

  • Content-Type: text/csv; charset=utf-8

CSV 列

类型 描述
commit_hash string Git 提交哈希
user_id string 编码用户 ID
user_email string 用户电子邮件地址
repo_name string 代码仓库名称
branch_name string 分支名称
is_primary_branch boolean 是否为主分支
commit_source string 提交来源 (ideclicloud)
total_lines_added number 提交中新增的总行数
total_lines_deleted number 提交中删除的总行数
tab_lines_added number 通过 Tab 补全新增的行数
tab_lines_deleted number 通过 Tab 补全删除的行数
composer_lines_added number 通过 Composer 新增的行数
composer_lines_deleted number 通过 Composer 删除的行数
non_ai_lines_added number 新增的非 AI 代码行数
non_ai_lines_deleted number 删除的非 AI 代码行数
message string 提交信息
commit_ts string 提交时间戳 (ISO 格式)
created_at string 数据摄取时间戳 (ISO 格式)
curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \
  -u YOUR_API_KEY: \
  -o commits.csv

CSV 输出示例:

commit_hash,commit_source,user_id,user_email,repo_name,branch_name,is_primary_branch,total_lines_added,total_lines_deleted,tab_lines_added,tab_lines_deleted,composer_lines_added,composer_lines_deleted,non_ai_lines_added,non_ai_lines_deleted,message,commit_ts,created_at
a1b2c3d4,ide,user_3k9x8q...,developer@company.com,company/repo,main,true,120,30,50,10,40,5,30,15,"Refactor: extract analytics client",2025-07-30T14:12:03.000Z,2025-07-30T14:12:30.000Z
e5f6g7h8,cloud,user_3k9x8q...,developer@company.com,company/repo,feature-branch,false,85,15,30,5,25,3,30,7,"Add error handling",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

获取 AI 代码更改指标 (JSON,分页)

/analytics/ai-code/changes

获取按确定性 changeId 分组的细粒度已接受 AI 更改。可用于独立于提交分析已接受的 AI 事件。

参数

startDate string | date

ISO 日期字符串、字面量“now”或“7d”等相对天数 (表示当前时间减 7 天) 。默认值:当前时间减 7 天

endDate string | date

ISO 日期字符串、字面量“now”或“0d”等相对天数。默认值:now

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页结果数。默认值:100,最大值:1000

user string

可选按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123…) 或数字 ID (例如 42)

响应字段

字段 类型 描述
changeId string 更改的确定性 ID
userId string 编码的用户 ID (例如 user_abc123)
userEmail string 用户的电子邮件地址
source “TAB” “COMPOSER” AI 更改的来源
model string null 使用的 AI 模型
totalLinesAdded number 新增的总行数
totalLinesDeleted number 删除的总行数
createdAt string 数据摄取时间戳 (ISO 格式)
metadata Array 文件元数据 (隐私模式下可能省略 fileName)
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:

响应:

{
  "items": [
    {
      "changeId": "749356201",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "source": "COMPOSER",
      "model": null,
      "totalLinesAdded": 18,
      "totalLinesDeleted": 4,
      "createdAt": "2025-07-30T15:10:12.000Z",
      "metadata": [
        {
          "fileName": "src/analytics/report.ts",
          "fileExtension": "ts",
          "linesAdded": 12,
          "linesDeleted": 3
        },
        {
          "fileName": "src/analytics/ui.tsx",
          "fileExtension": "tsx",
          "linesAdded": 6,
          "linesDeleted": 1
        }
      ]
    }
  ],
  "totalCount": 128,
  "page": 1,
  "pageSize": 200
}

下载 AI 代码更改指标 (CSV,流式)

/analytics/ai-code/changes.csv

以 CSV 格式下载更改指标数据,适用于大规模数据提取。

参数

startDate string | date

ISO 日期字符串、字面值“now”或“7d”等相对天数 (表示当前时间减 7 天) 。默认值:当前时间减 7 天

endDate string | date

ISO 日期字符串、字面值“now”或“0d”等相对天数。默认值:now

user string

可选:按单个用户筛选。支持电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123…) 或数字 ID (例如 42)

响应头

  • Content-Type: text/csv; charset=utf-8

CSV 列

类型 描述
change_id string 更改的确定性 ID
user_id string 编码的用户 ID
user_email string 用户的电子邮件地址
source string AI 更改的来源 (TAB 或 COMPOSER)
model string 所用的 AI 模型
total_lines_added number 新增的总行数
total_lines_deleted number 删除的总行数
created_at string 数据摄取时间戳 (ISO 格式)
metadata_json string 元数据条目组成的 JSON 字符串化数组
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \
  -u YOUR_API_KEY: \
  -o changes.csv

CSV 输出示例:

change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json
749356201,user_3k9x8q...,developer@company.com,COMPOSER,gpt-4o,18,4,2025-07-30T15:10:12.000Z,"[{""fileName"":""src/analytics/report.ts"",""fileExtension"":""ts"",""linesAdded"":12,""linesDeleted"":3},{""fileName"":""src/analytics/ui.tsx"",""fileExtension"":""tsx"",""linesAdded"":6,""linesDeleted"":1}]"
749356202,user_3k9x8q...,developer@company.com,TAB,,8,2,2025-07-30T15:08:45.000Z,"[{""fileName"":""src/utils/helpers.ts"",""fileExtension"":""ts"",""linesAdded"":8,""linesDeleted"":2}]"

获取提交详情

/analytics/ai-code/commits/:commitHash

获取一个或多个提交的详细信息,包括 blame 标注和所引用对话的元数据。

此端点处于有限 Alpha 阶段,仅对部分用户开放。响应结构可能会变更。

路径参数

commitHash string

单个提交哈希,或以逗号分隔的哈希列表 (例如 abc123,def456)

查询参数

branch string

可选,按分支名称筛选

响应字段

返回一个包含 commitsconversations 数组的对象。

字段 类型 描述
commits array 包含 blame 标注的提交对象数组
commits[].commitSource “ide” “cli” “cloud” 提交的来源。
commits[].rangeAnnotations array 该提交的文件级 blame 数据
commits[].rangeAnnotations[].filePath string 代码仓库中文件的路径
commits[].rangeAnnotations[].groups array 标注群组数组
commits[].rangeAnnotations[].groups[].conversationId string null 生成此代码的对话 ID
commits[].rangeAnnotations[].groups[].model string null 用于生成代码的 AI 模型
commits[].rangeAnnotations[].groups[].operationType string 执行的操作类型
commits[].rangeAnnotations[].groups[].ranges array 此标注影响的行范围数组
commits[].rangeAnnotations[].groups[].ranges[].start number 起始行号
commits[].rangeAnnotations[].groups[].ranges[].end number 结束行号
conversations array 所有被引用对话的元数据
conversations[].id string 唯一对话标识符
conversations[].title string null 对话标题
conversations[].tldr string null 简短摘要
conversations[].overview string null 详细概述
conversations[].summaryBullets array null 摘要要点数组

即使请求单个提交,响应格式也保持一致。

单次提交:

curl -X GET "https://api.cursor.com/analytics/ai-code/commits/0aabf603dc906e05bf5e4d9fd423fdd517f2e43f?branch=main" \
  -u YOUR_API_KEY:

多个提交:

curl -X GET "https://api.cursor.com/analytics/ai-code/commits/abc123,def456,ghi789" \
  -u YOUR_API_KEY:

响应:

{
  "commits": [
    {
      "commitHash": "0aabf603dc906e05bf5e4d9fd423fdd517f2e43f",
      "commitSource": "ide",
      "rangeAnnotations": [
        {
          "filePath": "src/analytics/report.ts",
          "groups": [
            {
              "conversationId": "conv_abc123",
              "model": "gpt-4o",
              "operationType": "insert",
              "ranges": [
                { "start": 10, "end": 25 },
                { "start": 42, "end": 58 }
              ]
            }
          ]
        }
      ]
    }
  ],
  "conversations": [
    {
      "id": "conv_abc123",
      "title": "Refactor analytics module",
      "tldr": "Extracted report generation into separate functions",
      "overview": "Refactored the analytics module to improve maintainability by extracting report generation logic.",
      "summaryBullets": [
        "Created dedicated report generator class",
        "Added unit tests for new functions",
        "Updated imports across affected files"
      ]
    }
  ]
}

通用查询参数

所有端点均通过查询字符串接受相同的查询参数:

参数 类型 必填 描述
startDate string date ISO 日期 string、字面量“now”或“7d”等相对天数 (表示当前时间 - 7 天) 。默认值:当前时间 - 7 天
endDate string date ISO 日期 string、字面量“now”或“0d”等相对天数。默认值:当前时间
page number 页码 (从 1 开始) 。默认值:1
pageSize number 每页结果数。默认值:100,最大值:1000
user string 可选按单个用户筛选。接受电子邮件 (例如 developer@company.com) 、编码 ID (例如 user_abc123…) 或数字 ID (例如 42)

响应中的 userId 为带有 user_ 前缀的编码外部 ID。该 ID
可稳定用于 API 调用。

语义与指标计算方式

  • 来源:“TAB”表示已接受的内联补全;“COMPOSER”表示已接受的智能体编辑 diff
  • 行数指标:tabLinesAdded/Deleted 和 composerLinesAdded/Deleted 分别计数;nonAiLinesAdded/Deleted 计算为 max(0, totalLines - AI 行数)
  • 隐私模式:如果在客户端中启用,部分元数据 (如 fileName) 可能会被省略
  • 分支信息:当前分支等于仓库默认分支时,isPrimaryBranch 为 true;如果仓库信息不可用,该值可能为 undefined

你可以扫描该文件,了解如何检测和报告提交与更改。

提示

  • 使用 user 参数可快速在所有端点中筛选特定用户
  • 对于大规模数据提取,建议使用 CSV 端点——服务器会以每页 10,000 条记录的形式流式传输数据
  • 如果客户端无法解析默认分支,isPrimaryBranch 可能为未定义
  • commitTs 是提交时间戳;createdAt 是数据在我们服务器上的接收时间
  • 客户端启用隐私模式时,某些字段可能缺失
  • 提交哈希并非唯一且不可变更。例如,如果你通过添加额外信息修订提交,可能会看到同一提交出现两次。
  • 即使提交被修订,提交时间戳也不会改变。

更新日志

  • Alpha 版本:提供提交和更改的初始端点。响应结构可能会根据反馈调整

AI Code Tracking 适用于企业版方案

联系我们的团队,获取详细的 AI 用量指标。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜