
prisma-compute
Prisma Compute 部署和托管指南。当用户提到 Prisma Compute、`prisma.compute.ts`、`defineComputeConfig`、部署或托管 Prisma 应用、`@prisma/cli app deploy`、`compute:deploy`、`create-prisma --deploy`、`PRISMA_SERVICE_TOKEN`、`auth workspace`、Compute 应用/部署/构建日志/域名、`@prisma/cli agent install`、`@prisma/cli feedback`、localhost 与 `0.0.0.0`、部署端口绑定,或框架部署就绪状态(Hono、Elysia、Next.js、TanStack Start、Astro、Nuxt、Svelte、Nest、Turborepo 或自定义/预构建产物)时使用。
Prisma Compute 部署和托管指南。当用户提到 Prisma Compute、`prisma.compute.ts`、`defineComputeConfig`、部署或托管 Prisma 应用、`@prisma/cli app deploy`、`compute:deploy`、`create-prisma --deploy`、`PRISMA_SERVICE_TOKEN`、`auth workspace`、Compute 应用/部署/构建日志/域名、`@prisma/cli agent install`、`@prisma/cli feedback`、localhost 与 `0.0.0.0`、部署端口绑定,或框架部署就绪状态(Hono、Elysia、Next.js、TanStack Start、Astro、Nuxt、Svelte、Nest、Turborepo 或自定义/预构建产物)时使用。
Prisma Compute
引导代理完成 Prisma Compute 应用的创建、部署、运维以及特定框架的部署就绪检查。
Prisma Compute CLI 界面
使用 Prisma Platform CLI 执行 Compute 应用工作流:
bunx @prisma/cli@latest app deploy --help
bunx @prisma/cli@latest app --help
bunx @prisma/cli@latest build logs --help
bunx create-prisma@latest --help
使用 @prisma/cli@latest 部署 Compute 应用。使用 create-prisma@latest 搭建新项目脚手架。
发送反馈和报告 CLI 问题
CLI 内置了反馈通道。当命令崩溃(UNEXPECTED_ERROR)、故障无法通过排查解决,或用户要求向 Prisma 团队发送反馈时使用:
bunx @prisma/cli@latest feedback "app deploy crashed: <第一行错误>"
bunx @prisma/cli@latest feedback "喜欢部署流程" --email you@example.com
崩溃输出会自动指向此处:--json 崩溃信封会在 nextActions 中携带精确的预填充命令作为 recover 条目(直接运行即可),人类可读的崩溃输出末尾会显示 Tell us what happened: 提示。反馈默认匿名,除非传递了 --email,且仅附加 CLI 版本、Node 版本和操作系统平台/架构。消息中切勿包含密钥、连接 URL 或用户数据。
事实来源优先级
在决定编辑或运行什么时,按以下顺序使用证据:
- 项目生成的脚本和配置,特别是
prisma.compute.ts、compute:deploy、框架配置和package.json。 create-prisma和@prisma/cli的 CLI 帮助输出。- 本地安装的包代码、生成的产物和类型定义。
- 官方文档。
何时应用
在以下场景使用此技能:
- 创建可部署到 Prisma Compute 的新应用
- 将现有 TypeScript 应用部署到 Prisma Compute
- 创建或更新类型化的
prisma.compute.ts部署配置 - 判断框架是否已为 Compute 就绪
- 调试
create-prisma --deploy、compute:deploy或app deploy - 管理 Compute 应用日志、部署、环境变量和域名,以及列出平台分支(
branch list;没有分支创建/删除命令) - 检查 GitHub/Console 构建日志和 GitHub 推送部署状态
- 使用浏览器认证、多个已存储工作区或 Prisma 服务令牌执行非交互式部署
- 切换、选择、列出或注销
@prisma/cli的本地 Prisma Platform 工作区 - 使用
@prisma/cli agent install|update|status安装或更新 Prisma 技能 - 使用
@prisma/cli feedback发送反馈或报告无法解决的 CLI 故障 - 使用
@prisma/compute-sdk或 Management API 进行编程式部署
决策树
-
现有项目部署或重新部署:
阅读references/app-deploy-cli.md。 -
类型化 Compute 配置、monorepo、部署目标、应用根目录或构建/环境默认值:
阅读references/compute-config.md。 -
特定框架的构建/运行时工作:
阅读references/frameworks.md。 -
从脚手架创建新项目:
阅读references/create-prisma.md。 -
编程式部署、SDK、API 或底层应用/部署概念:
阅读references/sdk-api.md。 -
构建、认证、环境、部署或运行时故障:
阅读references/troubleshooting.md。
按优先级排序的规则
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 命令验证 | 严重 | verify- |
| 2 | 认证和工作区选择 | 严重 | auth- |
| 3 | 框架就绪 | 严重 | framework- |
| 4 | 运行时主机和端口绑定 | 严重 | runtime- |
| 5 | 类型化 Compute 配置 | 高 | config- |
| 6 | 分支、环境和数据库连接 | 高 | env- |
| 7 | 部署操作 | 高 | deploy- |
| 8 | SDK 和 API 自动化 | 中 | sdk- |
快速规则
1. 命令验证
verify-help-first- 工作时使用 CLI 帮助输出确认命令语法。verify-prisma-vs-platform-cli- 不要假设 ORM CLI 中存在prisma app deploy;检查任务是否应使用@prisma/cli。verify-generated-scripts- 当项目已有生成的compute:deploy脚本时,优先使用它。verify-public-url- 实际部署后,请求公共部署 URL,而不是信任本地或仅就绪检查。verify-config-support- 将prisma.compute.ts视为类型化 Compute 配置;在编辑或部署前检查项目的配置和生成的脚本。verify-auth-workspace-support- 使用@prisma/cli auth workspace命令进行本地工作区列表/使用/注销流程。
2. 认证和工作区选择
auth-source-precedence- 非空的PRISMA_SERVICE_TOKEN是命令的活动认证源,本地 OAuth 工作区在执行时被忽略。如果设置了但为空,CLI 应失败而不是回退到存储的 OAuth。auth-multi-workspace-auth login可以在同一台机器上存储多个工作区的 OAuth 会话。活动工作区指针选择普通命令使用哪个存储的 OAuth 授权。auth-list-before-switch- 使用auth workspace list --json检查本地会话。代理应优先使用 JSON 中的工作区 ID 而不是名称,因为名称可能不明确。auth-switch-explicitly- 使用auth workspace use <id-or-name>进行非交互式切换。仅当交互式选择器或恰好存在一个本地 OAuth 工作区时,才使用不带参数的auth workspace use。auth-no-fallthrough- 如果活动 OAuth 工作区已注销或刷新失败,CLI 不应静默回退到其他缓存的工作区。运行auth workspace use <id>选择下一个工作区。auth-single-workspace-logout- 使用auth workspace logout <id-or-name>或auth logout --workspace <id-or-name>移除一个本地 OAuth 工作区会话。纯auth logout清除所有本地 OAuth 工作区会话。auth-service-token-switching- 当设置了PRISMA_SERVICE_TOKEN时,auth workspace use不可用,因为服务令牌是活动认证源;取消设置环境变量以切换本地 OAuth 工作区。工作区注销仍然只清理本地 OAuth 状态。auth-storage-awareness- 本地 OAuth 凭据存储在平台认证文件中,工作区元数据存储在 sidecar 上下文文件中。项目固定信息存储在.prisma/local.json中,CLI 应用/项目状态存储在prisma.compute.ts附近的.prisma/cli/state.json中(如果存在)。
3. 框架就绪
framework-cli-first- 根据@prisma/cli app deploy评估部署就绪状态,而不是根据create-prisma能搭建什么。framework-supported-cli-deploy- Compute 部署支持nextjs、nuxt、astro、hono、nestjs、tanstack-start、custom和bun。framework-create-prisma-defaults-only-create-prisma可以提供生成的默认值和compute:deploy,但它不是现有应用的通用部署界面。framework-build-output- Compute 需要服务器入口点或框架产物,而不仅仅是静态输出。
4. 运行时主机和端口绑定
runtime-bind-all-interfaces- 部署的服务器必须绑定所有接口(0.0.0.0或框架等效项),而不是硬编码的localhost或127.0.0.1。runtime-match-http-port- 应用必须在部署的 HTTP 端口上监听:尽可能读取process.env.PORT,或传递匹配的--http-port。runtime-readiness-port-only- Compute 就绪检查监听端口;仅回环的监听器可能看起来就绪,但公共入口无法到达。
5. 类型化 Compute 配置
config-optional-simple-app- 部署普通的单个应用不需要prisma.compute.ts;当没有持久配置时使用标志。config-init-formalizer- 使用bunx @prisma/cli@latest init生成新配置:它会检测框架,固定名称/框架/httpPort(以及 Bun/Hono 的入口),并提供项目链接。--format json写入无依赖的prisma.compute.json。init在配置已存在时拒绝,从不搭建代码,也从不部署。config-use-prisma-compute-ts- 将可重用的部署默认值放在prisma.compute.ts中(使用defineComputeConfig),而不是prisma.config.ts。config-app-vs-apps- 对于单个部署目标使用app,对于 monorepo 或多应用仓库使用apps;只能定义一个。config-monorepo-roots- 对于 monorepo,使用prisma.compute.ts声明应用目标、根目录、框架默认值、入口点、端口和环境输入。config-targets- 在多应用配置中,@prisma/cli app deploy web选择apps.web目标。如果没有[app],命令可以从当前目录推断目标;否则 deploy 可以运行所有目标,而 build/run 需要一个目标。config-region-new-app-only- 配置中的region仅是新创建应用的默认值;部署到现有应用会保留应用当前区域。config-custom-artifact- 对于预构建或自定义构建的产物,使用framework: "custom"配合build.outputDirectory和build.entrypoint。config-no-project-branch-secrets- 不要在prisma.compute.ts中提交工作区、项目、分支、生产意图、服务令牌或密钥值;将这些放在标志、.prisma/local.json、环境存储或 CI 密钥中。应用级默认值如region、root、framework、entry、httpPort和非密钥环境文件路径属于配置。config-flags-win- 显式部署标志如--framework、--entry、--http-port、--region和--env会覆盖匹配的配置值。
6. 分支、环境和数据库
env-do-not-leak-secrets- 切勿打印完整的DATABASE_URL、服务令牌或密钥值。env-deploy-loads-dotenv- 生成的部署脚本可能通过prisma.compute.ts或--env .env加载环境变量;重新部署前检查实际脚本/配置。env-migrations-separate- 重新部署脚本不运行迁移或种子数据。单独运行适当的 Prisma 数据库脚本。env-cli-token-name-@prisma/cli使用PRISMA_SERVICE_TOKEN进行服务令牌认证。env-branch-scope- 分支部署、分支环境变量和分支数据库必须使用相同的分支名称;当目标是预览分支时,显式传递--branch <git-name>。env-production-vs-preview- 生产环境使用--role production,预览模板环境使用--role preview,分支特定覆盖使用--branch <git-name>。env-db-explicit- 通过数据库和项目环境命令显式连接数据库和环境;部署示例不应添加数据库设置,部署不会自动运行迁移、种子数据或为每个应用创建数据库。
7. 部署操作
deploy-prod-intent- 仅当用户意图进行生产部署时使用--prod --yes。应用的首次生产部署无需--prod即可自动提升;该标志用于后续生产分支部署。deploy-no-promote- 使用app deploy --no-promote进行构建后验证:它会构建一个候选版本,可通过其自己的 URL 访问,而不影响实时部署,稍后使用app promote <deployment-id>提升。deploy-github-default-branch- 当 Compute 应用连接到 GitHub 推送部署时,合并到默认分支是生产部署路径;检查部署记录或 GitHub 检查运行,而不是告诉用户重新部署已合并的 PR 分支或运行默认分支预览部署。deploy-build-logs- 使用@prisma/cli build logs <build-id>获取 GitHub/Console 构建输出。使用app logs获取运行时部署日志;两个 ID 不同。deploy-noninteractive-auth- 非交互式部署需要正确的活动存储 OAuth 工作区或受支持的服务令牌环境变量;切勿打印令牌。deploy-json-for-agents- 对于脚本和代理可读输出,使用--json --no-interactive。deploy-create-project- 仅当用户希望部署创建并链接新项目时使用--create-project <name>;它与--project和PRISMA_PROJECT_ID冲突。deploy-ops-targets- 应用 show/open/logs/list-deploys/promote/rollback/remove 和域名命令也可以接受来自prisma.compute.ts的[app]目标。deploy-report-cli-bugs- 遇到UNEXPECTED_ERROR或无法解决的故障时,使用反馈命令报告;参见上面的“发送反馈和报告 CLI 问题”。
8. SDK 和 API
sdk-use-cli-first- 应用工作流优先使用@prisma/cli app deploy;仅当用户构建底层自动化时,才使用create-prisma搭建新应用。sdk-result-handling-@prisma/compute-sdk返回Result值;检查isOk()/isErr()而不是依赖异常。
推荐工作流
- 检查项目:包管理器、模板/框架、
package.json脚本、Prisma 版本、Prisma 客户端位置、prisma.compute.ts和现有的compute:deploy。 - 验证实际使用的包的 CLI 帮助输出。
- 在项目/应用变更前验证认证上下文:
auth whoami --json,当可能存在多个本地会话时,使用auth workspace list --json。 - 选择路径:
- 现有应用部署:使用配置支持的目标(如果存在)、生成的
compute:deploy或@prisma/cli app build/run/deploy标志 - 新应用脚手架:
create-prisma,然后使用生成的compute:deploy或@prisma/cli app deploy - 底层自动化:
@prisma/compute-sdk或 Management API
- 现有应用部署:使用配置支持的目标(如果存在)、生成的
- 检查框架就绪状态以及主机/端口/环境/运行时要求,包括项目和分支范围。
- 在可行时先运行本地构建或
app build。 - 自动化时使用 JSON 输出部署,然后请求公共 URL 并总结应用 URL、应用 ID、部署 ID、项目 ID、工作区 ID 和后续步骤。
- 对于 GitHub/Console 构建,在猜测构建失败原因之前,检查
Prisma Compute Deploy检查运行或build logs <build-id>。
避免
- 不要将 Compute 部署指南埋藏在通用的
prisma-cli技能中。 - 不要仅仅为了部署而在现有应用内运行
create-prisma;使用生成的compute:deploy脚本或@prisma/cli app deploy。 - 不要告诉用户每个
create-prisma模板都可以自动部署。 - 不要使用占位符
DATABASE_URL值进行部署。 - 不要假设
next start是 Compute 运行时路径;Next.js 部署需要 standalone 输出。





