mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-17 11:37:20 +08:00
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"cursor/internal/appdata"
|
|
"cursor/internal/historymetrics"
|
|
)
|
|
|
|
func main() {
|
|
flags := flag.NewFlagSet("historymetrics", flag.ExitOnError)
|
|
usagePath := flags.String("usage", appdata.UsageFilePath(), "usage JSON file to read")
|
|
if err := flags.Parse(os.Args[1:]); err != nil {
|
|
exitf(err.Error())
|
|
}
|
|
|
|
if flags.NArg() > 0 {
|
|
exitf("positional history scan targets are no longer supported; usage totals come from history/usage.json")
|
|
}
|
|
|
|
summary, err := historymetrics.LoadUsageSummary(*usagePath)
|
|
if err != nil {
|
|
exitf(err.Error())
|
|
}
|
|
|
|
fmt.Printf("Usage JSON file: %s\n\n", strings.TrimSpace(*usagePath))
|
|
|
|
fmt.Println("Overall")
|
|
fmt.Printf("- Provider calls total: %s\n", formatNumber(int64(summary.ProviderCallsTotal)))
|
|
fmt.Printf("- Turns total: %s\n", formatNumber(int64(summary.TurnsTotal)))
|
|
fmt.Printf("- Cache hit rate: %s\n", formatPercent(summary.CacheHitRate))
|
|
fmt.Printf("- Cache read tokens: %s\n", formatNumber(summary.CacheReadTokens))
|
|
fmt.Printf("- Cache write tokens: %s\n", formatNumber(summary.CacheWriteTokens))
|
|
fmt.Printf("- Prompt tokens total: %s\n", formatNumber(summary.PromptTokensTotal))
|
|
fmt.Printf("- Request tokens total: %s\n", formatNumber(summary.RequestTokensTotal))
|
|
}
|
|
|
|
func exitf(message string) {
|
|
fmt.Fprintf(os.Stderr, "historymetrics failed: %s\n", strings.TrimSpace(message))
|
|
os.Exit(1)
|
|
}
|
|
|
|
func formatNumber(value int64) string {
|
|
sign := ""
|
|
if value < 0 {
|
|
sign = "-"
|
|
value = -value
|
|
}
|
|
digits := fmt.Sprintf("%d", value)
|
|
if len(digits) <= 3 {
|
|
return sign + digits
|
|
}
|
|
parts := make([]string, 0, (len(digits)+2)/3)
|
|
for len(digits) > 3 {
|
|
parts = append([]string{digits[len(digits)-3:]}, parts...)
|
|
digits = digits[:len(digits)-3]
|
|
}
|
|
parts = append([]string{digits}, parts...)
|
|
return sign + strings.Join(parts, ",")
|
|
}
|
|
|
|
func formatPercent(value *float64) string {
|
|
if value == nil {
|
|
return "n/a"
|
|
}
|
|
return fmt.Sprintf("%.2f%%", *value*100)
|
|
}
|