409 lines
8.5 KiB
Markdown
409 lines
8.5 KiB
Markdown
# 快速扫描指南
|
||
|
||
本指南提供项目快速扫描的详细步骤。
|
||
|
||
## 目标
|
||
|
||
在 30 秒内识别:
|
||
- 项目类型
|
||
- 主要编程语言
|
||
- 核心框架
|
||
- 子系统组成
|
||
|
||
---
|
||
|
||
## 步骤 1: 运行技术栈检测脚本(推荐)
|
||
|
||
**使用自动化脚本**:
|
||
|
||
```bash
|
||
python ~/.claude/skills/codebase-architecture-analyzer/scripts/detect_tech_stack.py .
|
||
```
|
||
|
||
**脚本输出示例**:
|
||
|
||
```json
|
||
{
|
||
"project_path": "/path/to/project",
|
||
"stacks": [
|
||
{
|
||
"language": "Python",
|
||
"frameworks": ["FastAPI", "LangGraph"],
|
||
"config_file": "pyproject.toml",
|
||
"version": "3.11"
|
||
},
|
||
{
|
||
"language": "TypeScript",
|
||
"frameworks": ["React", "Next.js"],
|
||
"version": ">=18"
|
||
}
|
||
],
|
||
"docker": {
|
||
"containerized": true,
|
||
"compose": true,
|
||
"services": ["backend", "frontend", "redis"]
|
||
}
|
||
}
|
||
```
|
||
|
||
**从输出提取信息**:
|
||
|
||
- `stacks[].language` - 主要编程语言
|
||
- `stacks[].frameworks` - 核心框架列表
|
||
- `stacks[].version` - 语言/运行时版本
|
||
- `docker.services` - Docker 服务列表(如果有)
|
||
|
||
**脚本支持的语言**:
|
||
- Python (FastAPI, Django, Flask, LangGraph, CrewAI)
|
||
- JavaScript/TypeScript (React, Vue, Next.js, Express, NestJS)
|
||
- Go (Gin, Gorilla Mux, Fiber)
|
||
- Rust (Actix Web, Rocket, Axum)
|
||
- Java (Spring Boot, Quarkus)
|
||
|
||
---
|
||
|
||
## 步骤 1.5: 分析依赖关系(可选,用于深度分析)
|
||
|
||
**使用依赖分析脚本**:
|
||
|
||
```bash
|
||
python ~/.claude/skills/codebase-architecture-analyzer/scripts/extract_dependencies.py .
|
||
```
|
||
|
||
**脚本输出示例**:
|
||
|
||
```json
|
||
{
|
||
"project_path": ".",
|
||
"analyses": [
|
||
{
|
||
"language": "Python",
|
||
"files_analyzed": 45,
|
||
"total_imports": 23,
|
||
"third_party_imports": ["fastapi", "pydantic", "langchain", "openai"],
|
||
"declared_dependencies": ["fastapi", "pydantic", "langchain", "openai", "requests"],
|
||
"undeclared_usage": [],
|
||
"unused_dependencies": ["requests"]
|
||
},
|
||
{
|
||
"language": "JavaScript/TypeScript",
|
||
"dependencies": ["react", "next", "tailwindcss"],
|
||
"dev_dependencies": ["typescript", "@types/react", "eslint"],
|
||
"total_dependencies": 6
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**关键信息提取**:
|
||
|
||
- `third_party_imports` - 实际使用的第三方包
|
||
- `declared_dependencies` - 在配置文件中声明的依赖
|
||
- `undeclared_usage` - **缺失的依赖**(代码中使用了,但未在 requirements.txt/pyproject.toml 中声明)
|
||
- `unused_dependencies` - **冗余的依赖**(声明了但代码中未使用)
|
||
|
||
**使用场景**:
|
||
|
||
✅ **推荐使用**(当满足以下条件时):
|
||
- 需要验证依赖完整性
|
||
- 准备部署到生产环境
|
||
- 项目有复杂的依赖关系
|
||
- 发现依赖相关的 bug
|
||
|
||
⚠️ **可跳过**(当满足以下条件时):
|
||
- 快速了解项目即可
|
||
- 项目很小(< 10 个文件)
|
||
- 只关注整体架构
|
||
|
||
**输出解读**:
|
||
|
||
1. **缺失依赖警告**:如果 `undeclared_usage` 不为空,说明需要更新 requirements.txt
|
||
2. **冗余依赖清理**:如果 `unused_dependencies` 不为空,可以移除不需要的依赖
|
||
3. **依赖健康度**:`total_imports` vs `declared_dependencies` 的比例
|
||
|
||
---
|
||
|
||
## 步骤 2: 检测技术栈(手动方法)
|
||
|
||
如果脚本无法运行或需要更详细分析,使用以下手动方法:
|
||
|
||
### Python 项目
|
||
|
||
**识别文件**:
|
||
```bash
|
||
# 优先级从高到低
|
||
1. pyproject.toml # 现代 Python 项目(Poetry/Hatch)
|
||
2. setup.py # 传统 Python 包
|
||
3. requirements.txt # 依赖清单
|
||
4. Pipfile # Pipenv 项目
|
||
5. environment.yml # Conda 项目
|
||
```
|
||
|
||
**提取信息**:
|
||
```bash
|
||
# 从 pyproject.toml 提取
|
||
cat pyproject.toml | grep "python =" # Python 版本
|
||
cat pyproject.toml | grep "\[tool.poetry.dependencies\]" -A 20 # 依赖
|
||
|
||
# 从 requirements.txt 提取
|
||
cat requirements.txt | grep -E "fastapi|django|flask|langgraph"
|
||
```
|
||
|
||
---
|
||
|
||
### JavaScript/TypeScript 项目
|
||
|
||
**识别文件**:
|
||
```bash
|
||
1. package.json # Node.js 项目
|
||
2. yarn.lock # Yarn 包管理
|
||
3. pnpm-lock.yaml # pnpm 包管理
|
||
4. tsconfig.json # TypeScript 配置
|
||
```
|
||
|
||
**提取信息**:
|
||
```bash
|
||
# 从 package.json 提取
|
||
cat package.json | grep "\"react\"\|\"vue\"\|\"express\"\|\"next\""
|
||
```
|
||
|
||
---
|
||
|
||
### Go 项目
|
||
|
||
**识别文件**:
|
||
```bash
|
||
1. go.mod # Go modules
|
||
2. go.sum # 依赖锁文件
|
||
```
|
||
|
||
**提取信息**:
|
||
```bash
|
||
cat go.mod | grep "require" -A 20
|
||
```
|
||
|
||
---
|
||
|
||
### Rust 项目
|
||
|
||
**识别文件**:
|
||
```bash
|
||
1. Cargo.toml # Rust 项目配置
|
||
2. Cargo.lock # 依赖锁文件
|
||
```
|
||
|
||
---
|
||
|
||
### Java 项目
|
||
|
||
**识别文件**:
|
||
```bash
|
||
1. pom.xml # Maven 项目
|
||
2. build.gradle # Gradle 项目
|
||
```
|
||
|
||
---
|
||
|
||
## 步骤 3: 扫描目录结构
|
||
|
||
### 列出顶层目录
|
||
|
||
```bash
|
||
ls -d */ | head -20
|
||
```
|
||
|
||
### 识别子系统模式
|
||
|
||
| 目录名 | 子系统类型 |
|
||
|-------|-----------|
|
||
| `frontend/`, `ui/`, `web/`, `client/` | 前端 |
|
||
| `backend/`, `api/`, `server/` | 后端 |
|
||
| `agents/`, `workers/` | Agent 系统 |
|
||
| `services/` + 多个子目录 | 微服务 |
|
||
| `src/components/` | React/Vue 组件 |
|
||
| `app/` | Next.js/Django 应用 |
|
||
|
||
---
|
||
|
||
## 步骤 4: 检测关键配置文件
|
||
|
||
### Docker 相关
|
||
|
||
```bash
|
||
# docker-compose.yml → 多服务架构
|
||
cat docker-compose.yml | grep "services:" -A 50
|
||
|
||
# Dockerfile → 容器化应用
|
||
ls -la | grep Dockerfile
|
||
```
|
||
|
||
### 环境配置
|
||
|
||
```bash
|
||
# .env.example → 环境变量配置
|
||
cat .env.example | grep -E "DATABASE_URL|REDIS_URL|API_KEY"
|
||
```
|
||
|
||
---
|
||
|
||
## 步骤 5: 识别项目规模
|
||
|
||
### 统计代码文件
|
||
|
||
```bash
|
||
# 统计各语言文件数量
|
||
find . -type f -name "*.py" | wc -l
|
||
find . -type f -name "*.ts" -o -name "*.tsx" | wc -l
|
||
find . -type f -name "*.go" | wc -l
|
||
```
|
||
|
||
### 估算代码规模
|
||
|
||
```bash
|
||
# 使用 cloc(如果已安装)
|
||
cloc . --exclude-dir=node_modules,venv,.git
|
||
```
|
||
|
||
---
|
||
|
||
## 输出格式模板
|
||
|
||
```
|
||
✓ 项目类型: [AI 研究助手 / Web 应用 / CLI 工具 / ...]
|
||
✓ 主语言: Python 3.11 (156 个文件)
|
||
✓ 次要语言: TypeScript (89 个文件)
|
||
✓ 核心框架:
|
||
- 后端: FastAPI 0.104.1
|
||
- 前端: React 18.2.0
|
||
- AI: LangGraph 0.2.5
|
||
✓ 子系统:
|
||
- frontend/ (React + TypeScript)
|
||
- backend/ (FastAPI + Python)
|
||
- agents/ (LangGraph)
|
||
✓ 容器化: 是(docker-compose.yml)
|
||
✓ 代码规模: 约 12,500 行
|
||
```
|
||
|
||
---
|
||
|
||
## 常见框架识别规则
|
||
|
||
### Python Web 框架
|
||
|
||
```python
|
||
依赖中包含:
|
||
- fastapi → FastAPI
|
||
- django → Django
|
||
- flask → Flask
|
||
- starlette → Starlette
|
||
- aiohttp → aiohttp
|
||
```
|
||
|
||
### Python AI 框架
|
||
|
||
```python
|
||
依赖中包含:
|
||
- langgraph → LangGraph
|
||
- crewai → CrewAI
|
||
- autogen → AutoGen
|
||
- langchain → LangChain
|
||
- transformers → Hugging Face
|
||
```
|
||
|
||
### JavaScript 框架
|
||
|
||
```json
|
||
dependencies 中包含:
|
||
- "react" → React
|
||
- "vue" → Vue.js
|
||
- "next" → Next.js
|
||
- "express" → Express.js
|
||
- "nestjs" → NestJS
|
||
```
|
||
|
||
---
|
||
|
||
## 快速判断项目类型
|
||
|
||
### CLI 工具
|
||
|
||
**特征**:
|
||
- 存在 `cli.py`, `main.py`, `cmd/` 目录
|
||
- 依赖包含 `click`, `typer`, `argparse`
|
||
- `pyproject.toml` 中有 `[project.scripts]`
|
||
|
||
### Web 应用
|
||
|
||
**特征**:
|
||
- 存在 `routes.py`, `views.py`, `app.py`
|
||
- 依赖包含 `fastapi`, `django`, `express`
|
||
- 存在 `assets/`, `static/` 目录
|
||
|
||
### AI/ML 项目
|
||
|
||
**特征**:
|
||
- 存在 `models/`, `agents/`, `pipelines/`
|
||
- 依赖包含 `tensorflow`, `pytorch`, `langchain`
|
||
- 存在 `notebooks/` 目录(Jupyter)
|
||
|
||
### 数据工程项目
|
||
|
||
**特征**:
|
||
- 存在 `etl/`, `pipelines/`, `dags/`
|
||
- 依赖包含 `airflow`, `prefect`, `dbt`
|
||
- 存在 `sql/`, `queries/` 目录
|
||
|
||
---
|
||
|
||
## 故障排除
|
||
|
||
### 问题 1: 无法识别项目类型
|
||
|
||
**解决方案**:
|
||
1. 查看 README.md 的描述
|
||
2. 搜索常见入口文件:`main.*`, `index.*`, `app.*`
|
||
3. 查看 git 提交历史:`git log --oneline | head -20`
|
||
|
||
### 问题 2: 多语言混合项目
|
||
|
||
**解决方案**:
|
||
- 统计各语言文件数量,确定主次
|
||
- 识别前后端分离:`frontend/` + `backend/`
|
||
|
||
---
|
||
|
||
## 完整示例
|
||
|
||
```bash
|
||
# 1. 检测配置文件
|
||
ls -la | grep -E "package.json|pyproject.toml|go.mod|Cargo.toml"
|
||
|
||
# 输出: pyproject.toml, package.json (前后端分离项目)
|
||
|
||
# 2. 读取 Python 依赖
|
||
cat pyproject.toml | grep -A 30 dependencies
|
||
|
||
# 输出: fastapi, langgraph, openai (AI Web 应用)
|
||
|
||
# 3. 读取 JS 依赖
|
||
cat package.json | grep -A 20 dependencies
|
||
|
||
# 输出: react, typescript (React 前端)
|
||
|
||
# 4. 扫描目录
|
||
ls -d */
|
||
|
||
# 输出: frontend/, backend/, agents/, docs/
|
||
|
||
# 5. 统计代码
|
||
find backend -name "*.py" | wc -l # 156 个文件
|
||
find frontend -name "*.ts*" | wc -l # 89 个文件
|
||
|
||
# 最终识别结果:
|
||
✓ 项目类型: AI 驱动的 Web 应用
|
||
✓ 主语言: Python (后端 + AI)
|
||
✓ 次要语言: TypeScript (前端)
|
||
✓ 核心框架: FastAPI + LangGraph + React
|
||
✓ 架构: 前后端分离 + Multi-Agent
|
||
```
|