StatsReader
StatsReader 用于读取 AI 代码生成统计数据。
方法
GetDailyStats
获取指定日期的统计数据。
go
func (r *StatsReader) GetDailyStats(date time.Time) (*DailyStats, error)参数:
date- 日期
返回值:
*DailyStats- 统计数据error- 错误信息
示例:
go
stats, err := client.Stats().GetDailyStats(time.Now())
if err != nil {
log.Fatal(err)
}
fmt.Printf("Tab 建议行数: %d\n", stats.TabSuggestedLines)
fmt.Printf("Tab 接受行数: %d\n", stats.TabAcceptedLines)
fmt.Printf("接受率: %.2f%%\n", stats.TabAcceptanceRate*100)GetStatsRange
获取日期范围内的统计数据。
go
func (r *StatsReader) GetStatsRange(start, end time.Time) ([]DailyStats, error)参数:
start- 开始日期end- 结束日期
返回值:
[]DailyStats- 统计数据列表error- 错误信息
示例:
go
start := time.Now().AddDate(0, 0, -7)
end := time.Now()
stats, err := client.Stats().GetStatsRange(start, end)
if err != nil {
log.Fatal(err)
}
for _, stat := range stats {
fmt.Printf("%s: %d 行被接受\n",
stat.Date.Format("2006-01-02"),
stat.TabAcceptedLines)
}GetTotalStats
获取总计统计数据。
go
func (r *StatsReader) GetTotalStats() (*TotalStats, error)返回值:
*TotalStats- 总计统计error- 错误信息
示例:
go
total, err := client.Stats().GetTotalStats()
if err != nil {
log.Fatal(err)
}
fmt.Printf("总天数: %d\n", total.TotalDays)
fmt.Printf("总接受率: %.2f%%\n", total.OverallAcceptanceRate*100)CalculateAcceptanceRate
计算接受率。
go
func (r *StatsReader) CalculateAcceptanceRate(stats *DailyStats) float64参数:
stats- 统计数据
返回值:
float64- 接受率(0-1)
示例:
go
stats, _ := client.Stats().GetDailyStats(time.Now())
rate := client.Stats().CalculateAcceptanceRate(stats)
fmt.Printf("接受率: %.2f%%\n", rate*100)GetRecentCommits
获取最近的提交信息。
go
func (r *StatsReader) GetRecentCommits() ([]RecentCommit, error)返回值:
[]RecentCommit- 提交列表error- 错误信息
示例:
go
commits, err := client.Stats().GetRecentCommits()
if err != nil {
log.Fatal(err)
}
for _, commit := range commits {
fmt.Printf("Commit: %s - %s\n", commit.Hash, commit.Message)
}数据结构
DailyStats
go
type DailyStats struct {
Date time.Time // 日期
TabSuggestedLines int // Tab 建议行数
TabAcceptedLines int // Tab 接受行数
ComposerSuggestedLines int // Composer 建议行数
ComposerAcceptedLines int // Composer 接受行数
TabAcceptanceRate float64 // Tab 接受率
ComposerAcceptanceRate float64 // Composer 接受率
}TotalStats
go
type TotalStats struct {
TotalDays int // 总天数
TotalTabSuggested int // Tab 总建议行数
TotalTabAccepted int // Tab 总接受行数
TotalComposerSuggested int // Composer 总建议行数
TotalComposerAccepted int // Composer 总接受行数
OverallAcceptanceRate float64 // 总体接受率
}RecentCommit
go
type RecentCommit struct {
Hash string // 提交哈希
Message string // 提交消息
Author string // 作者
Timestamp time.Time // 时间戳
}完整示例
go
package main
import (
"fmt"
"log"
"time"
cursor "github.com/vibe-coding-labs/go-cursor-sdk"
)
func main() {
client, err := cursor.NewCursorClient(nil)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// 获取今天的统计
today, err := client.Stats().GetDailyStats(time.Now())
if err != nil {
log.Fatal(err)
}
fmt.Printf("今日统计:\n")
fmt.Printf(" Tab 建议: %d 行\n", today.TabSuggestedLines)
fmt.Printf(" Tab 接受: %d 行\n", today.TabAcceptedLines)
fmt.Printf(" 接受率: %.2f%%\n", today.TabAcceptanceRate*100)
// 获取最近 7 天的统计
start := time.Now().AddDate(0, 0, -7)
end := time.Now()
stats, err := client.Stats().GetStatsRange(start, end)
if err != nil {
log.Fatal(err)
}
fmt.Printf("\n最近 7 天统计:\n")
for _, stat := range stats {
rate := client.Stats().CalculateAcceptanceRate(&stat)
fmt.Printf(" %s: %.2f%%\n",
stat.Date.Format("2006-01-02"),
rate*100)
}
// 获取总计统计
total, err := client.Stats().GetTotalStats()
if err != nil {
log.Fatal(err)
}
fmt.Printf("\n总计统计:\n")
fmt.Printf(" 总天数: %d\n", total.TotalDays)
fmt.Printf(" 总接受率: %.2f%%\n", total.OverallAcceptanceRate*100)
}相关文档
- DailyStats 模型 - DailyStats 数据结构详解
- 分析 AI 统计 - 实际使用示例