为 uvicorn/FastAPI Python Web 项目生成独立的开发/测试/生产环境,支持前端(Vue/React)。创建独立的配置文件和启动脚本。
多环境孤立器是一项面向实际任务的技能,主要用于将孤立的 dev/ test/ product 环境用于uvicorn/ FastAPI 的项目, 并有一个命令的前端支持( Vue/ React);What This Skill does. 这个技能解决了一个。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
使用一条命令,为基于 uvicorn/FastAPI 的项目(支持 Vue/React 前端)生成完全隔离的开发(dev)、测试(test)、生产(prod)环境。
本能力解决多智能体 AI 团队中的一个常见问题:开发者、测试人员与生产用户相互干扰。 它生成一套完整的环境隔离方案,确保:
每个环境均拥有独立的配置文件、启动脚本(后端 + 前端)、数据库、媒体存储目录及 Playwright 测试配置——彼此彻底隔离。
执行初始化脚本后,将在目标项目内创建如下结构:
your-project/ ├── .env.dev # 开发配置:DEBUG=True,启用热重载,无速率限制 ├── .env.test # 测试配置:启用速率限制,QA 相关设置 ├── .env.prod # 生产配置:DEBUG=False,启用安全 CORS,多 worker 模式 ├── scripts/ │ # 后端脚本 │ ├── start-backend-dev.sh # 在 8000 端口启动开发服务(含 --reload) │ ├── start-backend-test.sh # 在 8001 端口启动测试服务 │ └── start-backend-prod.sh # 在 8002 端口启动生产服务(自动 worker 数量) │ # 前端脚本(Vue/React) │ ├── start-frontend-dev.sh # 在 3000 端口启动开发前端 │ ├── start-frontend-test.sh # 在 3001 端口启动测试前端 │ └── start-frontend-prod.sh # 在 4173 端口启动生产前端(预览模式) │ # 测试脚本 │ └── run-playwright-tests.sh # 在测试环境运行 Playwright 端到端测试 ├── data/ │ ├── dev/ # 开发数据库 + 媒体上传目录(可安全删除) │ │ └── media/ │ ├── test/ # 测试数据库 + 媒体上传目录 │ │ └── media/ │ └── prod/ # 生产数据库 + 媒体上传目录(请务必定期备份!) │ └── media/ ├── docs/ │ └── MULTI_ENV_SETUP.md # 自动生成的团队部署指南 ├── cloud_docs/frontend/ │ └── playwright.config.ts # Playwright 测试配置(仅当前端存在时生成) └── .gitignore # 已更新,排除 .env.* 和 data/ 目录
python3 scripts/setup_envs.py /path/to/your-project --name "Your Project Name" --dev-backend-port 8000 --dev-frontend-port 3000 --test-backend-port 8001 --test-frontend-port 3001 --prod-backend-port 8002 --prod-frontend-port 4173 --dev-user "Valina" --test-user "Choco" --app-module "server.main:app" --frontend-dir "cloud_docs/frontend"
除 --name 外,其余参数均为可选,均已预设合理默认值。
# Valina(开发)使用 ./scripts/start-dev.sh # 同时启动后端(8000)和前端(3000) # Choco(测试)使用 ./scripts/start-test.sh # 同时启动后端(8001)和前端(3001) ./scripts/run-playwright-tests.sh # 运行端到端测试 # 生产环境使用 ./scripts/start-prod.sh # 同时启动后端(8002)和前端(4173)
编辑生成的 .env.dev、.env.test、.env.prod 文件,添加项目专属配置,例如 API 密钥、外部服务地址等。
# 启动开发环境(启用热重载) ./scripts/start-dev.sh # 启动测试环境 ./scripts/start-test.sh # 启动生产环境 ./scripts/start-prod.sh
每个脚本均加载其对应 .env.* 配置文件,绑定独立端口,并写入各自的 data/ 子目录。
python3 scripts/setup_envs.py--name [options]
| 参数 | 默认值 | 说明 |
|---|---|---|
project_dir |
(必需) | 目标项目的路径 |
--name |
(必需) | 项目名称,用于配置文件与文档中 |
--dev-port |
8020 | 开发服务器端口 |
--test-port |
8010 | 测试服务器端口 |
--prod-port |
8000 | 生产服务器端口 |
--dev-user |
(无) | 开发者姓名,显示在开发环境启动提示中 |
--test-user |
(无) | 测试人员姓名,显示在测试环境启动提示中 |
--db-type |
sqlite | sqlite 或 postgres |
--app-module |
server.main:app | Uvicorn 应用模块路径 |
--dev-db |
(自动推导) | 覆盖开发环境数据库 URL |
--test-db |
(自动推导) | 覆盖测试环境数据库 URL |
--prod-db |
(自动推导) | 覆盖生产环境数据库 URL |
| 配置项 | 开发环境(Valina) | 测试环境(Choco) | 生产环境 |
|---|---|---|---|
| 后端端口 | 8000 | 8001 | 8002 |
| 前端端口 | 3000 | 3001 | 4173 |
DEBUG |
True | True | False |
| 热重载 | 启用 | 禁用 | 禁用 |
| CORS | 允许全部来源 | 允许全部来源 | 严格限制 |
| 速率限制 | 关闭 | 开启 | 开启 |
| Worker 数量 | 1(带 reload) | 1 | 自动(按 CPU 核心数) |
| 日志等级 | DEBUG | INFO | WARNING |
| 数据库目录 | data/dev/ |
data/test/ |
data/prod/ |
| 媒体存储目录 | data/dev/media/ |
data/test/media/ |
data/prod/media/ |
| Playwright 测试 | ❌ 不推荐 | ✅ 推荐 | ❌ 禁止 |
采用本方案的团队建议如下分支模型:
main ──────────── 生产环境(start-prod.sh)— 端口 8002/4173 ├── release/* ── 测试环境(start-test.sh + run-playwright-tests.sh)— 端口 8001/3001 └── feature/* ── 开发环境(start-dev.sh)— 端口 8000/3000
feature/* 分支开发,部署至开发环境(8000/3000)release/* 分支后,Choco(测试人员) 在测试环境(8001/3001)进行验证./scripts/run-playwright-tests.shmain 分支,并部署至生产环境(8002/4173)核心优势:Valina 与 Choco 可同时工作,互不冲突!
时间 | Valina(开发) | Choco(测试) ------|---------------------------|--------------------------- 14:00 | start-dev.sh(8000/3000) | - 14:05 | 继续编码... | start-test.sh(8001/3001) 14:10 | 继续编码... | run-playwright-tests.sh 14:20 | 继续编码... | 测试通过!提交结果 14:25 | 继续编码... | stop-test.sh
零端口冲突!零数据干扰! ✅
.env.dev 已存在,脚本将跳过并输出警告。可安全重复执行。start-backend-*.sh 脚本调用 uvicorn 命令。如使用其他框架,请在生成后手动修改脚本。start-frontend-*.sh 脚本使用 npm run dev 和 npm run preview。Vite 项目可开箱即用。.env.prod 中 JWT_SECRET 仅为占位符,请上线前替换为强随机值。data/prod/ 目录包含生产数据库,请建立定期备份机制。npm install -D @playwright/test关于所有环境变量及故障排查,请查阅 references/config-options.md
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章