deploy-agent: 自动化多步骤部署工作流 - Openclaw Skills

作者:互联网

2026-03-20

AI教程

什么是 deploy-agent?

deploy-agent 是一款专门为使用 Openclaw Skills 的开发者设计的自动化工具,用于管理复杂的全栈部署生命周期。它提供了一个结构化的多阶段工作流,包括构建、本地测试、版本控制集成和云端托管。通过在每个关键阶段强制执行人工审批,确保只有经过验证的代码才能进入生产环境。

该技能对于现代 Web 框架特别强大,提供了与 GitHub 和 Cloudflare Pages 的深度集成。它消除了手动部署步骤的摩擦,同时通过其持久化状态管理系统保持高度的可靠性,使其成为 Openclaw Skills 生态系统中不可或缺的组件。

下载入口:https://github.com/openclaw/skills/tree/main/skills/sherajdev/deploy-agent

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install deploy-agent

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 deploy-agent。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

deploy-agent 应用场景

  • 以最少的手动配置将 Next.js 或 React 应用程序部署到 Cloudflare Pages。
  • 为使用 Openclaw Skills 的个人开发者或小型团队标准化 CI/CD 工作流。
  • 在项目初始启动期间管理 GitHub 仓库的创建和同步。
  • 在自动化部署管道中实施人工验证关卡,防止生产环境出现损坏的构建。
deploy-agent 工作原理
  1. 流程从初始化步骤开始,定义部署名称并完成设计阶段。
  2. 代理执行构建命令以编译应用程序资产。
  3. 触发本地测试阶段,在迁移到远程环境之前验证应用程序的功能。
  4. 代理使用 GitHub CLI 创建仓库并推送本地代码库。
  5. 最后,代理利用 Wrangler 将应用程序部署到 Cloudflare Pages,并可选择配置自定义域名。

deploy-agent 配置指南

要在 Openclaw Skills 框架内开始使用此技能,请按照以下步骤操作:

# 通过 ClawdHub 安装部署代理
clawdhub install deploy-agent

# 确保已安装所需的 CLI 工具
# 需要:gh (GitHub CLI)、wrangler (Cloudflare CLI) 和 git

# 在 ~/.wrangler.toml 中配置您的 Cloudflare API 令牌
# [account]
# api_token = "your-cloudflare-token"

deploy-agent 数据架构与分类体系

deploy-agent 为每个项目维护一个持久状态,以确保跨会话的连续性。数据存储在 ~/.clawdbot/skills/deploy-agent/state/{deployment-name}.json 中,结构如下:

字段 类型 描述
name 字符串 部署的唯一标识符
step 整数 5 步工作流中的当前阶段
status 字符串 当前执行状态(例如:已部署、待处理)
repo_url 字符串 已创建的 GitHub 仓库链接
domain 字符串 Cloudflare 上应用程序的实时 URL
name: deploy-agent
description: Multi-step deployment agent for full-stack apps. Build → Test → GitHub → Cloudflare Pages with human approval at each step.
metadata:
  clawdbot:
    emoji: "??"
    requires:
      bins: ["gh", "wrangler", "git"]

deploy-agent

Deploy full-stack applications via a multi-step workflow with human approval at each stage.

Quick Start

# Install via ClawdHub
clawdhub install deploy-agent

# Initialize a new deployment
deploy-agent init my-app

# Check status
deploy-agent status my-app

# Continue through steps
deploy-agent continue my-app

Workflow Steps

Step Command Description Requires Approval
1 deploy-agent init Start deployment ? Design phase
2 deploy-agent build Build app ? Before testing
3 deploy-agent test Test locally ? Before GitHub
4 deploy-agent push Push to GitHub ? Before Cloudflare
5 deploy-agent deploy Deploy to Cloudflare ? Final

Commands

Initialize Deployment

deploy-agent init my-app

Creates a new deployment state and waits for design input.

Check Status

deploy-agent status my-app

Shows current step, approvals, and deployment info.

Continue

deploy-agent continue my-app

Get guidance on what to do next in the current step.

Build (Step 2)

deploy-agent build my-app

After designing with C.R.A.B, run this to build the app.

Test (Step 3)

deploy-agent test my-app

Verify the app is running locally before pushing.

Push to GitHub (Step 4)

deploy-agent push my-app [repo-name]

Creates GitHub repo and pushes code. Default repo name = app name.

Deploy to Cloudflare (Step 5)

deploy-agent deploy my-app [custom-domain]

Deploys to Cloudflare Pages. Default domain: {name}.sheraj.org

Cancel

deploy-agent cancel my-app

Aborts and cleans up the deployment.

List

deploy-agent list

Shows all active deployments.

Example Session

# Start new deployment
$ deploy-agent init my-blog
?? Deployment initialized: my-blog
Step 1: Design your app with C.R.A.B

# ... design phase with C.R.A.B ...

$ deploy-agent build my-blog
?? Build complete! Step 2: Local Testing
Start dev server: cd my-blog && npm run dev

# ... test locally ...

$ 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

State Management

State stored in: ~/.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"
}

Requirements

Tool Purpose
gh GitHub repo creation and management
wrangler Cloudflare Pages deployment
git Version control
jq JSON parsing (for state management)

Configuration

Cloudflare token should be configured in ~/.wrangler.toml:

[account]
api_token = "your-cloudflare-token"

Notes

  • Each deployment is independent
  • State persists across sessions
  • Human approval required at each major step
  • Use "cancel" to abort anytime

Next.js + Cloudflare D1 Deployment Guide

This section covers common pitfalls and fixes for deploying Next.js apps with D1 on Cloudflare Pages.

Pre-Deployment Checklist

Check Command Fix if Failed
Next.js version npm list next npm install next@15.5.2
Package lock sync rm -rf node_modules package-lock.json && npm install Commit lock file
Cloudflare adapter npm list @cloudflare/next-on-pages npm install -D @cloudflare/next-on-pages
wrangler installed npm list wrangler npm install -D wrangler

Required Configuration

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 Routes (each file)

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 Build Settings

Setting Value
Build command npx @cloudflare/next-on-pages
Output directory .vercel/output/static
Functions Enable (for D1 API routes)

Common Issues & Fixes

Issue Error Fix
Lock file mismatch 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 version peer next@">=14.3.0 && <=15.5.2" from @cloudflare/next-on-pages Downgrade to next: "15.5.2"
API routes not edge The following routes were not configured to run with the Edge Runtime Add export const runtime = 'edge';
D1 access pattern Using context.env.DB Use getRequestContext().env.DB
Missing types TypeScript errors for D1 bindings Create env.d.ts with CloudflareEnv interface

CSS Fix (Scrollbar Flicker)

html {
  overflow-x: hidden;
  scrollbar-gutter: stable;
}
body {
  overflow-x: hidden;
}

Post-Deployment

  1. Cloudflare Dashboard → Settings → Functions
  2. Add D1 binding: Variable name DB → Select your database

Reference Documents

  • Full guide: docs/issues/nextjs-cloudflare-d1-deployment.md
  • Cloudflare docs: https://developers.cloudflare.com/pages/framework-guides/nextjs/