#!/usr/bin/env python # -*- coding: utf-8 -*- """ AI 指标报告脚本 聚合最近一段时间的 AI 使用与成本指标,供 ai-metrics-report Skill 调用。 当前版本主要复用 TokenMonitor 的系统统计能力。 """ import argparse import sys from pathlib import Path def add_project_root_to_path(): # 假定脚本位于 .claude/skills/ai-metrics-report/scripts/ 下 script_path = Path(__file__).resolve() project_root = script_path.parents[4] if str(project_root) not in sys.path: sys.path.insert(0, str(project_root)) def main(): parser = argparse.ArgumentParser(description="Generate AI metrics report.") parser.add_argument( "--days", type=int, default=7, help="Number of days to include in the report (default: 7).", ) args = parser.parse_args() add_project_root_to_path() from src.analytics.token_monitor import TokenMonitor monitor = TokenMonitor() stats = monitor.get_system_token_stats(days=args.days) or {} print(f"=== AI 指标报告(最近 {args.days} 天) ===\n") total_tokens = stats.get("total_tokens", 0) total_cost = stats.get("total_cost", 0.0) total_requests = stats.get("total_requests", 0) successful_requests = stats.get("successful_requests", 0) failed_requests = stats.get("failed_requests", 0) success_rate = stats.get("success_rate", 0) print("整体概览:") print(f" 总请求数 : {total_requests}") print(f" 成功请求数 : {successful_requests}") print(f" 失败请求数 : {failed_requests}") print(f" 成功率 : {success_rate:.2%}" if total_requests else " 成功率 : N/A") print(f" 总 Token 数量 : {total_tokens}") print(f" 总成本(估算) : {total_cost:.4f} 元") print() # 模型使用分布 model_usage = stats.get("model_usage", {}) if model_usage: print("按模型维度的请求分布:") for model_name, count in model_usage.items(): pct = (count / total_requests) * 100 if total_requests else 0 print(f" - {model_name}: {count} 次 ({pct:.1f}%)") print() # 按日期的成本趋势(如有) daily_usage = stats.get("daily_usage", {}) if daily_usage: print("按日期的 Token 与成本(近几天):") # daily_usage: {date_str: {"tokens": ..., "cost": ...}} for date_str in sorted(daily_usage.keys()): day_data = daily_usage[date_str] tokens = day_data.get("tokens", 0) cost = day_data.get("cost", 0.0) print(f" {date_str}: tokens={tokens}, cost={cost:.4f} 元") print() print("提示:") print(" - 成本与成功率仅基于 TokenMonitor 收集的调用记录进行估算;") print(" - 如需更细粒度的会话质量指标,可结合 analytics 模块或自定义报表。") if __name__ == "__main__": main()