使用 Wasp AI(Mage)创建新 Wasp 应用:从标题与一段描述一键生成全栈项目
【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/wasp
Wasp 自带名为 Wasp AI(代号 Mage,即Magic webAppGEnerator)的应用生成能力,允许你仅凭一个标题和一段简短描述,在 GPT 模型的后台驱动下生成一个全新的 Wasp 全栈应用。本文以 Wasp 0.17 版本官方文档为主线,详细介绍两条生成路径(开源在线应用与本地wasp new命令),并结合仓库源码剖析wasp new的完整执行链路,帮助你快速上手 AI 驱动的项目初始化,并理解其底层行为与注意事项。
Wasp AI(Mage)是什么
Wasp AI 是内置于 Wasp 生态中的应用生成器:你只需提供应用标题和一段一两句话的功能描述,它便会在后台调用 GPT 系列模型,为你产出一个结构完整、可继续开发的 Wasp 项目(包含main.wasp配置文件、src客户端与服务端代码、数据库 schema 等)。这一能力在仓库 ChangeLog 中有明确记载——此前仅可通过在线方式使用,随后 Wasp AI 也进入waspCLI,使开发者能够"仅凭标题和一段简短描述"创建全新的 Wasp 应用。
两条生成路径:在线与本地 CLI
根据 创建新应用文档,使用 Wasp AI 创建新应用主要有两种方式:
- 免费、开源的在线应用 usemage.ai:无需本地配置,直接在线描述应用并下载生成结果。
- 本地运行
wasp new并选择 AI 生成:需要自行提供 OpenAI API Key,但灵活性更高(可自由选择 GPT 模型)。
两条路径在后台使用完全相同的生成逻辑,智能程度一致,区别仅在于界面与可配置项(见 ChangeLog 中关于"提供自己的 OpenAI API Token、可自由选择模型"的说明)。
:::info 实验性特性提醒 Wasp AI 目前属于实验性功能。生成的应用可能包含与其复杂度成正比的错误;即便如此,修复错误后它往往仍是一个很好的起步点,也能作为探索"如何在 Wasp 中实现某个功能"的有趣参考。 :::
路径一:usemage.ai 在线生成
usemage.ai 是一个开源应用,你可以仅凭一个简短的标题和描述就创建出新的 Wasp 应用:
- 完全免费:在线服务使用 Wasp 官方提供的 OpenAI API Key,成本由官方承担。
- 操作极简:提供应用标题、应用描述,并选择一些基础设置后,几分钟内即可生成一个新的 Wasp 应用。
- 可下载继续开发:生成完成后可将项目下载到本地,随后基于它继续迭代。
关于 usemage.ai 的工作原理,官方文档指引读者参阅仓库内的两篇博客文章:《GPT Web App Generator》(介绍 Mage 的工作方式)与 《How We Built GPT Web App Generator》(高层实现思路)。
路径二:wasp new 本地生成
在终端中运行wasp new并选择 AI 生成即可在本地创建新应用。整个交互流程清晰直观:
- 运行
wasp new:进入交互式向导(也可携带参数直接指定项目名与模板,详见下文"命令形式")。 - 提供 OpenAI API Key:若尚未配置,
wasp会要求你通过环境变量(ENV vars)提供自己的 OpenAI API Key,CLI 将用它来查询 GPT。 - 描述应用:输入应用标题与描述,随后选择模型与创造性级别等参数。
- 生成到磁盘:确认后,新应用会被生成到当前目录下。
命令形式与参数
从 ArgumentsParser.hs 的源码可以看到wasp new支持以下形式:
# 交互式创建(依次询问项目名与模板) wasp new # 直接指定项目名(使用默认 starter 模板) wasp new my-project # 指定项目名与模板 wasp new my-project -t <template-name>其中-t / --template用于指定 starter 模板。当以交互方式运行时,CLI 会列出可选模板供你选择,其中就包含 AI 生成模板(标注为 experimental,提示语为"用几句话描述应用,让 Wasp AI 为你生成初始代码")。交互式向导与参数解析逻辑分别位于 ProjectDescription.hs 与 CreateNewProject.hs。
AI 生成的交互参数
选择 AI 生成后,CLI 会引导你完成以下参数配置(见下方截图):
- 应用描述(Describe your app):用一两句话描述应用,例如"一个记录我养的植物清单以及上次浇水时间的应用,我可以为每棵植物指定名称和浇水频率,并执行浇水操作"。
- GPT 模型组合:默认组合为
gpt-4 (planning) + gpt-3.5-turbo (coding),即用更强的模型负责规划、用更经济的模型负责编码;你也可以按成本与速度偏好选择其他组合。若想自由指定模型,需提供自己的 OpenAI API Key。 - 创造性级别(temperature):提供三个档位——Balanced(0.7,默认)、Conventional(0.4)、Creative(1.0),用于控制生成代码的保守程度与发散程度。
生成过程实时输出
提交后,CLI 会实时打印生成进度(见下方截图),整个过程大致分为:生成项目骨架 → 生成初始计划(最耗时步骤,通常需要 30 到 90 秒)→ 修复计划 → 生成操作(actions)与查询(queries)→ 以实体更新 Wasp 文件:
以示例项目 MyPlants 为例,生成器会基于你的描述推导出应用的领域模型,例如规划出 2 个查询(getPlants、getPlant)、2 个操作(createPlant、waterPlant)、2 个实体(User、Plant)与 2 个页面(HomePage、PlantPage),并把这些声明同步写回main.wasp文件。可见生成结果并非零散代码堆砌,而是遵循 Wasp 声明式开发范式的完整工程。
源码视角:wasp new 的执行链路
结合源码可以更准确地理解wasp new的行为边界。入口函数位于 CreateNewProject.hs,其执行顺序为:
- 前置检查:要求本机具备有效的 Node 与 npm 环境(
ValidNodeAndNpm)。 - 获取项目描述:调用 ProjectDescription.hs 中的
obtainNewProjectDescription——若命令行未提供参数则进入交互式询问(项目名、模板);提供了参数则使用参数值,模板缺省时使用默认 starter 模板。 - 创建项目到磁盘:根据所选模板类型(本地内置模板或 GitHub Release 归档模板)在磁盘上生成项目。
- 自动安装依赖:对新项目执行依赖安装;若失败会打印黄色警告,提示在项目目录中运行
wasp install手动安装。 - 打印起步指引:输出成功信息与模板自带的入门说明。
项目名校验规则
ProjectDescription.hs 中parseWaspProjectNameIntoAppName对项目名做了严格校验,校验失败会明确报错:
- 必须以字母或下划线开头;
- 只能包含字母、数字、短横线(
-)与下划线(_); - 不能是 Wasp 关键字。
同时项目名会被转换为驼峰形式作为 Wasp 应用名(kebabToCamelCase),例如my-project对应应用名myProject。
目标目录冲突检查
若当前目录下已存在同名目录,wasp new会直接报错:Directory 'xxx' already exists. Choose a different name or delete the directory first.(见 ProjectDescription.hs),避免覆盖已有项目。
生成后的依赖处理
生成完成后 CLI 会立即尝试为新项目安装依赖;若安装失败,项目本身依然保留,你只需进入项目目录执行wasp install即可补齐依赖(见 CreateNewProject.hs)。
实验性特性与注意事项
- 结果可能含错误:生成的代码可能包含 bug,复杂应用的错误概率更高,应将其视为高质量起点而非终稿。
- 适合学习与探索:即使生成结果不完美,通过阅读生成代码也能快速了解 Wasp 中实体、查询、操作、页面与认证等特性的声明与组织方式。
- 模型选择与成本:本地方式使用你自己的 OpenAI API Key,成本由自己承担,但因此获得模型自由度;在线方式免费但使用官方预设的模型组合。
- 功能仍在演进:仓库 ChangeLog 记录了 Wasp AI 的持续迭代,例如模型从 GPT 3.5 系列升级、生成上下文扩大、以及后续版本中
wasp new:ai支持任意模型名等改进,说明该特性的参数与默认值会随版本变化,使用时应以当前安装版本的文档为准。
进一步探索
- 若想了解 AI 生成之后如何继续在已有应用上借助 Wasp AI 迭代功能,可阅读同目录下的 developing-existing-app.md。
- 深入理解 Mage 的工作方式与实现思路,可阅读 GPT Web App Generator 博客 与 How We Built GPT Web App Generator 博客。
- 阅读 CreateNewProject.hs 与 ArgumentsParser.hs 可进一步掌握
wasp new全部命令形式与底层流程。
【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/wasp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考