← 返回 Skills 市场
alexxxiong

InspirAI Deploy

作者 alexxiong · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
281
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install inspirai-deploy
功能描述
智能部署工具 - 自动检测部署策略,预检查、发布、监控一体化。支持 K8s/Helm、Docker Compose、Vercel、Fly.io。Triggers: '部署', 'deploy', '发布', '上线', '预检查', '部署监控', 'helm upgrade', 'docker compose...
使用说明 (SKILL.md)

inspirai-deploy - 智能部署工具

自动检测部署策略,执行预检查、发布、监控的一体化部署工具。支持 K8s/Helm、Docker Compose、Vercel、Fly.io。

Init

初始化部署配置

自动检测项目结构,生成 .deploy.yaml 配置文件。

使用方式

/deploy init                     # 自动检测并生成配置
/deploy init --strategy k8s      # 指定策略

执行步骤

Step 1: 检测项目结构

echo "[INFO] 检测项目结构..."

# 检测部署策略
DETECTED_STRATEGIES=""

[ -d "helm" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES k8s"
[ -f "docker-compose.yml" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES compose"
[ -f "docker-compose.prod.yml" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES compose"
[ -f "vercel.json" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES vercel"
[ -f "fly.toml" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES fly"
[ -f "Dockerfile" ] && DETECTED_STRATEGIES="$DETECTED_STRATEGIES docker-ssh"

echo "[INFO] 检测到策略: $DETECTED_STRATEGIES"

Step 2: 收集信息

使用 AskUserQuestion 确认或补充信息:

  1. 策略选择 — 如果检测到多个,让用户选择
  2. 项目名称 — 从 package.json / go.mod / 目录名推断
  3. 环境列表 — 从 helm/environments 或询问用户

Step 3: 策略专属信息收集

K8s:

  • 从 justfile/Makefile 提取 registry 信息
  • 从 helm/ 目录发现 chart 和 values
  • 从 .service-tags.json 或 services/ 发现组件
  • 从 helm/environments/ 发现环境配置

Compose:

  • 解析 docker-compose.yml 中的 services
  • 检测远程部署目标(如有)

Vercel/Fly:

  • 从 vercel.json / fly.toml 读取项目配置

Step 4: 生成 .deploy.yaml

K8s 模板:

strategy: k8s

project:
  name: {project_name}
  description: {description}

registry:
  domain: {registry_domain}
  namespace: {registry_namespace}
  overrides:
    prd: {vpc_registry}

components:
  - name: {component}
    path: services/{component}
    image: {project}-{component}

environments:
  dev:
    cluster: {cluster}
    namespace: {namespace}
    context: {context}
  prd:
    cluster: {cluster}
    namespace: {namespace}
    context: {context}

commands:
  build: "{build_cmd}"
  push: "{push_cmd}"
  deploy: "{deploy_cmd}"
  config: "{config_cmd}"

helm:
  chart_path: helm/{chart}
  release_name: {release}

monitor:
  interval: 5
  timeout: 600
  failure_threshold: 3

Compose 模板:

strategy: compose

project:
  name: {project_name}

compose:
  file: docker-compose.prod.yml
  # 远程部署(可选)
  host: {user}@{server}
  path: /opt/{project_name}

environments:
  dev:
    file: docker-compose.yml
  prd:
    file: docker-compose.prod.yml

commands:
  deploy: "docker compose -f {file} up -d"
  logs: "docker compose -f {file} logs -f"

monitor:
  interval: 5
  timeout: 120

Vercel 模板:

strategy: vercel

project:
  name: {project_name}

environments:
  preview:
    auto: true
  prd:
    branch: main
    prod: true

commands:
  deploy: "vercel --prod"
  preview: "vercel"

Step 5: 确认配置

显示生成的配置文件,询问用户确认或修改。

输出

  • 在项目根目录生成 .deploy.yaml
  • 建议将 .deploy.yaml 加入版本控制(不含敏感信息时)

注意事项

  • 如果 .deploy.yaml 已存在,询问是否覆盖
  • 敏感信息(credentials、tokens)不写入配置文件
  • 配置文件中使用占位符的命令模板,实际值从环境变量读取

Check

部署预检查

执行部署前的预检查,确保所有条件就绪。

安全原则

只检查、只报告,不修改任何文件。 发现问题后提供修复建议,由用户决定是否执行。

使用方式

/deploy check \x3Cenv> [components...] [options]

选项:
  --image-only         仅检查镜像
  --config-only        仅检查配置
  --connectivity-only  仅检查连通性
  --strategy \x3Ctype>    指定策略

执行步骤

Step 1: 检测策略并加载配置

同 Run 部分的 Step 1。

Step 2: 通用检查

所有策略都执行的检查:

echo "[INFO] ========== 通用预检查 =========="

# 1. 环境变量检查
echo "[CHECK] 环境变量..."
# 检查 .env / .env.{env} 是否存在必需变量

# 2. Git 状态检查
echo "[CHECK] Git 状态..."
UNCOMMITTED=$(git status --porcelain | wc -l | tr -d ' ')
if [ "$UNCOMMITTED" -gt 0 ]; then
    echo "[WARN] 有 $UNCOMMITTED 个未提交的变更"
fi

# 3. 分支检查(生产环境)
if [ "$ENV" = "prd" ]; then
    BRANCH=$(git rev-parse --abbrev-ref HEAD)
    if [ "$BRANCH" != "main" ] && [ "$BRANCH" != "master" ]; then
        echo "[WARN] 当前分支 $BRANCH 不是主分支"
    fi
fi

Step 3: 策略专属检查

K8s 策略:

echo "[INFO] ========== K8s 预检查 =========="

# 1. 镜像推送检查
echo "[CHECK] 镜像推送状态..."
for comp in $COMPONENTS; do
    tag=$(get_version_tag "$comp" "$ENV")
    image="$REGISTRY/$NAMESPACE/${comp}:${tag}"
    if docker manifest inspect "$image" &>/dev/null; then
        echo "  ✓ $comp: $tag"
    else
        echo "  ✗ $comp: $tag (未推送)"
        FAILED=true
    fi
done

# 2. 配置同步检查
echo "[CHECK] 配置同步..."
# 渲染本地 Helm values vs 集群 ConfigMap/Secret
# 对比 data 字段差异

# 3. 集群连通性
echo "[CHECK] 集群连通性..."
kubectl cluster-info $KUBECTL_ARGS &>/dev/null || echo "[ERROR] 无法连接集群"

# 4. Namespace 存在性
kubectl get namespace "$NAMESPACE" $KUBECTL_ARGS &>/dev/null || echo "[ERROR] Namespace $NAMESPACE 不存在"

Compose 策略:

echo "[INFO] ========== Compose 预检查 =========="

# 1. 镜像构建检查
echo "[CHECK] 镜像构建..."
docker compose config --quiet || echo "[ERROR] compose 配置无效"

# 2. 目标主机连通性(远程部署时)
if [ -n "$DEPLOY_HOST" ]; then
    echo "[CHECK] 远程主机连通性..."
    ssh -o ConnectTimeout=5 "$DEPLOY_HOST" "echo ok" || echo "[ERROR] 无法连接 $DEPLOY_HOST"
fi

# 3. 磁盘空间
echo "[CHECK] 磁盘空间..."
docker system df

Vercel/Fly 策略:

echo "[INFO] ========== 平台预检查 =========="

# 1. CLI 登录状态
echo "[CHECK] 登录状态..."
vercel whoami || fly auth whoami || echo "[ERROR] 未登录"

# 2. 项目链接
echo "[CHECK] 项目链接..."
# 检查是否已 link 到远程项目

Step 4: 输出报告

========== 预检查报告 ==========

环境: uat
策略: k8s
组件: core, ops, admin

通用检查:
  ✓ 环境变量完整
  ✓ Git 状态干净
  ✓ 分支: main

策略检查:
  ✓ 镜像: core (v1.2.3)
  ✗ 镜像: ops (v1.2.3) - 未推送
  ✓ 配置同步
  ✓ 集群连通

结果: 1 项失败
建议: 执行 `just push uat COMPONENTS="ops"` 推送镜像后重试

注意事项

  • 检查过程完全只读,不修改任何文件或集群状态
  • 失败项提供具体的修复命令建议
  • 可单独运行用于 CI/CD pipeline 的 gate check

Run

执行部署

自动检测部署策略,执行完整的 check → deploy → monitor 流程。

安全原则

严禁修改应用逻辑代码。 本 skill 只操作部署相关文件(配置、Dockerfile、Helm、compose 等)。

如果部署过程中发现问题源于应用逻辑:

  1. 立即停止部署
  2. 报告问题详情(错误日志、堆栈信息)
  3. 建议转交专业技能处理(如 /wxm:dev、代码修复等)
  4. 设置检查点,修复后可从当前步骤恢复部署

使用方式

/deploy run \x3Cenv> [components...] [options]

参数:
  env          目标环境 (dev/test/uat/prd)
  components   要部署的组件列表(默认: 全部)

选项:
  --skip-check         跳过所有预检查
  --skip-image-check   跳过镜像推送检查
  --skip-config-check  跳过配置同步检查
  --force              强制部署
  --strategy \x3Ctype>    指定策略(跳过自动检测)

执行步骤

Step 1: 检测部署策略

按优先级自动检测:

# 1. 显式配置
if [ -f ".deploy.yaml" ]; then
    STRATEGY=$(grep "^strategy:" .deploy.yaml | awk '{print $2}')
fi

# 2. 自动检测
if [ -z "$STRATEGY" ]; then
    if [ -d "helm" ] && command -v kubectl &>/dev/null; then
        STRATEGY="k8s"
    elif [ -f "docker-compose.yml" ] || [ -f "docker-compose.prod.yml" ]; then
        STRATEGY="compose"
    elif [ -f "vercel.json" ]; then
        STRATEGY="vercel"
    elif [ -f "fly.toml" ]; then
        STRATEGY="fly"
    elif [ -f "Dockerfile" ]; then
        STRATEGY="docker-ssh"
    elif [ -f "package.json" ]; then
        STRATEGY="script"
    else
        echo "[ERROR] 无法检测部署策略,请创建 .deploy.yaml"
        exit 1
    fi
fi

echo "[INFO] 部署策略: $STRATEGY"

Step 2: 预检查(调用 Check)

执行策略对应的预检查,参见 Check 部分。

如果检查失败:

  • 展示失败原因
  • 提供选项:修复后重试 / 跳过检查 / 中止

Step 3: 执行部署

根据策略执行部署命令:

K8s 策略:

# 从 .deploy.yaml 或自动发现获取命令
DEPLOY_CMD=$(get_command "deploy" "$ENV")
# 通常是: just deploy $ENV 或 helm upgrade ...

echo "[INFO] 执行部署: $DEPLOY_CMD"
eval "$DEPLOY_CMD"

Compose 策略:

COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
if [ "$ENV" = "prd" ]; then
    COMPOSE_FILE="docker-compose.prod.yml"
fi

docker compose -f "$COMPOSE_FILE" up -d $COMPONENTS

Vercel 策略:

if [ "$ENV" = "prd" ]; then
    vercel --prod
else
    vercel
fi

Fly 策略:

fly deploy --app "$APP_NAME"

Script 策略:

# 从 package.json scripts 中查找
npm run deploy:$ENV

Step 4: 监控(调用 Monitor)

部署命令执行后,自动进入监控模式,参见 Monitor 部分。

Step 5: 问题处理

部署失败时的处理流程:

检测到错误类型:
├── 配置错误(env vars、secrets)
│   → 提示修改部署配置,不触碰应用代码
├── 镜像拉取失败
│   → 检查 registry 连通性和镜像 tag
├── 健康检查失败(应用启动异常)
│   → ⚠️ 可能是逻辑问题
│   → 停止部署,输出日志
│   → 建议: "应用启动失败,建议检查应用代码后重新部署"
├── 资源不足(OOM、CPU limit)
│   → 提示调整资源配额
└── 未知错误
    → 输出完整日志,等待用户指示

严格规则:任何涉及修改 .go / .ts / .js / .py 等业务代码的操作,必须停止并转交。

检查点机制

每个步骤完成后设置检查点:

checkpoint: strategy_detected → checks_passed → deploy_submitted → monitoring

失败后恢复:

/deploy run \x3Cenv> --resume    # 从上次检查点恢复

示例

/deploy run uat                    # 完整流程部署到 uat
/deploy run prd core ops           # 只部署 core 和 ops 到生产
/deploy run dev --skip-check       # 开发环境跳过检查
/deploy run uat --strategy compose # 强制使用 compose 策略

Monitor

部署状态监控

监控进行中的部署状态,检测异常并提供诊断信息。

安全原则

只监控、只报告。 发现应用层错误时停止监控,报告问题并建议转交处理。严禁自动修改应用代码来"修复"问题。

使用方式

/deploy monitor \x3Cenv> [options]

选项:
  --timeout \x3Cseconds>   超时时间(默认 600)
  --interval \x3Cseconds>  轮询间隔(默认 5)
  --logs                同时显示 Pod 日志
  --strategy \x3Ctype>     指定策略

执行步骤

Step 1: 确定监控目标

根据策略确定要监控的资源:

K8s: Deployment replicas、Pod status、Events Compose: Container status、health checks Vercel/Fly: Deployment status API

Step 2: 轮询监控

K8s 监控:

TIMEOUT=${TIMEOUT:-600}
INTERVAL=${INTERVAL:-5}
START_TIME=$(date +%s)

while true; do
    ELAPSED=$(( $(date +%s) - START_TIME ))
    if [ $ELAPSED -gt $TIMEOUT ]; then
        echo "[TIMEOUT] 超过 ${TIMEOUT}s 未完成"
        break
    fi

    echo "[INFO] ===== $(date +%H:%M:%S) (${ELAPSED}s) ====="

    # Deployment 状态
    kubectl get deployment -n $NAMESPACE -l "$INSTANCE_LABEL" $KUBECTL_ARGS \
        -o custom-columns="NAME:.metadata.name,READY:.status.readyReplicas,DESIRED:.spec.replicas,UP-TO-DATE:.status.updatedReplicas"

    # Pod 状态
    kubectl get pods -n $NAMESPACE -l "$INSTANCE_LABEL" $KUBECTL_ARGS \
        -o custom-columns="NAME:.metadata.name,STATUS:.status.phase,RESTARTS:.status.containerStatuses[0].restartCount,AGE:.metadata.creationTimestamp"

    # 异常事件
    WARNINGS=$(kubectl get events -n $NAMESPACE $KUBECTL_ARGS \
        --field-selector type=Warning --sort-by='.lastTimestamp' 2>/dev/null | tail -5)
    if [ -n "$WARNINGS" ]; then
        echo ""
        echo "[WARN] 异常事件:"
        echo "$WARNINGS"
    fi

    # 检查是否全部就绪
    NOT_READY=$(kubectl get deployment -n $NAMESPACE -l "$INSTANCE_LABEL" $KUBECTL_ARGS \
        -o jsonpath='{range .items[*]}{.metadata.name}:{.status.readyReplicas}/{.spec.replicas}{"\
"}{end}' \
        | grep -v -E "^[^:]+:([0-9]+)/\1$" | wc -l | tr -d ' ')

    if [ "$NOT_READY" -eq 0 ]; then
        echo ""
        echo "[SUCCESS] ✓ 所有 Deployment 已就绪"
        break
    fi

    sleep $INTERVAL
done

Compose 监控:

while true; do
    docker compose ps --format "table {{.Name}}	{{.Status}}	{{.Health}}"

    # 检查是否全部 healthy
    UNHEALTHY=$(docker compose ps --format json | jq -r 'select(.Health != "healthy") | .Name')
    if [ -z "$UNHEALTHY" ]; then
        echo "[SUCCESS] ✓ 所有容器 healthy"
        break
    fi

    sleep $INTERVAL
done

Step 3: 异常处理

检测到的异常类型及处理:

异常 处理方式
ImagePullBackOff 报告镜像拉取失败,检查 tag 和 registry 权限
CrashLoopBackOff ⚠️ 停止监控,输出 Pod 日志,建议检查应用代码
OOMKilled 报告内存不足,建议调整 resource limits
Pending (长时间) 检查节点资源和调度约束
CreateContainerConfigError 报告配置错误,检查 ConfigMap/Secret

CrashLoopBackOff 特殊处理(应用逻辑问题):

[ERROR] 检测到 Pod 持续崩溃 (CrashLoopBackOff)

容器: myapp-core-5f8b9c7d4-x2j9k
重启次数: 5
最近日志:
  panic: runtime error: index out of range [3]
  goroutine 1 [running]:
  main.handleRequest(...)
      /app/handlers/user.go:42

⚠️ 这是应用逻辑错误,部署监控已停止。
建议:
  1. 检查 handlers/user.go:42 的数组越界问题
  2. 修复后重新构建镜像
  3. 使用 /deploy run uat core 重新部署

如需回滚到上一版本:
  kubectl rollout undo deployment/myapp-core -n $NAMESPACE

Step 4: 监控结束

成功:

[SUCCESS] 部署完成
  耗时: 45s
  组件: core (1/1), ops (1/1), admin (1/1)
  环境: uat

失败(非逻辑问题): 提供具体修复建议(配置、资源、网络)。

失败(逻辑问题): 停止监控,输出诊断信息,明确建议转交处理。

注意事项

  • 监控期间不执行任何修改操作
  • CrashLoopBackOff 等应用错误立即停止并报告
  • 提供回滚命令供用户选择
  • 超时后不自动重试,等待用户指示
安全使用建议
This skill appears to be a legitimate deployment helper, but its metadata is incomplete and the source is unknown. Before installing or running it: (1) Review the full SKILL.md to see exactly what commands will run (kubectl, docker, ssh, helm, vercel, fly, git). (2) Understand that it will read project files (.env, package.json, helm/, Dockerfiles) and rely on kubeconfig and SSH keys — do not run it with elevated or production credentials until you audit it. (3) Because the metadata did not declare required binaries/env vars, ensure those tools and credentials exist and are restricted to the minimum necessary scope. (4) Prefer to run 'check' and inspect the generated .deploy.yaml and any suggested commands before approving a deploy. (5) If possible, ask the publisher for source code or a homepage; avoid trusting unknown-origin skills that operate on infrastructure until you can verify them.
功能分析
Type: OpenClaw Skill Name: inspirai-deploy Version: 1.0.0 The skill is a deployment automation tool for K8s, Docker, and cloud platforms that performs project discovery and executes deployment workflows. It is classified as suspicious because it uses 'eval' to execute commands derived from local configuration files (e.g., .deploy.yaml, package.json) in the 'Run' section, creating a shell injection vulnerability. While the skill includes explicit safety instructions to avoid modifying application code and focuses on standard deployment tasks, the execution of arbitrary shell commands based on file content poses a significant security risk if the environment is compromised.
能力评估
Purpose & Capability
The SKILL.md describes a deploy tool for K8s/Helm, Docker Compose, Vercel, Fly.io and the instructions call expected CLIs (kubectl, docker, docker compose, git, ssh, vercel, fly, helm). However the registry metadata declares no required binaries, no env vars, and no config paths. This is inconsistent: a deploy skill legitimately needs those CLIs and access to kubeconfig/SSH/registry credentials, so the metadata omission is disproportionate and unexplained.
Instruction Scope
Instructions read many local/project files (.env, .env.{env}, package.json, go.mod, helm/, docker-compose.yml, vercel.json, fly.toml, justfile/Makefile, services/, .service-tags.json) and run commands that access remote systems (ssh, kubectl, docker manifest inspect, vercel/fly CLIs). The 'check' mode claims read-only, but the Run section (deploy) implies commands that will modify remote state (docker compose up, kubectl/helm apply/upgrade, ssh remote commands). The instructions also reference environment variables and CLI args (ENV, REGISTRY, NAMESPACE, KUBECTL_ARGS, DEPLOY_HOST, COMPONENTS) that are not declared in the skill metadata.
Install Mechanism
This is an instruction-only skill with no install spec and no code files — low install risk. Nothing will be written by an installer from an external URL. However runtime depends on local CLI tools which are not declared.
Credentials
The skill metadata lists no required environment variables or primary credential, but the SKILL.md expects numerous env vars and access to credentials: registry credentials, kubeconfig context/credentials, SSH keys for remote hosts, and CLI auth state for vercel/fly. That mismatch is problematic because the skill will implicitly rely on these secrets without declaring them or explaining minimal privileges.
Persistence & Privilege
always:false and no install scripts are present. The skill does not request persistent/automatic inclusion. There is no evidence it modifies other skills or global agent config.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install inspirai-deploy
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /inspirai-deploy 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release - 智能部署工具
元数据
Slug inspirai-deploy
版本 1.0.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 1
常见问题

InspirAI Deploy 是什么?

智能部署工具 - 自动检测部署策略,预检查、发布、监控一体化。支持 K8s/Helm、Docker Compose、Vercel、Fly.io。Triggers: '部署', 'deploy', '发布', '上线', '预检查', '部署监控', 'helm upgrade', 'docker compose... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 281 次。

如何安装 InspirAI Deploy?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install inspirai-deploy」即可一键安装,无需额外配置。

InspirAI Deploy 是免费的吗?

是的,InspirAI Deploy 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

InspirAI Deploy 支持哪些平台?

InspirAI Deploy 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 InspirAI Deploy?

由 alexxiong(@alexxxiong)开发并维护,当前版本 v1.0.0。

💬 留言讨论