liurenchaxin/internal/docs/DEPENDENCY_ANALYSIS.md

6.9 KiB
Raw Blame History

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客户端重复 保留httpxaiohttp,考虑移除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 机器学习 检查实际使用情况

🎯 优化建议

立即可移除的包

# 移除重复的HTTP客户端
uv remove requests  # 保留httpx和aiohttp

# 移除重复的调度器
uv remove schedule  # 保留apscheduler

# 移除重复的PostgreSQL驱动
uv remove psycopg2-binary  # 保留psycopg

需要检查使用情况的包

# 搜索代码中的使用情况
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中创建可选依赖组:

[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. 🟢 模块化可选依赖