Skip to main content

AI Code Analytics Dashboard - Claude Code & OpenCode

Project description

Sniffly - AI Code Analytics Dashboard

分析 Claude Code 和 OpenCode 的使用日志,帮助你更好地使用 AI 编程助手。

功能特性 | 快速开始 | 导出数据 | 分析报告

📊 功能特性

双数据源支持

  • Claude Code: 分析 ~/.claude/projects/ 下的 JSONL 日志
  • OpenCode: 分析 ~/.local/share/opencode/opencode.db SQLite 数据库

数据统计

  • 项目级统计:会话数、Token 使用量、成本估算
  • 每日统计:请求、会话、Token 趋势
  • 模型分布:各模型使用占比

数据导出

支持导出 AI 使用数据,方便团队分析和绩效评估:

  • 汇总报告 (Markdown): 总请求、会话、Token、每日统计
  • 详细报告 (Markdown): 包含完整提示词记录
  • 原始数据 (JSON): 完整数据结构

分析报告

AI 使用效率评分系统,包含六个维度:

  • 📈 活跃度分析: 活跃天数、日均使用量
  • 任务效率: 会话时长、成功率、错误率
  • 💰 Token 效率: 缓存命中率、输入输出比
  • 🛠️ 工具使用: 工具多样性、使用频率
  • 📝 提示词质量: 长度分布、清晰度评分
  • 📊 提示词数量: 频率趋势、日均数量

效率等级:A (卓越) / B (优秀) / C (合格) / D (待改进) / E (需优化)

🚀 快速开始

环境要求

  • Python 3.10+

使用 UV 安装(推荐)

确保已安装 uv: https://github.com/astral-sh/uv

# 一次性运行(无需安装)
uvx sniffly-lzwind@latest init

# 或安装后使用
uv tool install sniffly-lzwind@latest
sniffly init

使用 pip 安装

pip install sniffly-lzwind
sniffly init

从源码安装

git clone https://github.com/lzwind/sniffly.git
cd sniffly
pip install -e .
sniffly init

启动后访问 http://localhost:8081 查看仪表盘。

📥 导出数据

Web 界面导出

  1. 点击页面顶部 "📥 导出数据" 按钮
  2. 选择数据源(Claude Code / OpenCode / 两者)
  3. 选择项目(可选)
  4. 选择导出类型:
    • 汇总报告 (Markdown)
    • 详细报告 (Markdown,含提示词)
    • 原始数据 (JSON)
  5. 设置日期范围(可选)
  6. 点击"导出"

导出示例

Markdown 汇总报告:

# AI 使用数据报告

**项目**: All Projects
**数据源**: claude
**开发者**: Zhang San (zhangsan@example.com)

## 汇总统计

| 指标 | 数值 |
|------|------|
| 总请求 | 3883 |
| 总会话 | 44 |
| 总提示词 | 378 |
| 输入 Token | 113,413,750 |
| 输出 Token | 832,028 |

## 每日统计

| 日期 | 请求 | 会话 | 提示词 | 输入Token | 输出Token |
|------|------|------|--------|-----------|----------|
| 2026-03-14 | 13 | 1 | 13 | 133,505 | 51,138 |
...

📈 分析报告

访问 http://localhost:8081/analysis 查看分析报告。

评分维度权重

维度 权重 说明
提示词质量 25% 清晰度、合理性
任务效率 20% 成功率、会话效率
Token 效率 15% 缓存利用、输入输出比
工具使用 15% 工具多样性
提示词数量 15% 使用频率
活跃度 10% 使用连贯性

🔧 配置

常用设置

# 更改端口(默认 8081)
sniffly config set port 8090

# 禁用自动打开浏览器
sniffly config set auto_browser false

# 查看当前配置
sniffly config show

配置选项

配置项 默认值 说明
port 8081 服务端口
host 127.0.0.1 服务主机
auto_browser true 启动时自动打开浏览器
cache_max_projects 5 内存缓存最大项目数
cache_max_mb_per_project 500 每个项目最大缓存 MB
messages_initial_load 500 初始加载消息数
max_date_range_days 30 日期范围选择最大天数

💡 分享仪表盘

可以创建链接与同事分享项目统计:

  1. 点击仪表盘中的 "📤 Share" 按钮
  2. 选择隐私选项:
    • Private: 只有链接的人可以查看
    • Public: 列在公共画廊
    • Include Commands: 分享实际命令内容
  3. 复制并分享生成的链接

🚨 故障排除

sniffly help

端口被占用?

sniffly init --port 8090

浏览器没有打开?

sniffly config set auto_browser true
# 或手动访问 http://localhost:8081

配置问题?

# 查看所有设置
sniffly config show

# 重置配置
rm ~/.sniffly/config.json

🔐 隐私

Sniffly 完全在本地运行:

  • ✅ 所有数据处理都在本地进行
  • ✅ 无遥测数据
  • ✅ 你的对话不会离开你的电脑
  • ✅ 共享仪表盘仅在你选择时启用

📄 许可证

MIT License - 详见 LICENSE 文件。

🔗 链接

🙏 致谢

本项目基于 Sniffly 开发,增加了以下功能:

  • OpenCode 数据源支持
  • AI 使用效率分析报告
  • 数据导出功能(Markdown/JSON)
  • 双数据源对比分析

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sniffly_lzwind-0.4.6.tar.gz (7.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sniffly_lzwind-0.4.6-py3-none-any.whl (3.2 MB view details)

Uploaded Python 3

File details

Details for the file sniffly_lzwind-0.4.6.tar.gz.

File metadata

  • Download URL: sniffly_lzwind-0.4.6.tar.gz
  • Upload date:
  • Size: 7.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for sniffly_lzwind-0.4.6.tar.gz
Algorithm Hash digest
SHA256 0073b7d7ab2223055b9364d660e182608f411bda9e1b9d883131ad66593ea50c
MD5 1a6dc686858db616ebdaa7dc4da5bdc7
BLAKE2b-256 69d3806a280a5f5b0c589bc515a2ae183454fa052bfae60d64f94c80b743fc27

See more details on using hashes here.

File details

Details for the file sniffly_lzwind-0.4.6-py3-none-any.whl.

File metadata

  • Download URL: sniffly_lzwind-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for sniffly_lzwind-0.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cfef21c5ea4fbfd293089c009ccaf0146ff461634d5061fceedf2c254ac03474
MD5 8a8972af4b600e69643f9049ac24e4f0
BLAKE2b-256 1ba82bc0112363463d9e6a62ee82511a0ad7c407dcd94638419ea9eca669b890

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page