基于 OpenClaw + Claude Code 的端到端研发自动化系统
从需求分析 → PRD 设计 → 技术方案 → API 开发 → AI Coding → 测试 → CI/CD 部署 → UI 自动化验收全流程
本系统是基于 OpenClaw 和 Claude Code 两大核心 AI Agent 平台构建的端到端研发自动化系统。系统实现了从需求分析到最终部署验收的全流程自动化,支持多角色 Agents 协同工作,并在关键节点提供人机协同能力。
| 技术组件 | 版本 | 用途说明 |
|---|---|---|
| OpenClaw | v2.0+ | 自主 AI Agent 平台,负责任务编排、流程自动化、多 IM 平台交互 |
| Claude Code | Latest | AI 编程助手,负责代码理解、生成、重构、Git 工作流管理 |
| Jenkins | v2.400+ | CI/CD 流水线引擎,负责自动化构建、测试、部署 |
| Docker | v24.0+ | 容器化运行时环境 |
| Kubernetes/KubeSphere | v1.28+/v3.4+ | 容器编排与集群管理平台 |
| Selenium/Playwright | Latest | UI 自动化测试框架 |
系统支持三种部署模式:
系统定义了 8 个核心研发角色 Agent,每个 Agent 都有明确的职责边界和协作机制:
职责:需求分析、PRD 文档生成、用户故事拆解、验收标准定义
触发条件:接收到原始需求描述或会议纪要
输出产物:PRD 文档、用户故事地图、功能清单、优先级排序
使用工具:Claude Code(文档生成)、OpenClaw(任务编排)
职责:系统架构设计、技术选型、数据库设计、微服务拆分
触发条件:接收到审核通过的 PRD 文档
输出产物:技术方案文档、架构图、ER 图、服务依赖关系图
使用工具:Claude Code(方案设计)、Mermaid(图表生成)
职责:RESTful API 设计、GraphQL Schema 定义、接口文档生成
触发条件:接收到技术方案文档
输出产物:OpenAPI/Swagger 规范、Postman Collection、Mock Server
使用工具:Claude Code(接口设计)、Swagger UI(文档展示)
职责:后端业务逻辑实现、数据库操作、API 接口开发
触发条件:接收到 API 接口规范
输出产物:后端源代码、数据库迁移脚本、单元测试代码
使用工具:Claude Code(代码生成)、Git(版本控制)
职责:前端页面开发、组件库构建、状态管理、API 对接
触发条件:接收到 API 接口规范和 UI 设计稿
输出产物:前端源代码、组件文档、E2E 测试脚本
使用工具:Claude Code(代码生成)、Playwright(测试)
职责:单元测试、集成测试、性能测试、安全测试
触发条件:接收到源代码提交
输出产物:测试报告、覆盖率报告、Bug 列表、修复建议
使用工具:JUnit/Pytest(单元测试)、JMeter(性能测试)
职责:CI/CD 流水线配置、Docker 镜像构建、K8S 部署、监控告警
触发条件:接收到测试通过的代码
输出产物:Dockerfile、Jenkinsfile、K8S YAML、监控仪表盘
使用工具:Jenkins、Docker、KubeSphere、Prometheus
职责:UI 自动化测试、回归测试、用户体验验证、上线审批
触发条件:接收到部署完成通知
输出产物:UI 测试报告、截图对比、上线批准书
使用工具:Selenium、Playwright、 Percy(视觉回归)
各 Agent 之间通过以下方式进行通信和协作:
OpenClaw 负责任务的编排和调度,根据工作流状态自动激活相应的 Agent:
# 示例:通过 OpenClaw 激活 Product Agent
/openclaw activate --agent product --task "生成电商后台管理系统 PRD"
# 或通过聊天应用发送指令
"请为新的用户中心模块生成 PRD 文档"
Product Agent 支持多种需求输入方式:
# 产品名称 PRD 文档
## 1. 文档信息
- 版本号:v1.0
- 创建日期:2026-03-14
- 最后更新:2026-03-14
- 负责人:Product Agent
## 2. 产品概述
### 2.1 背景与目标
### 2.2 用户群体
### 2.3 核心价值
## 3. 功能需求
### 3.1 功能清单
### 3.2 用户故事地图
### 3.3 功能详细说明
## 4. 非功能需求
### 4.1 性能要求
### 4.2 安全要求
### 4.3 兼容性要求
## 5. 验收标准
### 5.1 功能验收标准
### 5.2 性能验收标准
## 6. 附录
### 6.1 术语表
### 6.2 参考资料
所有 PRD 文档都纳入 Git 版本管理,每次修改都会生成新的 Commit,并附带变更说明:
git commit -m "docs(prd): 更新用户中心模块 v1.2
- 新增手机号登录功能
- 优化密码找回流程
- 调整权限模型"
git tag prd-v1.2
Architecture Agent 接收以下输入:
Architecture Agent 按照以下步骤生成技术方案:
系统使用 Mermaid 语法自动生成各类架构图:
```mermaid
graph TB
subgraph 前端层
A[Web 前端] --> B[Mobile App]
end
subgraph 网关层
C[API Gateway]
end
subgraph 服务层
D[用户服务]
E[订单服务]
F[支付服务]
end
subgraph 数据层
G[(MySQL)]
H[(Redis)]
I[(MongoDB)]
end
A --> C
B --> C
C --> D
C --> E
C --> F
D --> G
D --> H
E --> G
F --> I
```
# 技术方案设计文档
## 1. 架构概述
### 1.1 整体架构图
### 1.2 架构决策记录 (ADR)
## 2. 技术选型
### 2.1 后端技术栈
### 2.2 前端技术栈
### 2.3 中间件选型
### 2.4 云服务选型
## 3. 数据库设计
### 3.1 ER 图
### 3.2 表结构定义
### 3.3 索引策略
## 4. 微服务设计
### 4.1 服务划分
### 4.2 服务间通信
### 4.3 数据一致性方案
## 5. 非功能性设计
### 5.1 高可用方案
### 5.2 性能优化策略
### 5.3 安全设计方案
## 6. 部署架构
### 6.1 环境规划
### 6.2 资源配置
### 6.3 监控方案
技术方案生成后,系统会组织虚拟架构评审会:
API Agent 遵循以下设计原则:
API Agent 自动生成符合 OpenAPI 3.0 规范的 YAML 文件:
openapi: 3.0.3
info:
title: 用户中心 API
version: 1.0.0
description: 用户管理相关接口
servers:
- url: https://api.example.com/v1
paths:
/users:
get:
summary: 获取用户列表
tags: [用户管理]
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 20
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/UserList'
post:
summary: 创建用户
tags: [用户管理]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: 创建成功
components:
schemas:
User:
type: object
properties:
id:
type: string
username:
type: string
email:
type: string
CreateUserRequest:
type: object
required: [username, email, password]
properties:
username:
type: string
email:
type: string
password:
type: string
API 规范定义完成后,系统自动启动 Mock Server 供前后端并行开发:
# 使用 Prism 启动 Mock Server
npx prism mock openapi.yaml
# Mock Server 会自动根据 OpenAPI 规范
# 生成符合定义的模拟响应数据
系统自动生成 Postman Collection,方便开发和测试人员使用:
Claude Code 是系统的核心编码引擎,具备以下能力:
# 示例:使用 Claude Code 生成用户服务
claude "根据 API 规范生成用户服务的 CRUD 实现"
claude "为 UserService 添加邮箱验证功能"
claude "优化 getUserById 方法的查询性能"
# 示例:使用 Claude Code 生成 React 组件
claude "创建一个用户列表页面,包含搜索、分页、批量删除功能"
claude "为 UserForm 组件添加表单验证"
claude "使用 Tailwind CSS 优化登录页面样式"
系统自动进行代码审查,检查以下方面:
/explain 命令让 Claude Code 解释复杂代码/test 命令自动生成测试用例/refactor 命令重构现有代码/bug 命令报告问题并获取修复建议Claude Code 自动处理 Git 操作:
# 自动创建功能分支
git checkout -b feature/user-authentication
# 智能提交信息生成
git commit -m "feat(user): 实现 JWT 认证功能
- 添加登录登出接口
- 实现 token 刷新机制
- 添加密码加密存储"
# 自动推送并创建 Pull Request
git push origin feature/user-authentication
gh pr create --title "feat: 用户认证功能" --body "实现完整的 JWT 认证流程"
系统采用金字塔测试策略:
Test Agent 自动为每个模块生成单元测试:
# Python pytest 示例
# test_user_service.py
import pytest
from services.user_service import UserService
class TestUserService:
def test_create_user_success(self):
service = UserService()
user = service.create_user({
'username': 'test',
'email': 'test@example.com',
'password': 'SecurePass123'
})
assert user.id is not None
assert user.username == 'test'
def test_create_user_duplicate_email(self):
service = UserService()
service.create_user({
'username': 'user1',
'email': 'duplicate@example.com',
'password': 'Pass123'
})
with pytest.raises(ValueError) as exc_info:
service.create_user({
'username': 'user2',
'email': 'duplicate@example.com',
'password': 'Pass456'
})
assert '邮箱已存在' in str(exc_info.value)
集成测试验证模块间的协作:
# 用户注册完整流程测试
def test_user_registration_flow():
# 1. 调用注册 API
response = client.post('/api/v1/users/register', json={
'username': 'newuser',
'email': 'new@example.com',
'password': 'Password123'
})
assert response.status_code == 201
# 2. 验证邮件发送
assert mock_email_service.sent_count == 1
# 3. 验证数据库记录
user = db.query(User).filter_by(email='new@example.com').first()
assert user is not None
assert user.is_active == False # 待邮箱验证
# 4. 模拟邮箱验证
verify_token = user.verify_token
response = client.get(f'/api/v1/users/verify?token={verify_token}')
assert response.status_code == 200
# 5. 验证用户已激活
db.session.refresh(user)
assert user.is_active == True
Test Agent 自动执行测试并生成详细报告:
对于失败的测试,Claude Code 自动分析原因并提供修复建议:
❌ 测试失败:test_user_login_invalid_password
错误信息:AssertionError - 期望抛出 InvalidPasswordError,实际抛出 ValueError
分析结果:
- UserService.login() 方法对无效密码抛出 ValueError
- 根据设计规范应抛出 InvalidPasswordError
修复建议:
1. 在 UserService.login() 中添加密码验证逻辑
2. 当密码不匹配时抛出 InvalidPasswordError 异常
3. 更新相关单元测试断言
是否应用修复?[y/n]
DevOps Agent 自动生成 Jenkins Pipeline 配置:
// Jenkinsfile 示例
pipeline {
agent any
environment {
DOCKER_REGISTRY = 'registry.example.com'
K8S_NAMESPACE = 'production'
}
stages {
stage('代码检出') {
steps {
git branch: env.BRANCH_NAME,
url: 'https://github.com/org/project.git'
}
}
stage('代码质量检查') {
steps {
sh 'npm run lint'
sh 'npm run sonarqube'
}
}
stage('单元测试') {
steps {
sh 'npm run test:coverage'
}
post {
always {
junit 'reports/test-results.xml'
publishCoverage adapters: [jacocoAdapter()], \
sourceFileResolver: sourceFiles('STORE_LAST_BUILD')
}
}
}
stage('构建 Docker 镜像') {
steps {
script {
docker.build("${DOCKER_REGISTRY}/app:${BUILD_ID}")
}
}
}
stage('推送镜像') {
steps {
script {
docker.withRegistry("https://${DOCKER_REGISTRY}", 'docker-credentials') {
docker.image("${DOCKER_REGISTRY}/app:${BUILD_ID}").push()
}
}
}
}
stage('部署到 K8S') {
when {
branch 'main'
}
steps {
sh '''
kubectl set image deployment/app app=${DOCKER_REGISTRY}/app:${BUILD_ID} \
-n ${K8S_NAMESPACE}
kubectl rollout status deployment/app -n ${K8S_NAMESPACE}
'''
}
}
stage('健康检查') {
steps {
sh '''
curl -f https://app.example.com/health || exit 1
'''
}
}
}
post {
success {
slackSend channel: '#deployments',
message: "✅ 部署成功:${env.JOB_NAME} ${env.BUILD_NUMBER}"
}
failure {
slackSend channel: '#alerts',
message: "❌ 部署失败:${env.JOB_NAME} ${env.BUILD_NUMBER}\n${env.BUILD_URL}"
}
}
}
DevOps Agent 自动生成优化的 Dockerfile:
# 多阶段构建示例
# 构建阶段
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
# 生产阶段
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./
ENV NODE_ENV=production
EXPOSE 3000
USER node
CMD ["node", "dist/server.js"]
自动生成 Kubernetes 资源清单:
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: app
image: registry.example.com/app:latest
ports:
- containerPort: 3000
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: app-service
namespace: production
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 3000
type: LoadBalancer
---
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
namespace: production
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
系统支持与 KubeSphere 深度集成:
系统支持多种部署策略:
| 策略 | 适用场景 | 回滚时间 |
|---|---|---|
| 滚动更新 (Rolling Update) | 常规发布 | ~5 分钟 |
| 蓝绿部署 (Blue-Green) | 重大版本发布 | 秒级 |
| 金丝雀发布 (Canary) | 高风险变更 | 分钟级 |
| 影子流量 (Shadow) | 性能验证 | 不适用 |
系统支持多种 UI 自动化测试框架:
QA Agent 根据 PRD 和原型图自动生成测试用例:
// Playwright 测试示例
// tests/user-login.spec.ts
import { test, expect } from '@playwright/test';
test.describe('用户登录流程', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/login');
});
test('成功登录', async ({ page }) => {
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'CorrectPassword123');
await page.click('[type="submit"]');
await expect(page).toHaveURL('/dashboard');
await expect(page.locator('.welcome-message'))
.toContainText('欢迎回来');
});
test('密码错误提示', async ({ page }) => {
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'WrongPassword');
await page.click('[type="submit"]');
await expect(page.locator('.error-message'))
.toContainText('密码错误');
});
test('邮箱格式验证', async ({ page }) => {
await page.fill('#email', 'invalid-email');
await page.fill('#password', 'Password123');
await page.click('[type="submit"]');
await expect(page.locator('#email-error'))
.toContainText('请输入有效的邮箱地址');
});
test('记住我功能', async ({ page }) => {
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'CorrectPassword123');
await page.check('#remember-me');
await page.click('[type="submit"]');
// 关闭浏览器再打开
await page.context().clearCookies();
await page.goto('/login');
// 邮箱应自动填充
await expect(page.locator('#email'))
.toHaveValue('user@example.com');
});
});
系统集成 Percy 等工具进行视觉回归测试:
自动在多个浏览器上执行测试:
// playwright.config.ts
export default {
use: {
headless: true,
screenshot: 'only-on-failure',
video: 'retain-on-failure',
},
projects: [
{
name: 'chromium',
use: { browserName: 'chromium' },
},
{
name: 'firefox',
use: { browserName: 'firefox' },
},
{
name: 'webkit',
use: { browserName: 'webkit' },
},
{
name: 'Mobile Chrome',
use: {
...devices['Pixel 5'],
},
},
{
name: 'Mobile Safari',
use: {
...devices['iPhone 12'],
},
},
],
};
QA Agent 生成详细的验收报告:
系统在以下关键节点支持人机协同:
| 阶段 | AI 负责 | 人类负责 |
|---|---|---|
| PRD 设计 | 文档生成、格式整理 | 需求确认、优先级决策 |
| 架构设计 | 方案建议、图表生成 | 技术选型、架构决策 |
| 代码开发 | 代码生成、单元测试 | 代码审查、复杂逻辑实现 |
| 测试验收 | 测试执行、报告生成 | 用例评审、上线审批 |
| 部署发布 | 流水线执行、监控告警 | 发布窗口确认、紧急回滚决策 |
人类用户可以通过以下方式介入流程:
# 通过 WhatsApp/Telegram/Discord 发送指令
"/review prd-v1.2 需要调整用户权限模型"
"/approve deployment to production"
"/pause pipeline wait for security audit"
# 查询状态
"/status current-sprint"
"/logs build-123"
"/metrics api-response-time"
系统提供 Web 控制台进行可视化管理:
通过 VS Code/JetBrains 插件直接在 IDE 中协作:
系统定义了多级审批机制:
# 审批配置示例
approvals:
prd_review:
required_approvers: 2
approvers: ['product_manager', 'tech_lead']
timeout: 48h
production_deploy:
required_approvers: 3
approvers: ['devops', 'oncall_engineer', 'product_owner']
manual_gate: true # 必须人工确认
deploy_window: 'Tue-Thu 02:00-06:00 UTC'
当遇到以下情况时,系统会自动暂停并请求人工介入:
系统收集人类反馈用于持续改进: