SuperAPI AI 工具集

convex-quickstart

编程与开发

查看项目

更新于 10-13 20:08

技能介绍

用途

convex-quickstart 用于把一句话想法(idea)快速变成可运行的最简 Convex + Web 模板。它面向“先跑起来、再谈扩展”的场景:在本地搭建一个 barebones(仅骨架)的 Next.js + Convex 模板,配合匿名(anonymous)开发部署,不包含预置鉴权,也没有发布步骤。

主要能力

  • 运行 recipe quickstart-recipe@^2,参数为 {idea, template};该 pack 会拉取并缓存配方,并提供固定版本的离线回退。
  • 自动完成:创建项目、安装依赖、启动后端(匿名)以及 Web 开发服务器。
  • 在打印出开发 URL 后,将其打开供用户查看。
  • 如需在模板之外继续构建功能,会先给出简短计划并请求确认后再动手。

使用方式与规则

  • 若 recipe 已报告成功,不要重复运行。
  • convex/ 目录下的代码交由 convex-expert 能力处理。
  • 不引入 Postgres/Redis/Express,使用 Convex 原语。
  • 此处不添加托管/发布或预置鉴权,除非用户明确要求更多,否则模板保持最小。

降级规则

当脚手架无法运行时(非交互式会话、无网络、沙箱临时目录,或用户只想要代码而非应用),跳过 recipe,直接编写标准 Convex 项目。所有后端代码必须位于 convex/ 下(schema.ts、functions),绝不放在项目根目录;Convex 函数只能在 convex/ 目录中运行。除非明确要求,不写任何脚手架/文档文件(如 START_HERE.md、ARCHITECTURE.md、MANIFEST.txt、大段 README)。"Build me a backend" 意味着代码,而不是仪式。

数据访问与导入约束

  • 在编写任何 convex/*.ts 前:不要在可能增长的表上使用无界的 .collect(),应使用 .withIndex(...) 配合 .paginate(...)/.take(n)。
  • 对相当于 SQL WHERE 的场景使用索引,而非 .filter()。
  • .withIndex(...) 回调只支持 eq/gt/gte/lt/lte,没有 .range(...) 方法。
  • 导入:query/mutation/action/internalQuery/internalMutation/internalAction 来自 ./_generated/server;api/internal 来自 ./_generated/api;应用代码中绝不从 convex/server 导入。
  • 固定字符串/枚举成员用 v.literal("exact value"),不要用裸字符串。
  • "use node" 只能放在仅含 action 的模块顶部,绝不要放在同时导出 query 或 mutation 的文件中。
  • 不要将 Node 内建模块(crypto/fs/path/http/child_process/os,无论是否带 node: 前缀)导入到缺少 "use node" 的文件中,包括 http.ts 路由处理器;尽可能使用 Web Crypto(crypto.subtle)替代导入 crypto。

保留名称与 HTTP 路由

  • 不要导出 const <jsReservedWord> = ...(如 delete、new、class、function、return)作为 query/mutation/action 的导出名,esbuild 无法解析。
  • 表和索引名不要以 _ 开头(如 migrations: defineTable(...)), 是保留的,push 时会报 TableNameReserved/IndexNameReserved。
  • httpRouter 没有 Express 风格的 :param 段(path: "/users/:id" 只会匹配该字面字符串,是死代码);应使用 pathPrefix 并自行解析尾部段。
  • 每个 http.route({...}) 处理器都必须用来自 ./_generated/server 的 httpAction(...) 包裹;裸 async (ctx, request) => {...} 能通过类型检查,但不是有效的 HTTP action。
  • ctx.runQuery/ctx.runMutation/ctx.runAction 需要 codegen 生成的函数引用(api.foo.bar/internal.foo.bar),绝不能是原始导入的模块成员。

自验证规则

在声明后端工作完成前,验证其可编译并可 push:运行 npx tsc --noEmit 并推送到一个部署。优先使用项目已有的部署;否则当 npx convex whoami 成功时使用 npx convex dev --once,仅在失败时使用 CONVEX_AGENT_MODE=anonymous npx convex dev --once。对已登录用户强制匿名会重新绑定 .env.local,使其失去所期望的持久、可发布的云部署。完成前修复其报告的所有错误——一轮验证可捕获相对导入错误、重复符号、括号不匹配等否则会破坏部署的问题。

适用场景与限制

  • 适用:快速原型验证、从想法到本地可运行骨架、需要最小 Convex 配置的演示。
  • 限制:模板刻意保持最小,不含鉴权与发布/托管;非交互或离线环境需走降级路径直接写代码;匿名模式仅在未登录时使用,以免影响既有云部署。

(资料未提供定价、收费或具体平台支持范围等信息。)