📦 C.R.A.B Deploy Agent — 全栈应用多步骤部署代理
v1.1.0该技能提供一个多步骤的部署流程,支持从构建、测试到部署到 GitHub 和 Cloudflare Pages,每一步都需要人工审批。它适用于全栈应用的自动化部署,确保每个阶段的安全和可靠性。
详细分析 ▾
运行时依赖
版本
安装命令
点击复制技能文档
通过多步骤工作流部署全栈应用程序,在每个阶段都需要人工审批。
快速开始
# 通过 ClawdHub 安装 clawdhub install deploy-agent# 初始化新部署 deploy-agent init my-app
# 检查状态 deploy-agent status my-app
# 继续执行步骤 deploy-agent continue my-app
工作流步骤
| 步骤 | 命令 | 描述 | 需要审批 |
|---|---|---|---|
| 1 | deploy-agent init | 开始部署 | ✅ 设计阶段 |
| 2 | deploy-agent build | 构建应用 | ✅ 测试之前 |
| 3 | deploy-agent test | 本地测试 | ✅ 推送 GitHub 之前 |
| 4 | deploy-agent push | 推送到 GitHub | ✅ 部署到 Cloudflare 之前 |
| 5 | deploy-agent deploy | 部署到 Cloudflare | ✅ 最终确认 |
命令
初始化部署
deploy-agent init my-app
创建新的部署状态并等待设计输入。
检查状态
deploy-agent status my-app
显示当前步骤、审批信息和部署详情。
继续
deploy-agent continue my-app
获取当前步骤的下一步操作指导。
构建(第 2 步)
deploy-agent build my-app
使用 C.R.A.B 设计完成后,运行此命令构建应用。
测试(第 3 步)
deploy-agent test my-app
在推送之前验证应用是否在本地正常运行。
推送到 GitHub(第 4 步)
deploy-agent push my-app [repo-name]
创建 GitHub 仓库并推送代码。默认仓库名称 = 应用名称。
部署到 Cloudflare(第 5 步)
deploy-agent deploy my-app [custom-domain]
部署到 Cloudflare Pages。默认域名:{name}.sheraj.org
取消
deploy-agent cancel my-app
中止并清理部署。
列表
deploy-agent list
显示所有活动部署。
示例会话
# 开始新部署 $ deploy-agent init my-blog 🚀 Deployment initialized: my-blog Step 1: Design your app with C.R.A.B# ... 使用 C.R.A.B 进行设计阶段 ...
$ deploy-agent build my-blog 🚀 Build complete! Step 2: Local Testing Start dev server: cd my-blog && npm run dev
# ... 本地测试 ...
$ deploy-agent push my-blog 🚀 GitHub repository ready! Say 'deploy-agent deploy my-blog' to deploy to Cloudflare
$ deploy-agent deploy my-blog my-blog.sheraj.org 🎉 Deployment complete! App live at: https://my-blog.sheraj.org
状态管理
状态存储在:~/.clawdbot/skills/deploy-agent/state/{deployment-name}.json
{
"name": "my-blog",
"step": 5,
"status": "deployed",
"created_at": "2026-01-18T08:00:00Z",
"repo_url": "https://github.com/user/my-blog",
"domain": "https://my-blog.sheraj.org"
}
需求
| 工具 | 用途 |
|---|---|
gh | GitHub 仓库创建和管理 |
wrangler | Cloudflare Pages 部署 |
git | 版本控制 |
jq | JSON 解析(用于状态管理) |
配置
Cloudflare 令牌应在 ~/.wrangler.toml 中配置:
[account]
api_token = "your-cloudflare-token"
注意事项
- 每个部署都是独立的
- 状态在会话之间持久保存
- 每个主要步骤都需要人工审批
- 随时可以使用 "cancel" 中止
Next.js + Cloudflare D1 部署指南
本节介绍在 Cloudflare Pages 上部署 Next.js 应用与 D1 时的常见陷阱和修复方法。
部署前检查清单
| 检查项 | 命令 | 失败时的修复 |
|---|---|---|
| Next.js 版本 | npm list next | npm install next@15.5.2 |
| Package lock 同步 | rm -rf node_modules package-lock.json && npm install | 提交 lock 文件 |
| Cloudflare 适配器 | npm list @cloudflare/next-on-pages | npm install -D @cloudflare/next-on-pages |
| wrangler 已安装 | npm list wrangler | npm install -D wrangler |
必需配置
1. package.json
{
"dependencies": {
"next": "15.5.2",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@cloudflare/next-on-pages": "^1.13.16",
"wrangler": "^4.x"
}
}
2. wrangler.toml
name = "my-app" compatibility_date = "2026-01-18" compatibility_flags = ["nodejs_compat"]
[[d1_databases]] binding = "DB" database_name = "my-db" database_id = "your-db-id"
3. API 路由(每个文件)
import { getRequestContext } from '@cloudflare/next-on-pages';export const runtime = 'edge';
export async function GET() { const { env } = getRequestContext(); const { results } = await env.DB.prepare("SELECT * FROM tasks").all(); return Response.json({ data: results }); }
Cloudflare Pages 构建设置
| 设置 | 值 |
|---|---|
| 构建命令 | npx @cloudflare/next-on-pages |
| 输出目录 | .vercel/output/static |
| Functions | 启用(用于 D1 API 路由) |
常见问题与修复
| 问题 | 错误信息 | 修复 |
|---|---|---|
| Lock 文件不匹配 | npm ci can only install packages when your package.json and package-lock.json are in sync | rm -rf node_modules package-lock.json && npm install && git add package-lock.json |
| Next.js 版本 | @cloudflare/next-on-pages 要求 peer next@">=14.3.0 && <=15.5.2" | 降级到 next: "15.5.2" |
| API 路由不是 edge | The following routes were not configured to run with the Edge Runtime | 添加 export const runtime = 'edge'; |
| D1 访问模式 | 使用 context.env.DB | 使用 getRequestContext().env.DB |
| 缺少类型 | D1 绑定的 TypeScript 错误 | 创建 env.d.ts 并包含 CloudflareEnv 接口 |
CSS 修复(滚动条闪烁)
html { overflow-x: hidden; scrollbar-gutter: stable; }
body { overflow-x: hidden; }
部署后
- Cloudflare Dashboard → Settings → Functions
- 添加 D1 绑定:变量名
DB→ 选择你的数据库
参考文档
- 完整指南:
docs/issues/nextjs-cloudflare-d1-deployment.md - Cloudflare 文档:https://developers.cloudflare.com/pages/framework-guides/nextjs/