# 环境变量配置指南 本文档详细介绍如何使用 `.env` 文件来配置 AI Studio Proxy API 项目,实现统一的配置管理。 ## 概述 项目采用基于 `.env` 文件的现代化配置管理系统,提供以下优势: ### 主要优势 - ✅ **版本更新无忧**: 一个 `git pull` 就完成更新,无需重新配置 - ✅ **配置集中管理**: 所有配置项统一在 `.env` 文件中,清晰明了 - ✅ **启动命令简化**: 无需复杂的命令行参数,一键启动 - ✅ **安全性**: `.env` 文件已被 `.gitignore` 忽略,不会泄露敏感配置 - ✅ **灵活性**: 支持不同环境的配置管理(开发、测试、生产) - ✅ **Docker 兼容**: Docker 和本地环境使用相同的配置方式 - ✅ **模块化设计**: 配置项按功能分组,便于理解和维护 ## 快速开始 ### 1. 复制配置模板 ```bash cp .env.example .env ``` ### 2. 编辑配置文件 根据您的需要修改 `.env` 文件中的配置项: ```bash # 编辑配置文件 nano .env # 或使用其他编辑器 code .env ``` ### 3. 启动服务 配置完成后,启动变得非常简单: ```bash # 图形界面启动(推荐新手) python gui_launcher.py # 命令行启动(推荐日常使用) python launch_camoufox.py --headless # 调试模式(首次设置或故障排除) python launch_camoufox.py --debug ``` **就这么简单!** 无需复杂的命令行参数,所有配置都在 `.env` 文件中预设好了。 ## 启动命令对比 ### 使用 `.env` 配置前(复杂) ```bash # 之前需要这样的复杂命令 python launch_camoufox.py --headless --server-port 2048 --stream-port 3120 --helper '' --internal-camoufox-proxy 'http://127.0.0.1:7890' ``` ### 使用 `.env` 配置后(简单) ```bash # 现在只需要这样 python launch_camoufox.py --headless ``` **配置一次,终身受益!** 所有复杂的参数都在 `.env` 文件中预设,启动命令变得极其简洁。 ## 主要配置项 ### 服务端口配置 ```env # FastAPI 服务端口 PORT=8000 DEFAULT_FASTAPI_PORT=2048 DEFAULT_CAMOUFOX_PORT=9222 # 流式代理服务配置 STREAM_PORT=3120 ``` ### 代理配置 ```env # HTTP/HTTPS 代理设置 HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 # 统一代理配置 (优先级更高) UNIFIED_PROXY_CONFIG=http://127.0.0.1:7890 # 代理绕过列表 NO_PROXY=localhost;127.0.0.1;*.local ``` ### 日志配置 ```env # 服务器日志级别 SERVER_LOG_LEVEL=INFO # 启用调试日志 DEBUG_LOGS_ENABLED=false TRACE_LOGS_ENABLED=false # 是否重定向 print 输出到日志 SERVER_REDIRECT_PRINT=false ``` ### 认证配置 ```env # 自动保存认证信息 AUTO_SAVE_AUTH=false # 认证保存超时时间 (秒) AUTH_SAVE_TIMEOUT=30 # 自动确认登录 AUTO_CONFIRM_LOGIN=true ``` ### API 默认参数 ```env # 默认温度值 (0.0-2.0) DEFAULT_TEMPERATURE=1.0 # 默认最大输出令牌数 DEFAULT_MAX_OUTPUT_TOKENS=65536 # 默认 Top-P 值 (0.0-1.0) DEFAULT_TOP_P=0.95 # 默认停止序列 (JSON 数组格式) DEFAULT_STOP_SEQUENCES=["用户:"] # 是否在处理请求时自动打开并使用 "URL Context" 功能 # 参考: https://ai.google.dev/gemini-api/docs/url-context ENABLE_URL_CONTEXT=true # 是否默认启用 "指定思考预算" 功能 (true/false),不启用时模型一般将自行决定思考预算 # 当 API 请求中未提供 reasoning_effort 参数时,将使用此值。 ENABLE_THINKING_BUDGET=false # "指定思考预算量" 的默认值 (token) # 当 API 请求中未提供 reasoning_effort 参数时,将使用此值。 DEFAULT_THINKING_BUDGET=8192 # 是否默认启用 "Google Search" 功能 (true/false) # 当 API 请求中未提供 tools 参数时,将使用此设置作为 Google Search 的默认开关状态。 ENABLE_GOOGLE_SEARCH=false ``` ### 超时配置 ```env # 响应完成总超时时间 (毫秒) RESPONSE_COMPLETION_TIMEOUT=300000 # 轮询间隔 (毫秒) POLLING_INTERVAL=300 POLLING_INTERVAL_STREAM=180 # 静默超时 (毫秒) SILENCE_TIMEOUT_MS=60000 ``` ### GUI 启动器配置 ```env # GUI 默认代理地址 GUI_DEFAULT_PROXY_ADDRESS=http://127.0.0.1:7890 # GUI 默认流式代理端口 GUI_DEFAULT_STREAM_PORT=3120 # GUI 默认 Helper 端点 GUI_DEFAULT_HELPER_ENDPOINT= ``` ### 脚本注入配置 v3.0 🆕 ```env # 是否启用油猴脚本注入功能 ENABLE_SCRIPT_INJECTION=true # 油猴脚本文件路径(相对于项目根目录) # 模型数据直接从此脚本文件中解析,无需额外配置文件 USERSCRIPT_PATH=browser_utils/more_modles.js ``` **脚本注入功能 v3.0 重大升级**: - **🚀 Playwright 原生拦截**: 使用 Playwright 路由拦截,100% 可靠性 - **🔄 双重保障机制**: 网络拦截 + 脚本注入,确保万无一失 - **📝 直接脚本解析**: 从油猴脚本中自动解析模型列表,无需配置文件 - **🔗 前后端同步**: 前端和后端使用相同的模型数据源 - **⚙️ 零配置维护**: 脚本更新时自动获取新的模型列表 - **🔄 自动适配**: 油猴脚本更新时无需手动更新配置 **与 v1.x 的主要区别**: - 移除了 `MODEL_CONFIG_PATH` 配置项(已废弃) - 不再需要手动维护模型配置文件 - 工作机制从"配置文件 + 脚本注入"改为"直接脚本解析 + 网络拦截" 详细使用方法请参见 [脚本注入指南](script_injection_guide.md)。 ## 配置优先级 配置项的优先级顺序(从高到低): 1. **命令行参数** - 直接传递给程序的参数 2. **环境变量** - 系统环境变量或 `.env` 文件中的变量 3. **默认值** - 代码中定义的默认值 ## 常见配置场景 ### 场景 1:使用代理 ```env # 启用代理 HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 # GUI 中也使用相同代理 GUI_DEFAULT_PROXY_ADDRESS=http://127.0.0.1:7890 ``` ### 场景 2:调试模式 ```env # 启用详细日志 DEBUG_LOGS_ENABLED=true TRACE_LOGS_ENABLED=true SERVER_LOG_LEVEL=DEBUG SERVER_REDIRECT_PRINT=true ``` ### 场景 3:生产环境 ```env # 生产环境配置 SERVER_LOG_LEVEL=WARNING DEBUG_LOGS_ENABLED=false TRACE_LOGS_ENABLED=false # 更长的超时时间 RESPONSE_COMPLETION_TIMEOUT=600000 SILENCE_TIMEOUT_MS=120000 ``` ### 场景 4:自定义端口 ```env # 避免端口冲突 DEFAULT_FASTAPI_PORT=3048 DEFAULT_CAMOUFOX_PORT=9223 STREAM_PORT=3121 ``` ### 场景 5:启用脚本注入 v3.0 🆕 ```env # 启用脚本注入功能 v3.0 ENABLE_SCRIPT_INJECTION=true # 使用自定义脚本(模型数据直接从脚本解析) USERSCRIPT_PATH=browser_utils/my_custom_script.js # 调试模式查看注入效果 DEBUG_LOGS_ENABLED=true # 流式代理配置(与脚本注入配合使用) STREAM_PORT=3120 ``` **v3.0 脚本注入优势**: - 使用 Playwright 原生网络拦截,无时序问题 - 前后端模型数据100%同步 - 零配置维护,脚本更新自动生效 ## 配置优先级 项目采用分层配置系统,按以下优先级顺序确定最终配置: 1. **命令行参数** (最高优先级) ```bash # 命令行参数会覆盖 .env 文件中的设置 python launch_camoufox.py --headless --server-port 3048 ``` 2. **`.env` 文件配置** (推荐) ```env # .env 文件中的配置 DEFAULT_FASTAPI_PORT=2048 ``` 3. **系统环境变量** (最低优先级) ```bash # 系统环境变量 export DEFAULT_FASTAPI_PORT=2048 ``` ### 使用建议 - **日常使用**: 在 `.env` 文件中配置所有常用设置 - **临时调整**: 使用命令行参数进行临时覆盖,无需修改 `.env` 文件 - **CI/CD 环境**: 可以通过系统环境变量进行配置 ## 注意事项 ### 1. 文件安全 - `.env` 文件已被 `.gitignore` 忽略,不会被提交到版本控制 - 请勿在 `.env.example` 中包含真实的敏感信息 - 如需分享配置,请复制并清理敏感信息后再分享 ### 2. 格式要求 - 环境变量名区分大小写 - 布尔值使用 `true`/`false` - 数组使用 JSON 格式:`["item1", "item2"]` - 字符串值如包含特殊字符,请使用引号 ### 3. 重启生效 修改 `.env` 文件后需要重启服务才能生效。 ### 4. 验证配置 启动服务时,日志会显示加载的配置信息,可以通过日志验证配置是否正确。 ## 故障排除 ### 配置未生效 1. 检查 `.env` 文件是否在项目根目录 2. 检查环境变量名是否正确(区分大小写) 3. 检查值的格式是否正确 4. 重启服务 ### 代理配置问题 1. 确认代理服务器地址和端口正确 2. 检查代理服务器是否正常运行 3. 验证网络连接 ### 端口冲突 1. 检查端口是否被其他程序占用 2. 使用 GUI 启动器的端口检查功能 3. 修改为其他可用端口 ## 更多信息 - [安装指南](installation-guide.md) - [高级配置](advanced-configuration.md) - [故障排除](troubleshooting.md)