# 开发者指南 本文档面向希望参与项目开发、贡献代码或深度定制功能的开发者。 ## 🛠️ 开发环境设置 ### 前置要求 - **Python**: >=3.9, <4.0 (推荐 3.10+ 以获得最佳性能) - **Poetry**: 现代化 Python 依赖管理工具 - **Node.js**: >=16.0 (用于 Pyright 类型检查,可选) - **Git**: 版本控制 ### 快速开始 ```bash # 1. 克隆项目 git clone https://github.com/CJackHwang/AIstudioProxyAPI.git cd AIstudioProxyAPI # 2. 安装 Poetry (如果尚未安装) curl -sSL https://install.python-poetry.org | python3 - # 3. 安装项目依赖 (包括开发依赖) poetry install --with dev # 4. 激活虚拟环境 poetry env activate # 5. 安装 Pyright (可选,用于类型检查) npm install -g pyright ``` ## 📁 项目结构 ``` AIstudioProxyAPI/ ├── api_utils/ # FastAPI 应用核心模块 │ ├── app.py # FastAPI 应用入口 │ ├── routes.py # API 路由定义 │ ├── request_processor.py # 请求处理逻辑 │ ├── queue_worker.py # 队列工作器 │ └── auth_utils.py # 认证工具 ├── browser_utils/ # 浏览器自动化模块 │ ├── page_controller.py # 页面控制器 │ ├── model_management.py # 模型管理 │ ├── script_manager.py # 脚本注入管理 │ └── operations.py # 浏览器操作 ├── config/ # 配置管理模块 │ ├── settings.py # 主要设置 │ ├── constants.py # 常量定义 │ ├── timeouts.py # 超时配置 │ └── selectors.py # CSS 选择器 ├── models/ # 数据模型 │ ├── chat.py # 聊天相关模型 │ ├── exceptions.py # 异常定义 │ └── logging.py # 日志模型 ├── stream/ # 流式代理服务 │ ├── main.py # 代理服务入口 │ ├── proxy_server.py # 代理服务器 │ └── interceptors.py # 请求拦截器 ├── logging_utils/ # 日志工具 ├── docs/ # 文档目录 ├── docker/ # Docker 相关文件 ├── pyproject.toml # Poetry 配置文件 ├── pyrightconfig.json # Pyright 类型检查配置 ├── .env.example # 环境变量模板 └── README.md # 项目说明 ``` ## 🔧 依赖管理 (Poetry) ### Poetry 基础命令 ```bash # 查看项目信息 poetry show # 查看依赖树 poetry show --tree # 添加新依赖 poetry add package_name # 添加开发依赖 poetry add --group dev package_name # 移除依赖 poetry remove package_name # 更新依赖 poetry update # 更新特定依赖 poetry update package_name # 导出 requirements.txt (兼容性) poetry export -f requirements.txt --output requirements.txt ``` ### 依赖分组 项目使用 Poetry 的依赖分组功能: ```toml [tool.poetry.dependencies] # 生产依赖 python = ">=3.9,<4.0" fastapi = "==0.115.12" # ... 其他生产依赖 [tool.poetry.group.dev.dependencies] # 开发依赖 (可选安装) pytest = "^7.0.0" black = "^23.0.0" isort = "^5.12.0" ``` ### 虚拟环境管理 ```bash # 查看虚拟环境信息 poetry env info # 查看虚拟环境路径 poetry env info --path # 激活虚拟环境 poetry env activate # 在虚拟环境中运行命令 poetry run python script.py # 删除虚拟环境 poetry env remove python ``` ## 🔍 类型检查 (Pyright) ### Pyright 配置 项目使用 `pyrightconfig.json` 进行类型检查配置: ```json { "pythonVersion": "3.13", "pythonPlatform": "Darwin", "typeCheckingMode": "off", "extraPaths": [ "./api_utils", "./browser_utils", "./config", "./models", "./logging_utils", "./stream" ] } ``` ### 使用 Pyright ```bash # 安装 Pyright npm install -g pyright # 检查整个项目 pyright # 检查特定文件 pyright api_utils/app.py # 监视模式 (文件变化时自动检查) pyright --watch ``` ### 类型注解最佳实践 ```python from typing import Optional, List, Dict, Any from pydantic import BaseModel # 函数类型注解 def process_request(data: Dict[str, Any]) -> Optional[str]: """处理请求数据""" return data.get("message") # 类型别名 ModelConfig = Dict[str, Any] ResponseData = Dict[str, str] # Pydantic 模型 class ChatRequest(BaseModel): message: str model: Optional[str] = None temperature: float = 0.7 ``` ## 🧪 测试 ### 运行测试 ```bash # 运行所有测试 poetry run pytest # 运行特定测试文件 poetry run pytest tests/test_api.py # 运行测试并生成覆盖率报告 poetry run pytest --cov=api_utils --cov-report=html ``` ### 测试结构 ``` tests/ ├── conftest.py # 测试配置 ├── test_api.py # API 测试 ├── test_browser.py # 浏览器功能测试 └── test_config.py # 配置测试 ``` ## 🔄 开发工作流程 ### 1. 代码格式化 ```bash # 使用 Black 格式化代码 poetry run black . # 使用 isort 整理导入 poetry run isort . # 检查代码风格 poetry run flake8 . ``` ### 2. 类型检查 ```bash # 运行类型检查 pyright # 或使用 mypy (如果安装) poetry run mypy . ``` ### 3. 测试 ```bash # 运行测试 poetry run pytest # 运行测试并检查覆盖率 poetry run pytest --cov ``` ### 4. 提交代码 ```bash # 添加文件 git add . # 提交 (建议使用规范的提交信息) git commit -m "feat: 添加新功能" # 推送 git push origin feature-branch ``` ## 📝 代码规范 ### 命名规范 - **文件名**: 使用下划线分隔 (`snake_case`) - **类名**: 使用驼峰命名 (`PascalCase`) - **函数名**: 使用下划线分隔 (`snake_case`) - **常量**: 使用大写字母和下划线 (`UPPER_CASE`) ### 文档字符串 ```python def process_chat_request(request: ChatRequest) -> ChatResponse: """ 处理聊天请求 Args: request: 聊天请求对象 Returns: ChatResponse: 聊天响应对象 Raises: ValidationError: 当请求数据无效时 ProcessingError: 当处理失败时 """ pass ``` ## 🚀 部署和发布 ### 构建项目 ```bash # 构建分发包 poetry build # 检查构建结果 ls dist/ ``` ### Docker 开发 ```bash # 构建开发镜像 docker build -f docker/Dockerfile.dev -t aistudio-dev . # 运行开发容器 docker run -it --rm -v $(pwd):/app aistudio-dev bash ``` ## 🤝 贡献指南 ### 提交 Pull Request 1. Fork 项目 2. 创建功能分支: `git checkout -b feature/amazing-feature` 3. 提交更改: `git commit -m 'feat: 添加惊人的功能'` 4. 推送分支: `git push origin feature/amazing-feature` 5. 创建 Pull Request ### 代码审查清单 - [ ] 代码遵循项目规范 - [ ] 添加了必要的测试 - [ ] 测试通过 - [ ] 类型检查通过 - [ ] 文档已更新 - [ ] 变更日志已更新 ## 📞 获取帮助 - **GitHub Issues**: 报告 Bug 或请求功能 - **GitHub Discussions**: 技术讨论和问答 - **开发者文档**: 查看详细的 API 文档 ## 🔗 相关资源 - [Poetry 官方文档](https://python-poetry.org/docs/) - [Pyright 官方文档](https://github.com/microsoft/pyright) - [FastAPI 官方文档](https://fastapi.tiangolo.com/) - [Playwright 官方文档](https://playwright.dev/python/)