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.dbSQLite 数据库
数据统计
- 项目级统计:会话数、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 界面导出
- 点击页面顶部 "📥 导出数据" 按钮
- 选择数据源(Claude Code / OpenCode / 两者)
- 选择项目(可选)
- 选择导出类型:
- 汇总报告 (Markdown)
- 详细报告 (Markdown,含提示词)
- 原始数据 (JSON)
- 设置日期范围(可选)
- 点击"导出"
导出示例
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 | 日期范围选择最大天数 |
💡 分享仪表盘
可以创建链接与同事分享项目统计:
- 点击仪表盘中的 "📤 Share" 按钮
- 选择隐私选项:
- Private: 只有链接的人可以查看
- Public: 列在公共画廊
- Include Commands: 分享实际命令内容
- 复制并分享生成的链接
🚨 故障排除
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 文件。
🔗 链接
- GitHub: github.com/lzwind/sniffly
- 原项目: github.com/chiphuyen/sniffly
- 问题反馈: GitHub Issues
🙏 致谢
本项目基于 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0073b7d7ab2223055b9364d660e182608f411bda9e1b9d883131ad66593ea50c
|
|
| MD5 |
1a6dc686858db616ebdaa7dc4da5bdc7
|
|
| BLAKE2b-256 |
69d3806a280a5f5b0c589bc515a2ae183454fa052bfae60d64f94c80b743fc27
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfef21c5ea4fbfd293089c009ccaf0146ff461634d5061fceedf2c254ac03474
|
|
| MD5 |
8a8972af4b600e69643f9049ac24e4f0
|
|
| BLAKE2b-256 |
1ba82bc0112363463d9e6a62ee82511a0ad7c407dcd94638419ea9eca669b890
|