用途:这是 cmux 项目的后端 TypeScript 与 Cloud VM 开发规则集,用于指导在 web/app/api/、web/services/ 以及涉及供应商、数据库、认证、限流、重试、超时、遥测的后端脚本中编写代码。
主要能力与约定:默认后端 TypeScript 采用 Effect;保持 Next 路由处理函数轻薄——解析请求、在边界运行一个 Effect 程序、把类型化错误映射为 HTTP 响应,并单独处理意外缺陷。普通 TypeScript 仅用于简单数据结构、常量、配置文件、前端 React 及少量胶水代码。Cloud VM 后端逻辑保留在 Vercel 路由处理函数与由 Postgres 支撑的 Effect 服务中,除非后续架构文档明确更改控制面,否则不要重新引入 Rivet 或原始 actor 协议。Postgres 是 VM 生命周期、活动 VM 限制、幂等性与用量事件的事实来源。生产与预发布 Cloud VM 的 Postgres 使用组织 cmux 下 PlanetScale PostgreSQL 数据库 cmux-prod;运行时通过 CMUX_DB_DRIVER=url 读取 DATABASE_URL,迁移任务使用受保护的 DATABASE_URL 密钥,AWS 凭据不是数据库凭据。生产/预发布迁移命令为 bun run cloud-vm:migrate -- staging 后接 -- production,绝不能在 Vercel 构建或路由启动时执行;本地开发沿用 bun dev 的 CMUX_PORT 派生 Docker Postgres 路径。Cloud VM 创建定价门控在启用时使用 Stack Auth 团队付款项。
密钥:Cloud VM 构建、测试与本地开发脚本从 ~/.secrets/cmux.env 读取供应商密钥,包括 FREESTYLE_API_KEY 以及 web/scripts/build-cloud-vm-images.ts 创建 Freestyle 快照所需的 R2 上传变量,加载方式为 set -a、source ~/.secrets/cmux.env、set +a。~/.secrets/cmuxterm-dev.env 保存本地 Stack/web 环境而非供应商构建密钥;bun dev 在存在时先加载 ~/.secrets/cmux.env,再加载 ~/.secrets/cmuxterm-dev.env,因此 cmuxterm 特定 Stack 设置会覆盖更宽泛的 cmux 密钥。Web 开发加载器在机器迁移期间仍接受旧路径 ~/.secret/cmuxterm.env 与 ~/.secrets/cmuxterm.env。详细参考见 references/effect-boundaries.md(路由处理、服务、类型化错误、重试、依赖注入)与 references/cloud-vm-control-plane.md(VM 生命周期、迁移、Postgres、供应商幂等、定价门控)。
限制:资料未提供具体 API 端点、错误类型定义或完整代码示例,暂未提供更细的字段与返回值说明。