Local Deep Research 指标仪表盘(Metrics Dashboard)实战指南:追踪 Token 成本、搜索健康度与研究质量
【免费下载链接】local-deep-research~95% on SimpleQA (e.g. Qwen3.6-27B on a 3090). Supports all local and cloud LLMs (llama.cpp, Ollama, Google, ...). 10+ search engines - arXiv, PubMed, your private documents. Everything Local & Encrypted.项目地址: https://gitcode.com/GitHub_Trending/lo/local-deep-research
本地深度研究(Local Deep Research)系统的 Metrics Dashboard 是一套内置的、完全本地化的分析与监控面板,围绕 LLM Token 用量与成本、多搜索引擎健康度、研究会话统计、用户星级评价与限流(Rate Limiting)状态提供一站式可视化。本指南以 docs/analytics-dashboard.md 为核心脉络,结合 metrics 路由源码 与相关测试,完整讲解从访问、读图、API 拉取到基于数据进行成本优化、搜索调优与研究质量改进的完整工作流。读完本文,你将能够熟练使用/metrics面板与全部 Analytics API,并理解这些指标在底层是如何被采集与聚合的。
一、仪表盘概述:能监控什么
Metrics Dashboard 追踪四类核心数据,覆盖研究活动从"钱"到"效果"的完整闭环:
- Token 用量与各 LLM 提供商的成本:输入/输出 Token 拆分、按模型与提供商的费用估算;
- 搜索引擎性能与健康度:各引擎的成功率、响应时间、限流状态;
- 研究会话统计:总研究次数、时长、完成状态、策略使用与查询复杂度;
- 用户满意度评分:1~5 星评价与反馈文本分析;
- 限流状态:实时等待时间与历史限流事件。
访问方式
- Web 界面:浏览器访问
/metrics; - 直接 URL:
http://localhost:5000/metrics。
从源码看,所有指标接口都挂在同一个 FastAPI 路由下:metrics.py 中声明router = APIRouter(prefix="/metrics", tags=["metrics"]),且每个接口都通过require_auth依赖校验登录会话 Cookie,因此直接 curl 前需要先完成登录认证。
二、主面板组件与时间过滤
2.1 系统概览卡片(Overview Cards)
主仪表盘首屏以卡片形式呈现关键指标:
| 卡片 | 说明 |
|---|---|
| Total Tokens Used | 总 Token 消耗量,可点击展开查看按模型的输入/输出拆分 |
| Total Researches | 已完成的研究会话总数 |
| Average Response Time | 系统平均响应时间,用于评估性能 |
| Success Rate | LLM 调用与操作的成功率百分比 |
| User Satisfaction | 用户反馈的平均星级评分 |
| Estimated Costs | 基于 Token 与模型单价估算的成本,按提供商拆分 |
这些指标的数据来源与聚合逻辑可参考 dashboard-improvements.md:摘要卡片、可展开 Token 明细、响应时间(毫秒转秒显示)、成功率监控均已在实现清单中。更细化的增强追踪方案见 enhanced-token-tracking.md。
2.2 时间范围与模式过滤
面板支持按时间窗口过滤分析数据:
- 最近 7 天
- 最近 30 天
- 最近 3 个月
- 最近 1 年
- 全部时间(All time)
此外还支持按研究模式(Research mode)过滤:
- Quick Summary(快速摘要)
- Detailed(详细研究)
- All(全部)
在源码中,时间与模式过滤由 query_utils.py 的get_period_days与get_time_filter_condition等工具函数实现,聚合逻辑的正确性由 tests/web/routers/test_metrics_analytics_aggregation.py 等测试覆盖。
三、三个详细分析子页面
3.1 星级评价分析(Star Reviews Analytics)
访问路径:/metrics/star-reviews。
提供的功能:
- 5 星评分分布(rating distribution);
- 按时间段统计的平均评分;
- 评分趋势可视化;
- 按模型与搜索引擎拆分的评分表现;
- 用户反馈文本分析。
对应底层接口GET /metrics/api/star-reviews,其分析逻辑(get_rating_analytics(period, research_mode, username)返回平均分、评分分布、满意度统计等)位于 metrics.py,相关数据模型ResearchRating定义于 database/models/metrics.py,并有 tests/web/routers/test_metrics_star_reviews.py 验证其行为。
3.2 成本分析(Cost Analytics)
访问路径:/metrics/costs。
追踪的指标包括:
- 按提供商(OpenAI、Anthropic 等)的成本拆分;
- Token 用量明细(输入/输出/合计);
- 成本随时间的变化趋势;
- 特定模型的成本分析;
- 不同研究类型的成本对比。
成本计算的底层实现依赖 metrics/query_utils.py 中的价格表与 tests/metrics/test_cost_calculator.py、tests/metrics/test_pricing_fetcher.py 等测试;价格数据可在线更新并缓存,具体机制可阅读 tests/metrics/test_pricing_cache.py。
3.3 限流仪表盘(Rate Limiting Dashboard)
实时监控内容:
- 各搜索引擎的限流状态;
- 每个引擎的成功/失败率;
- 等待时间(Wait Time)追踪;
- 引擎健康度指示器:
| 状态 | 含义 | 判定标准 |
|---|---|---|
| 🟢 Healthy | 健康 | 成功率 > 95% |
| 🟡 Degraded | 降级 | 成功率 70%~95% |
| 🔴 Poor | 差 | 成功率 < 70% |
四、被追踪的指标明细
Token 指标
- 总 Token 数(输入 + 输出);
- 按模型统计的 Token 用量;
- 每次研究的平均 Token 数;
- Token 消耗趋势。
Token 计数的实现位于local_deep_research/metrics模块(TokenCounter在 metrics.py 中被导入使用),采集与入库逻辑可参见 database/thread_metrics.py 与 tests/metrics/test_token_counter.py 系列测试。
搜索指标
- 搜索引擎使用频率;
- 每个引擎的响应时间;
- 成功/失败率;
- 结果数量统计。
研究指标
- 研究会话总数;
- 研究时长;
- 完成状态;
- 策略使用情况(ResearchStrategy);
- 查询复杂度。
性能指标
- API 响应时间;
- 系统延迟;
- 错误率;
- 吞吐量统计。
五、数据导出
5.1 研究报告导出
单次研究结果支持三种导出格式:
- PDF:带引用的格式化报告;
- Markdown:带格式的原始 Markdown;
- JSON:通过 API 获取的结构化数据。
5.2 分析数据 API 导出
所有分析数据均可通过 API 访问。这些端点全部位于 metrics 路由的/metrics前缀之下(metrics.py 中的APIRouter(prefix="/metrics")),并且都要求已认证的会话 Cookie:
# 获取总体指标 curl http://localhost:5000/metrics/api/metrics # 获取特定研究指标 curl http://localhost:5000/metrics/api/metrics/research/{research_id} # 获取增强追踪数据 curl http://localhost:5000/metrics/api/metrics/enhanced # 获取评分分析 curl http://localhost:5000/metrics/api/star-reviews # 获取成本分析 curl http://localhost:5000/metrics/api/cost-analytics # 获取限流状态 curl http://localhost:5000/metrics/api/rate-limiting六、可视化方案:Chart.js
仪表盘使用Chart.js渲染图表,覆盖四类可视化:
- 折线图(Line Charts):Token 用量与搜索活动随时间的变化;
- 柱状图(Bar Charts):模型用量对比、成本拆分;
- 饼图(Pie Charts):提供商分布、搜索引擎使用占比;
- 进度指示器(Progress Indicators):成功率、健康状态。
前端页面模板位于 web/templates/pages/metrics.html,配套的运行时测试可见 tests/js/pages/metrics-dashboard-runtime.test.js 与 tests/ui_tests/test_metrics_chart.js。
七、成本追踪:自动计算与支持提供商
7.1 自动成本计算
成本估算基于四个输入:
- 提供商定价(OpenAI、Anthropic 等);
- 实际 Token 用量;
- 模型专属费率;
- 输入与输出 Token 分别计费。
7.2 支持的提供商
| 提供商 | 代表模型 | 备注 |
|---|---|---|
| OpenAI | GPT-3.5、GPT-4 | 按模型费率计费 |
| Anthropic | Claude 系列 | 按模型费率计费 |
| Gemini 系列 | 按模型费率计费 | |
| 本地模型(Local) | — | 显示为 $0(本地推理无 API 费用) |
从源码结构可以推断:价格数据与成本计算模块独立成包,相关测试覆盖广泛,例如 tests/metrics/test_cost_calculator.py、tests/metrics/pricing/test_pricing_fetcher_coverage.py,以及 tests/web/routers/test_metrics_rate_limit_and_cost_endpoints.py 对成本端点的集成验证。
八、限流分析与管理
8.1 监控能力
- 实时限流状态;
- 历史限流事件;
- 自动等待时间优化(learned wait times 随搜索自动自适应);
- 按引擎的性能追踪。
8.2 管理限流
系统会根据实际搜索运行情况自动学习并调整等待时间。如需主动干预,可在设置(Settings)中调整限流配置文件(rate limiting profile),三档可选:
- Conservative(保守):等待更久,降低触发限流的概率;
- Balanced(均衡):默认折中方案;
- Aggressive(激进):等待更短,吞吐更高但更易被限流。
限流相关实现可参考 tests/search_engines/test_rate_limiter.py、tests/rate_limiting/test_rate_limiting.py 等测试目录,以及数据模型RateLimitEstimate(导入自 database/models/metrics.py)。
九、隐私与数据存储
- 所有分析数据本地存储;
- 不接入任何外部分析服务(无第三方埋点);
- 数据保存在SQLite 数据库中;
- 支持可配置的数据保留策略(configurable retention)。
这符合项目"Everything Local & Encrypted"的定位:指标数据与研究数据一样,始终留在用户自己的机器上。
十、用分析数据驱动优化
10.1 定位成本驱动因素
- 在成本分析页审查高 Token 消耗的查询;
- 对比模型成本与对应质量评分;
- 针对不同任务优化模型选择。
10.2 改进搜索性能
- 监控各搜索引擎健康状态;
- 识别频繁被限流的引擎;
- 依据成功率调整搜索策略。
10.3 提升研究质量
- 按研究类型分析用户评分;
- 复盘低分会话,寻找共性问题;
- 根据反馈调整参数。
十一、与基准测试系统的集成
高级用户可将分析数据与基准测试系统联动:
- 追踪不同配置下的性能表现;
- 可视化优化结果(当环境安装了 matplotlib 时);
- 对比质量与速度的权衡;
- 导出基准测试数据供进一步分析。
相关配套文档见 基准测试指南 与 CLI 工具文档。
十二、API 参考(完整端点)
Metrics 端点
# 总体指标,可带时间与模式过滤 curl 'http://localhost:5000/metrics/api/metrics?days=30&mode=quick' # 特定研究的指标 curl http://localhost:5000/metrics/api/metrics/research/<id> # 增强指标(详细追踪) curl http://localhost:5000/metrics/api/metrics/enhanced # 星级评分数据 curl 'http://localhost:5000/metrics/api/star-reviews?days=30' # 成本拆分,可按提供商过滤 curl 'http://localhost:5000/metrics/api/cost-analytics?provider=openai' # 限流状态 curl http://localhost:5000/metrics/api/rate-limiting其中days参数对应上文的时间过滤窗口,mode对应研究模式过滤(quick / detailed / all);底层聚合分别由get_time_filter_condition、get_period_days与get_rating_analytics等函数完成(见 metrics.py 及 query_utils.py)。
另外,metrics-dashboard.md 还补充了更细粒度的接口表,包括:
GET /metrics/api/metrics/research/<id>/timeline:研究执行时间线;GET /metrics/api/metrics/research/<id>/search:单次研究内的搜索指标;GET /metrics/api/metrics/research/<id>/links:研究过程中发现的链接;GET /metrics/api/pricing与GET /metrics/api/pricing/<model>:模型定价数据;POST /metrics/api/domain-classifications/classify:批量域名分类(如{"domains": ["example.com", "arxiv.org"]});GET /metrics/api/link-analytics:链接分析聚合数据;GET /metrics/api/ratings/<research_id>与POST /metrics/api/ratings/<research_id>:读取与提交评分(Body 如{"rating": 5, "feedback": "Excellent results"})。
十三、常见问题排查
- 没有数据显示:请先完成至少一次研究,确认 Token 追踪已启用,然后刷新页面。
- 成本估算不准:核对模型定价是否为最新、提供商识别是否正确;不同模型的 Token 统计口径可能有差异。
- 限流数据缺失:先运行一些搜索产生数据,然后在设置中确认限流功能已启用,再刷新仪表盘。
相关文档
- 功能文档
- 配置指南
- 完整配置参考
- API 快速上手
- 基准测试指南
- 指标面板增强说明
- 增强 Token 追踪说明
【免费下载链接】local-deep-research~95% on SimpleQA (e.g. Qwen3.6-27B on a 3090). Supports all local and cloud LLMs (llama.cpp, Ollama, Google, ...). 10+ search engines - arXiv, PubMed, your private documents. Everything Local & Encrypted.项目地址: https://gitcode.com/GitHub_Trending/lo/local-deep-research
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考