inspirai-deploy - 智能部署工具
自动检测部署策略,执行预检查、发布、监控的一体化部署工具。支持 K8s/Helm、Docker Compose、Vercel、Fly.io。
Init
初始化部署配置
自动检测项目结构,生成 .deploy.yaml 配置文件。
使用方式
CODEBLOCK0
执行步骤
Step 1: 检测项目结构
CODEBLOCK1
Step 2: 收集信息
使用 AskUserQuestion 确认或补充信息:
- 1. 策略选择 — 如果检测到多个,让用户选择
- 项目名称 — 从 package.json / go.mod / 目录名推断
- 环境列表 — 从 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 模板:
CODEBLOCK2
Compose 模板:
CODEBLOCK3
Vercel 模板:
CODEBLOCK4
Step 5: 确认配置
显示生成的配置文件,询问用户确认或修改。
输出
- - 在项目根目录生成 INLINECODE1
- 建议将
.deploy.yaml 加入版本控制(不含敏感信息时)
注意事项
- - 如果
.deploy.yaml 已存在,询问是否覆盖 - 敏感信息(credentials、tokens)不写入配置文件
- 配置文件中使用占位符的命令模板,实际值从环境变量读取
Check
部署预检查
执行部署前的预检查,确保所有条件就绪。
安全原则
只检查、只报告,不修改任何文件。 发现问题后提供修复建议,由用户决定是否执行。
使用方式
CODEBLOCK5
执行步骤
Step 1: 检测策略并加载配置
同 Run 部分的 Step 1。
Step 2: 通用检查
所有策略都执行的检查:
CODEBLOCK6
Step 3: 策略专属检查
K8s 策略:
CODEBLOCK7
Compose 策略:
CODEBLOCK8
Vercel/Fly 策略:
CODEBLOCK9
Step 4: 输出报告
CODEBLOCK10
注意事项
- - 检查过程完全只读,不修改任何文件或集群状态
- 失败项提供具体的修复命令建议
- 可单独运行用于 CI/CD pipeline 的 gate check
Run
执行部署
自动检测部署策略,执行完整的 check → deploy → monitor 流程。
安全原则
严禁修改应用逻辑代码。 本 skill 只操作部署相关文件(配置、Dockerfile、Helm、compose 等)。
如果部署过程中发现问题源于应用逻辑:
- 1. 立即停止部署
- 报告问题详情(错误日志、堆栈信息)
- 建议转交专业技能处理(如
/wxm:dev、代码修复等) - 设置检查点,修复后可从当前步骤恢复部署
使用方式
CODEBLOCK11
执行步骤
Step 1: 检测部署策略
按优先级自动检测:
CODEBLOCK12
Step 2: 预检查(调用 Check)
执行策略对应的预检查,参见 Check 部分。
如果检查失败:
- - 展示失败原因
- 提供选项:修复后重试 / 跳过检查 / 中止
Step 3: 执行部署
根据策略执行部署命令:
K8s 策略:
CODEBLOCK13
Compose 策略:
CODEBLOCK14
Vercel 策略:
CODEBLOCK15
Fly 策略:
CODEBLOCK16
Script 策略:
CODEBLOCK17
Step 4: 监控(调用 Monitor)
部署命令执行后,自动进入监控模式,参见 Monitor 部分。
Step 5: 问题处理
部署失败时的处理流程:
CODEBLOCK18
严格规则:任何涉及修改 .go / .ts / .js / .py 等业务代码的操作,必须停止并转交。
检查点机制
每个步骤完成后设置检查点:
CODEBLOCK19
失败后恢复:
CODEBLOCK20
示例
CODEBLOCK21
Monitor
部署状态监控
监控进行中的部署状态,检测异常并提供诊断信息。
安全原则
只监控、只报告。 发现应用层错误时停止监控,报告问题并建议转交处理。严禁自动修改应用代码来"修复"问题。
使用方式
CODEBLOCK22
执行步骤
Step 1: 确定监控目标
根据策略确定要监控的资源:
K8s: Deployment replicas、Pod status、Events
Compose: Container status、health checks
Vercel/Fly: Deployment status API
Step 2: 轮询监控
K8s 监控:
CODEBLOCK23
Compose 监控:
CODEBLOCK24
Step 3: 异常处理
检测到的异常类型及处理:
| 异常 | 处理方式 |
|---|
| ImagePullBackOff | 报告镜像拉取失败,检查 tag 和 registry 权限 |
| CrashLoopBackOff |
⚠️
停止监控,输出 Pod 日志,建议检查应用代码 |
| OOMKilled | 报告内存不足,建议调整 resource limits |
| Pending (长时间) | 检查节点资源和调度约束 |
| CreateContainerConfigError | 报告配置错误,检查 ConfigMap/Secret |
CrashLoopBackOff 特殊处理(应用逻辑问题):
CODEBLOCK25
Step 4: 监控结束
成功:
CODEBLOCK26
失败(非逻辑问题):
提供具体修复建议(配置、资源、网络)。
失败(逻辑问题):
停止监控,输出诊断信息,明确建议转交处理。
注意事项
- - 监控期间不执行任何修改操作
- CrashLoopBackOff 等应用错误立即停止并报告
- 提供回滚命令供用户选择
- 超时后不自动重试,等待用户指示
inspirai-deploy - 智能部署工具
自动检测部署策略,执行预检查、发布、监控的一体化部署工具。支持 K8s/Helm、Docker Compose、Vercel、Fly.io。
Init
初始化部署配置
自动检测项目结构,生成 .deploy.yaml 配置文件。
使用方式
/deploy init # 自动检测并生成配置
/deploy init --strategy k8s # 指定策略
执行步骤
Step 1: 检测项目结构
bash
echo [INFO] 检测项目结构...
检测部署策略
DETECTED_STRATEGIES=
[ -d helm ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES k8s
[ -f docker-compose.yml ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES compose
[ -f docker-compose.prod.yml ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES compose
[ -f vercel.json ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES vercel
[ -f fly.toml ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES fly
[ -f Dockerfile ] && DETECTEDSTRATEGIES=$DETECTEDSTRATEGIES docker-ssh
echo [INFO] 检测到策略: $DETECTED_STRATEGIES
Step 2: 收集信息
使用 AskUserQuestion 确认或补充信息:
- 1. 策略选择 — 如果检测到多个,让用户选择
- 项目名称 — 从 package.json / go.mod / 目录名推断
- 环境列表 — 从 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 模板:
yaml
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 模板:
yaml
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 模板:
yaml
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 [components...] [options]
选项:
--image-only 仅检查镜像
--config-only 仅检查配置
--connectivity-only 仅检查连通性
--strategy 指定策略
执行步骤
Step 1: 检测策略并加载配置
同 Run 部分的 Step 1。
Step 2: 通用检查
所有策略都执行的检查:
bash
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 策略:
bash
echo [INFO] ========== K8s 预检查 ==========
1. 镜像推送检查
echo [CHECK] 镜像推送状态...
for comp in $COMPONENTS; do
tag=$(get
versiontag $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 策略:
bash
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] 无法连接 $DEPLOYHOST
fi
3. 磁盘空间
echo [CHECK] 磁盘空间...
docker system df
Vercel/Fly 策略:
bash
echo [INFO] ========== 平台预检查 ==========
1. CLI 登录状态
echo [CHECK] 登录状态...
vercel whoami || fly auth whoami || echo [ERROR] 未登录
2. 项目链接
echo [CHECK] 项目链接...
检查是否已 link 到远程项目
Step 4: 输出报告
========== 预检查报告 ==========
环境