liurenchaxin/internal/docs/DEPENDENCY_ANALYSIS.md

209 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cauldron项目依赖包分析报告
## 📊 总体统计
- **总包数**: 153个
- **直接依赖**: ~50个pyproject.toml中声明
- **传递依赖**: ~103个自动安装的子依赖
## 🎯 核心有用依赖分析
### 1. 🏗️ 核心框架层 (必需)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `streamlit` | 1.46.1 | 主UI框架 | ⭐⭐⭐⭐⭐ |
| `fastapi` | 0.115.14 | Web API框架 | ⭐⭐⭐⭐⭐ |
| `uvicorn` | 0.35.0 | ASGI服务器 | ⭐⭐⭐⭐⭐ |
| `pydantic` | 2.10.8 | 数据验证 | ⭐⭐⭐⭐⭐ |
### 2. 📊 数据处理层 (核心)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `pandas` | 2.3.1 | 数据分析 | ⭐⭐⭐⭐⭐ |
| `numpy` | 1.26.4 | 数值计算 | ⭐⭐⭐⭐⭐ |
| `scipy` | 1.16.1 | 科学计算 | ⭐⭐⭐⭐ |
| `plotly` | 6.2.0 | 数据可视化 | ⭐⭐⭐⭐ |
### 3. 🤖 AI/ML层 (Jixia Academy核心)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `autogen-agentchat` | 0.6.2 | AI辩论系统 | ⭐⭐⭐⭐⭐ |
| `autogen-core` | 0.6.2 | AutoGen核心 | ⭐⭐⭐⭐⭐ |
| `autogen-ext` | 0.6.2 | AutoGen扩展 | ⭐⭐⭐⭐⭐ |
| `openai` | 1.52.2 | OpenAI API | ⭐⭐⭐⭐⭐ |
| `tiktoken` | 0.9.0 | Token计算 | ⭐⭐⭐⭐ |
### 4. 💾 数据库层 (重要)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `sqlalchemy` | 2.0.42 | ORM框架 | ⭐⭐⭐⭐⭐ |
| `sqlmodel` | 0.0.24 | SQL模型 | ⭐⭐⭐⭐ |
| `psycopg2-binary` | 2.9.10 | PostgreSQL驱动 | ⭐⭐⭐⭐ |
| `asyncpg` | 0.29.0 | 异步PostgreSQL | ⭐⭐⭐⭐ |
| `alembic` | 1.16.4 | 数据库迁移 | ⭐⭐⭐⭐ |
| `redis` | 6.2.0 | 缓存数据库 | ⭐⭐⭐ |
### 5. 💰 金融数据层 (业务核心)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `ib-insync` | 0.9.86 | Interactive Brokers | ⭐⭐⭐⭐⭐ |
| `yfinance` | 0.2.59 | Yahoo Finance | ⭐⭐⭐⭐ |
### 6. 🌐 网络通信层 (必需)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `aiohttp` | 3.12.15 | 异步HTTP客户端 | ⭐⭐⭐⭐ |
| `httpx` | 0.25.2 | 现代HTTP客户端 | ⭐⭐⭐⭐ |
| `requests` | 2.31.0 | 同步HTTP客户端 | ⭐⭐⭐⭐ |
### 7. 🔧 工具库层 (有用)
| 包名 | 版本 | 用途 | 重要性 |
|------|------|------|--------|
| `rich` | 14.1.0 | 终端美化 | ⭐⭐⭐ |
| `click` | 8.1.0 | 命令行工具 | ⭐⭐⭐ |
| `tqdm` | 4.67.1 | 进度条 | ⭐⭐⭐ |
| `schedule` | 1.2.2 | 任务调度 | ⭐⭐⭐ |
| `apscheduler` | 3.11.0 | 高级调度器 | ⭐⭐⭐ |
## ❓ 可能冗余或低价值依赖
### 1. 🔄 重复功能包
| 包名 | 问题 | 建议 |
|------|------|------|
| `httpx` + `aiohttp` + `requests` | 三个HTTP客户端重复 | 保留`httpx`和`aiohttp`,考虑移除`requests` |
| `schedule` + `apscheduler` | 两个调度器重复 | 保留功能更强的`apscheduler` |
| `psycopg2-binary` + `psycopg` | PostgreSQL驱动重复 | 保留异步的`psycopg` |
### 2. 📦 传递依赖(自动安装)
这些包是其他包的依赖,通常不需要手动管理:
- `aiofiles`, `aiohappyeyeballs`, `aiosignal`
- `annotated-types`, `anyio`, `async-timeout`
- `attrs`, `blinker`, `certifi`
- `charset-normalizer`, `colorama`, `deprecation`
- `frozenlist`, `gitdb`, `gitpython`
- `h11`, `h2`, `hpack`, `hyperframe`
- `idna`, `jinja2`, `jsonschema`
- `markdown-it-py`, `markupsafe`, `mdurl`
- `multidict`, `packaging`, `pillow`
- `protobuf`, `pyarrow`, `pydeck`
- `pygments`, `python-dateutil`, `pytz`
- `referencing`, `rpds-py`, `shellingham`
- `six`, `smmap`, `sniffio`, `soupsieve`
- `starlette`, `tenacity`, `threadpoolctl`
- `toml`, `tomli`, `tomli-w`, `tornado`
- `typer`, `typing-extensions`, `typing-inspection`
- `tzdata`, `tzlocal`, `urllib3`, `uvloop`
- `watchdog`, `watchfiles`, `websockets`
- `yarl`, `zipp`
### 3. 🤔 可疑或未使用的包
| 包名 | 版本 | 问题 | 建议 |
|------|------|------|------|
| `blurhash` | 1.1.4 | 图像模糊哈希,可能未使用 | 检查使用情况 |
| `gotrue` | 2.9.1 | Supabase认证可能冗余 | 如果不用Supabase可移除 |
| `mastodon-py` | 1.8.1 | Mastodon API使用频率低 | 考虑按需安装 |
| `motor` | 3.1.0 | MongoDB异步驱动项目用PostgreSQL | 可能不需要 |
| `slack-sdk` | 3.36.0 | Slack集成使用频率低 | 考虑按需安装 |
| `storage3` | 0.7.7 | Supabase存储 | 如果不用Supabase可移除 |
| `supabase` | 2.3.4 | Supabase客户端 | 检查实际使用情况 |
| `supafunc` | 0.3.3 | Supabase函数 | 如果不用Supabase可移除 |
### 4. 🧪 NLP相关包按需
| 包名 | 版本 | 用途 | 建议 |
|------|------|------|------|
| `jieba` | 0.42.1 | 中文分词 | 如果Jixia Academy需要则保留 |
| `nltk` | 3.8.2 | 自然语言处理 | 检查实际使用情况 |
| `textblob` | 0.19.0 | 文本处理 | 检查实际使用情况 |
| `scikit-learn` | 1.7.1 | 机器学习 | 检查实际使用情况 |
## 🎯 优化建议
### 立即可移除的包
```bash
# 移除重复的HTTP客户端
uv remove requests # 保留httpx和aiohttp
# 移除重复的调度器
uv remove schedule # 保留apscheduler
# 移除重复的PostgreSQL驱动
uv remove psycopg2-binary # 保留psycopg
```
### 需要检查使用情况的包
```bash
# 搜索代码中的使用情况
grep -r "import motor" src/ app/
grep -r "import supabase" src/ app/
grep -r "import slack_sdk" src/ app/
grep -r "import blurhash" src/ app/
```
### 按功能模块化依赖
建议在`pyproject.toml`中创建可选依赖组:
```toml
[project.optional-dependencies]
# 现有的
dev = [...]
production = [...]
nlp = [...]
# 新增的模块化依赖
social = ["mastodon-py", "slack-sdk"]
supabase = ["supabase", "gotrue", "storage3", "supafunc"]
mongodb = ["motor"]
image = ["blurhash"]
```
## 📊 依赖健康度评分
| 类别 | 包数 | 健康度 | 说明 |
|------|------|--------|------|
| 核心框架 | 15 | 🟢 95% | 都是必需的 |
| 数据处理 | 8 | 🟢 90% | 核心业务依赖 |
| AI/ML | 12 | 🟢 95% | Jixia Academy核心 |
| 数据库 | 8 | 🟡 80% | 有重复驱动 |
| 网络通信 | 6 | 🟡 75% | 有重复客户端 |
| 工具库 | 25 | 🟡 70% | 部分可优化 |
| 传递依赖 | 79 | 🟢 85% | 自动管理 |
## 🎯 总结
### ✅ 核心有用包 (约100个)
- 所有AutoGen相关包AI辩论系统核心
- Streamlit和FastAPIUI和API框架
- Pandas、NumPy数据处理核心
- SQLAlchemy、PostgreSQL驱动数据库核心
- IB-Insync、YFinance金融数据核心
### ⚠️ 可优化包 (约15个)
- 重复功能包requests、schedule、psycopg2-binary
- 低使用率包motor、supabase系列、slack-sdk
- 可选功能包blurhash、mastodon-py
### 🔧 优化后预期效果
- 减少约10-15个直接依赖
- 减少约20-30个传递依赖
- 提升安装速度和环境稳定性
- 降低依赖冲突风险
**建议优先级**
1. 🔴 立即移除重复包
2. 🟡 检查可疑包的使用情况
3. 🟢 模块化可选依赖