🦞 基于 OpenClaw + Claude Code 的
端到端研发自动化系统

从需求分析 → PRD 设计 → 技术方案 → API 开发 → AI Coding → 测试 → CI/CD → K8S 部署 → UI 自动化验收全流程自动化研发系统

📅 版本:v1.0 | 更新日期:2026 年 3 月 13 日 | 支持人机协同

🏗️ 系统架构总览

1.1 整体架构图

本系统基于 OpenClaw AI Agent 框架Claude Code 构建,实现从需求到部署的全流程自动化研发。

需求分析 Agent
需求收集与整理
PRD 设计 Agent
产品需求文档生成
架构设计 Agent
技术方案设计
API 设计 Agent
前后端接口协议
Claude Code
AI 代码生成
测试 Agent
单元/集成测试
CI/CD Pipeline
Jenkins + Docker
K8S 部署
KubeSphere 管理
UI 自动化
验收测试

1.2 核心技术栈

层级 技术组件 版本要求 用途说明
AI Agent 层 OpenClaw v2026.1+ 智能体编排与任务执行
AI Coding 层 Claude Code Claude Sonnet 4.5+ 代码生成与重构
大模型层 Claude/GPT/Qwen 最新 API LLM 推理引擎
CI/CD 层 Jenkins v2.440+ 持续集成流水线
容器化层 Docker v24.0+ 应用容器封装
编排层 Kubernetes v1.29+ 容器编排管理
管理平台 KubeSphere v3.4+ K8S可视化管理
测试框架 Pytest/Jest/Playwright 最新版 自动化测试执行
💡 系统特点:
  • 全流程自动化,支持人机协同干预
  • 多 Agent 协作,各司其职
  • 本地优先部署,数据隐私安全
  • 支持 50+ 通讯渠道集成(飞书/钉钉/微信等)
  • 弹性扩展,支持云原生部署

🤖 各研发角色 Agent 设计

2.1 Agent 角色定义

系统定义了以下核心 Agent 角色,每个角色都有明确的职责边界和协作机制:

📋 需求分析 Agent (Requirements Analyst Agent)

主要职责:

  • 收集并整理用户需求(支持多渠道输入:飞书/钉钉/微信/邮件)
  • 需求分类与优先级排序
  • 生成需求跟踪矩阵 (RTM)
  • 与用户进行需求确认对话

使用技能:自然语言理解、需求模板库、优先级评估模型

输出产物:需求清单、用户故事地图、需求优先级列表

📄 PRD 设计 Agent (Product Requirements Document Agent)

主要职责:

  • 基于需求生成标准化 PRD 文档
  • 定义功能模块与业务流程
  • 绘制原型图与流程图(集成 Mermaid/Draw.io)
  • 验收标准定义 (Acceptance Criteria)

使用技能:PRD 模板引擎、流程图生成、原型设计工具

输出产物:PRD 文档、业务流程图、原型设计稿

🏛️ 架构设计 Agent (Solution Architect Agent)

主要职责:

  • 后端技术方案设计(微服务/单体架构选择)
  • 前端技术方案设计(React/Vue/Angular选型)
  • 数据库设计与选型
  • 系统架构图绘制(C4 模型)
  • 技术风险评估与应对方案

使用技能:架构模式库、技术选型决策树、C4 建模工具

输出产物:技术方案文档、系统架构图、数据库 ER 图

🔌 API 设计 Agent (API Design Agent)

主要职责:

  • RESTful API 接口设计
  • OpenAPI/Swagger规范定义
  • 前后端接口协议约定
  • API 版本管理策略
  • Mock 数据生成

使用技能:OpenAPI Generator、API 设计最佳实践、Mock 服务

输出产物:API 文档、Swagger YAML、Postman Collection

💻 AI Coding Agent (Claude Code Executor)

主要职责:

  • 基于 API 设计生成后端代码(Python/Java/Go)
  • 基于原型生成前端代码(React/Vue/TypeScript)
  • 代码质量检查与优化建议
  • 自动修复编译错误
  • 代码审查 (Code Review)

使用技能:Claude Code CLI、AST 解析、代码静态分析

输出产物:源代码、单元测试、代码审查报告

🧪 测试 Agent (QA Testing Agent)

主要职责:

  • 编写单元测试(Pytest/Jest)
  • 集成测试脚本开发
  • API 接口测试(Postman/Newman)
  • 性能测试(JMeter/Locust)
  • 测试覆盖率分析

使用技能:测试框架、Mock 服务、覆盖率工具

输出产物:测试用例、测试报告、覆盖率报告

🚀 部署 Agent (DevOps Deployment Agent)

主要职责:

  • Dockerfile 编写与优化
  • K8S Manifest 生成(Deployment/Service/Ingress)
  • Helm Chart 打包
  • CI/CD Pipeline 配置(Jenkinsfile)
  • 环境变量与密钥管理

使用技能:Docker/K8S/Helm、Jenkins Pipeline、密钥管理

输出产物:容器镜像、K8S 配置、部署脚本

🎨 UI 自动化 Agent (UI Automation Agent)

主要职责:

  • E2E 测试脚本编写(Playwright/Cypress)
  • 视觉回归测试
  • 跨浏览器兼容性测试
  • 无障碍测试 (Accessibility)
  • 生成测试截图与视频

使用技能:Playwright、Percy、Lighthouse

输出产物:E2E 测试脚本、测试报告、截图证据

2.2 Agent 协作流程

阶段 主导 Agent 协作 Agent 人机协同点 交付物
需求阶段 需求分析 Agent PRD 设计 Agent 需求确认评审 需求清单
设计阶段 架构设计 Agent API 设计 Agent 技术方案评审 技术方案文档
开发阶段 AI Coding Agent 测试 Agent 代码审查 源代码
测试阶段 测试 Agent UI 自动化 Agent 缺陷确认 测试报告
部署阶段 部署 Agent 所有 Agent 上线审批 生产环境

⚙️ 环境部署手册

3.1 系统前置要求

组件 最低配置 推荐配置 必选/可选
CPU 4 核 8 核+ 必选
内存 8GB 16GB+ 必选
存储 50GB SSD 100GB+ NVMe 必选
操作系统 Ubuntu 20.04 Ubuntu 22.04 LTS 必选
网络 10Mbps 100Mbps+ 必选

3.2 基础环境安装

步骤 1: 更新系统与安装基础依赖

# 更新软件包列表
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y \
    git \
    curl \
    wget \
    vim \
    net-tools \
    jq \
    unzip \
    software-properties-common \
    apt-transport-https \
    ca-certificates \
    gnupg \
    lsb-release

步骤 2: 安装 Node.js (v22+)

# 使用 NodeSource 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

# 验证安装
node --version  # 应显示 v22.x.x
npm --version   # 应显示 10.x.x

# 配置 npm 国内镜像(可选,加速下载)
npm config set registry https://registry.npmmirror.com

步骤 3: 安装 Docker

# 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户加入 docker 组(避免每次使用 sudo)
sudo usermod -aG docker $USER

# 验证安装
docker --version
docker run hello-world

步骤 4: 安装 Docker Compose

# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version
⚠️ 安全警告:

OpenClaw 具有强大的系统操作权限,请务必注意以下安全事项:

  • 不要将 OpenClaw 端口直接暴露在公网
  • 强制启用身份验证机制
  • 定期轮换 API Keys
  • 使用防火墙限制访问来源
  • 参考 CVE-2026-25253 漏洞修复指南

🦞 OpenClaw 安装配置

4.1 快速安装(推荐)

Linux/macOS一键安装脚本

# 执行官方安装脚本
curl -fsSL https://openclaw.ai/install.sh | bash

# 安装完成后运行新手引导
openclaw onboard --install-daemon

Windows PowerShell 安装

# PowerShell 执行
iwr -useb https://openclaw.ai/install.ps1 | iex

4.2 手动安装方式

# 使用 npm 全局安装
npm install -g openclaw

# 或使用 pnpm(推荐)
pnpm add -g openclaw

# 国内用户可使用淘宝镜像
npm install -g openclaw --registry=https://registry.npmmirror.com

4.3 初始化配置向导

运行 openclaw onboard 后,按提示完成以下配置:

  1. 选择大模型供应商:支持 Claude/OpenAI/Qwen/MiniMax/智谱等
  2. 配置 API Key:在 ~/.openclaw/agents/<agentId>/auth-profiles.json 中存储
  3. 选择通讯渠道:飞书/钉钉/微信/Telegram 等
  4. 网关端口配置:默认 18789
  5. 选择 Skills:从 ClawHub 安装所需技能
  6. 启用日志记录:建议开启会话日志

4.4 配置文件结构

# 主配置文件位置
~/.openclaw/openclaw.json

# 工作区目录
~/.openclaw/workspace/
├── AGENTS.md          # 指令说明
├── USER.md            # 偏好设置
├── MEMORY.md          # 长期记忆
├── HEARTBEAT.md       # 检查清单
├── SOUL.md            # 人格/语气
└── IDENTITY.md        # 名称/主题

# 认证配置文件
~/.openclaw/agents/<agentId>/auth-profiles.json

# 向量索引存储
~/.openclaw/memory/<cid>.sqlite

# 全局共享技能
~/.openclaw/skills/

# 日志文件
/tmp/openclaw/*.log

4.5 常用命令速查

命令 功能描述
openclaw status 查看 Gateway 运行状态
openclaw health 健康检查
openclaw doctor 综合诊断与修复
openclaw gateway restart 重启网关服务
openclaw dashboard 打开 Web 控制面板
clawhub install <skill> 从 ClawHub 安装技能
openclaw logs --follow 实时查看日志

4.6 Docker 部署 OpenClaw

# 创建 docker-compose.yml
version: '3.8'
services:
  openclaw:
    image: openclaw/openclaw:latest
    container_name: openclaw
    ports:
      - "18789:18789"
    volumes:
      - ./workspace:/app/workspace
      - ./config:/app/config
    environment:
      - OPENCLAW_MODEL=claude-sonnet-4.5
      - OPENCLAW_API_KEY=${ANTHROPIC_API_KEY}
    restart: unless-stopped

# 启动服务
docker-compose up -d

# 访问 Web UI
# http://localhost:18789

🎯 Claude Code 集成

5.1 Claude Code 简介

Claude Code 是 Anthropic 官方推出的终端原生 AI 编程助手,基于 Claude Sonnet 4.5/Opus 4.6 大模型,支持本地执行、可视化管理、多智能体协作。

5.2 安装 Claude Code

# 安装 Claude Code CLI
npm install -g @anthropic-ai/claude-code

# 或使用 Homebrew (macOS)
brew install claude-code

# 配置 API Key
export ANTHROPIC_API_KEY="your-api-key-here"

# 验证安装
claude --version

5.3 与 OpenClaw 集成

在 OpenClaw 配置文件中添加 Claude Code 作为执行工具:

# ~/.openclaw/openclaw.json
{
  "agents": {
    "coding_agent": {
      "model": "claude-sonnet-4.5",
      "tools": [
        {
          "name": "claude_code",
          "enabled": true,
          "config": {
            "api_key": "${ANTHROPIC_API_KEY}",
            "max_tokens": 8192,
            "temperature": 0.7
          }
        }
      ]
    }
  }
}

5.4 典型使用场景

# 场景 1: 根据 PRD 生成代码
claude "基于以下 PRD 需求,生成 Python FastAPI 后端代码:
[粘贴 PRD 内容]"

# 场景 2: 代码重构
claude "重构这个函数,提高可读性和性能"

# 场景 3: 生成单元测试
claude "为这个模块编写 pytest 单元测试,覆盖率达到 90%"

# 场景 4: Bug 修复
claude "分析这个错误日志并提供修复方案:
[粘贴错误日志]"

🔄 Jenkins CI/CD 配置

6.1 Jenkins 安装(Docker 方式)

# 创建 Jenkins 数据目录
mkdir -p ~/jenkins_data

# 运行 Jenkins 容器
docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v ~/jenkins_data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which docker):/usr/bin/docker \
  jenkins/jenkins:lts-jdk17

# 获取初始管理员密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

# 访问 Jenkins Web UI
# http://localhost:8080

6.2 必需插件安装

登录 Jenkins 后,安装以下插件:

6.3 Jenkinsfile 示例

pipeline {
    agent any
    
    tools {
        nodejs 'NodeJS-22'
        python 'Python-3.12'
    }
    
    environment {
        DOCKER_REGISTRY = 'registry.example.com'
        IMAGE_NAME = 'myapp'
        KUBE_CONFIG = credentials('kubeconfig')
    }
    
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        
        stage('Install Dependencies') {
            steps {
                sh 'npm ci'
                sh 'pip install -r requirements.txt'
            }
        }
        
        stage('Code Quality') {
            steps {
                sh 'npm run lint'
                sh 'python -m pylint src/'
            }
        }
        
        stage('Unit Test') {
            steps {
                sh 'npm test'
                sh 'pytest tests/unit --cov=src --cov-report=xml'
            }
            post {
                always {
                    junit 'reports/*.xml'
                    publishCoverage adapters: [coberturaAdapter('coverage.xml')]
                }
            }
        }
        
        stage('Build Docker Image') {
            steps {
                script {
                    docker.build("${DOCKER_REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER}")
                }
            }
        }
        
        stage('Integration Test') {
            steps {
                sh 'pytest tests/integration'
                sh 'npm run test:e2e'
            }
        }
        
        stage('Push to Registry') {
            steps {
                script {
                    docker.withRegistry("https://${DOCKER_REGISTRY}", 'docker-credentials') {
                        docker.image("${DOCKER_REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER}").push()
                        docker.image("${DOCKER_REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER}").push('latest')
                    }
                }
            }
        }
        
        stage('Deploy to K8S') {
            steps {
                sh '''
                    kubectl apply -f k8s/deployment.yaml
                    kubectl set image deployment/myapp myapp=${DOCKER_REGISTRY}/${IMAGE_NAME}:${BUILD_NUMBER}
                    kubectl rollout status deployment/myapp
                '''
            }
        }
        
        stage('UI Automation Test') {
            steps {
                sh 'playwright test --reporter=html'
            }
            post {
                always {
                    archiveArtifacts artifacts: 'playwright-report/**/*'
                }
            }
        }
    }
    
    post {
        success {
            echo 'Pipeline completed successfully!'
            // 发送通知(飞书/钉钉/邮件)
        }
        failure {
            echo 'Pipeline failed!'
            // 发送失败通知
        }
    }
}

6.4 配置凭证管理

在 Jenkins 中配置以下凭证:

🐳 Docker & Kubernetes 部署

7.1 Dockerfile 最佳实践

# 后端服务 Dockerfile (Python)
FROM python:3.12-slim as builder

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt

FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

# 前端服务 Dockerfile (Node.js)
FROM node:22-alpine as builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

7.2 Kubernetes Manifest 示例

# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-backend
  labels:
    app: myapp
    component: backend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      component: backend
  template:
    metadata:
      labels:
        app: myapp
        component: backend
    spec:
      containers:
      - name: backend
        image: registry.example.com/myapp-backend:latest
        ports:
        - containerPort: 8000
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: url
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 8000
          initialDelaySeconds: 5
          periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: myapp-backend-service
spec:
  selector:
    app: myapp
    component: backend
  ports:
  - port: 80
    targetPort: 8000
  type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: myapp-backend-service
            port:
              number: 80

7.3 Helm Chart 结构

myapp-chart/
├── Chart.yaml
├── values.yaml
├── values-production.yaml
└── templates/
    ├── _helpers.tpl
    ├── deployment.yaml
    ├── service.yaml
    ├── ingress.yaml
    ├── configmap.yaml
    └── secrets.yaml

# 打包 Helm Chart
helm package myapp-chart

# 安装应用
helm install myapp ./myapp-chart -f values-production.yaml

# 升级应用
helm upgrade myapp ./myapp-chart -f values-production.yaml

🎮 KubeSphere 管理

8.1 KubeSphere 安装

# 使用 KubeKey 安装 KubeSphere + Kubernetes
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
chmod +x kk

# 创建集群配置
./kk create config --with-kubernetes v1.28.5 --with-kubesphere v3.4.0

# 编辑 config-sample.yaml 配置节点信息

# 开始安装
./kk create cluster -f config-sample.yaml -y

# 访问 KubeSphere Dashboard
# https://<master-node-ip>:30880

8.2 DevOps 项目管理

在 KubeSphere 中创建 DevOps 项目:

  1. 进入「DevOps 工程」→「创建 DevOps 项目」
  2. 配置 Jenkins Pipeline
  3. 关联 Git 仓库
  4. 配置构建触发器(Webhook/定时)
  5. 设置部署策略(蓝绿/金丝雀)

8.3 监控与告警

KubeSphere 内置监控组件:

🧪 测试自动化框架

9.1 单元测试(Pytest)

# tests/unit/test_api.py
import pytest
from fastapi.testclient import TestClient
from main import app

client = TestClient(app)

def test_read_main():
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"message": "Hello World"}

@pytest.mark.asyncio
async def test_create_user():
    response = client.post("/users", json={
        "username": "testuser",
        "email": "test@example.com"
    })
    assert response.status_code == 201
    assert response.json()["username"] == "testuser"

# 运行测试
# pytest tests/unit --cov=src --cov-report=html

9.2 集成测试

# tests/integration/test_workflow.py
import pytest
import requests

BASE_URL = "http://localhost:8000"

def test_full_workflow():
    # 1. 创建用户
    user_response = requests.post(f"{BASE_URL}/users", json={
        "username": "integration_test",
        "email": "test@example.com"
    })
    assert user_response.status_code == 201
    user_id = user_response.json()["id"]
    
    # 2. 创建订单
    order_response = requests.post(f"{BASE_URL}/orders", json={
        "user_id": user_id,
        "product": "test_product"
    })
    assert order_response.status_code == 201
    
    # 3. 查询订单
    get_order = requests.get(f"{BASE_URL}/orders/{order_response.json()['id']}")
    assert get_order.status_code == 200

9.3 UI 自动化测试(Playwright)

// tests/e2e/example.spec.ts
import { test, expect } from '@playwright/test';

test.describe('Login Flow', () => {
  test('should login successfully', async ({ page }) => {
    await page.goto('http://localhost:3000/login');
    
    await page.fill('[data-testid="username"]', 'admin');
    await page.fill('[data-testid="password"]', 'password123');
    await page.click('[data-testid="submit"]');
    
    await expect(page).toHaveURL('http://localhost:3000/dashboard');
    await expect(page.locator('text=Welcome')).toBeVisible();
  });

  test('should show validation errors', async ({ page }) => {
    await page.goto('http://localhost:3000/login');
    await page.click('[data-testid="submit"]');
    
    await expect(page.locator('text=Username is required')).toBeVisible();
  });
});

// playwright.config.ts
import type { PlaywrightTestConfig } from '@playwright/test';

const config: PlaywrightTestConfig = {
  projects: [
    { name: 'chromium', use: { browserName: 'chromium' } },
    { name: 'firefox', use: { browserName: 'firefox' } },
    { name: 'webkit', use: { browserName: 'webkit' } },
  ],
  reporter: [['html'], ['junit', { outputFile: 'results.xml' }]],
  use: {
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },
};

export default config;

9.4 测试覆盖率要求

测试类型 最低覆盖率 目标覆盖率
单元测试 80% 90%+
集成测试 70% 85%+
E2E 测试 关键路径 100% 核心功能 100%

🚀 项目初始化流程

10.1 项目脚手架生成

# 使用 OpenClaw 创建新项目
openclaw "创建一个全栈项目,包含:
- 后端:Python FastAPI
- 前端:React + TypeScript
- 数据库:PostgreSQL
- 包含完整的 CI/CD 配置"

# 或手动创建项目结构
mkdir myproject && cd myproject
mkdir -p backend frontend tests docs k8s

# 初始化 Git
git init
git commit --allow-empty -m "Initial commit"

10.2 后端项目初始化

cd backend

# 创建虚拟环境
python -m venv venv
source venv/bin/activate

# 安装依赖
pip install fastapi uvicorn sqlalchemy alembic \
    pytest pytest-cov python-jose passlib

# 生成 requirements.txt
pip freeze > requirements.txt

# 初始化 Alembic 迁移
alembic init alembic

# 创建 FastAPI 主应用
cat > main.py << 'EOF'
from fastapi import FastAPI

app = FastAPI(title="MyApp API")

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/health")
async def health():
    return {"status": "healthy"}
EOF

10.3 前端项目初始化

cd frontend

# 使用 Vite 创建 React + TypeScript 项目
npm create vite@latest . -- --template react-ts

# 安装依赖
npm install react-router-dom axios @tanstack/react-query

# 安装开发依赖
npm install -D @playwright/test @testing-library/react

# 初始化 Playwright
npx playwright install
npx playwright install-deps

10.4 配置管理

# .env.example (后端)
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
SECRET_KEY=your-secret-key-here
API_PREFIX=/api/v1

# .env.example (前端)
VITE_API_URL=http://localhost:8000/api/v1
VITE_APP_TITLE=My Application

# docker-compose.dev.yml
version: '3.8'
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    ports:
      - "5432:5432"
  
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    depends_on:
      - db
  
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"

🤝 人机协同机制

11.1 人工审核节点

在以下关键节点设置人工审核:

11.2 飞书/钉钉集成

# OpenClaw 飞书机器人配置
# ~/.openclaw/channels/feishu.json
{
  "channel": "feishu",
  "app_id": "cli_xxxxxxxxxxxxx",
  "app_secret": "xxxxxxxxxxxxx",
  "webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx",
  "approval_enabled": true,
  "approval_nodes": [
    "prd_review",
    "tech_design_review",
    "code_review",
    "deployment_approval"
  ]
}

# 审批通知消息格式
{
  "msg_type": "interactive",
  "card": {
    "elements": [{
      "tag": "div",
      "text": {
        "content": "**待审批**: PRD 文档已生成\n项目:XXX 系统\n请点击查看并审批"
      }
    }],
    "actions": [{
      "tag": "button",
      "text": { "content": "查看详情" },
      "url": "http://jenkins/job/prd-review"
    }]
  }
}

11.3 异常处理流程

  1. AI Agent 检测到异常(编译失败/测试失败/部署失败)
  2. 自动尝试修复(最多 3 次)
  3. 修复失败则通知相关人员
  4. 人工介入处理
  5. 记录问题到知识库

🔧 故障排查指南

12.1 常见问题与解决方案

问题现象 可能原因 解决方案
OpenClaw 无法启动 Node.js 版本过低 升级到 Node.js 22+
API Key 认证失败 密钥过期或配置错误 重新生成 API Key 并更新配置
Docker 容器无法启动 端口冲突 修改端口映射或停止占用端口的服务
K8S Pod 一直处于 Pending 资源不足 检查节点资源,扩容或调整资源请求
Jenkins Pipeline 失败 凭证配置错误 检查 Jenkins 凭证配置
测试覆盖率不达标 缺少测试用例 补充单元测试和集成测试

12.2 日志查看命令

# OpenClaw 日志
openclaw logs --follow

# Docker 容器日志
docker logs -f <container-id>

# Kubernetes Pod 日志
kubectl logs -f <pod-name> -n <namespace>

# Jenkins 构建日志
# 通过 Web UI 查看或 API 获取

# 系统日志
journalctl -u docker -f
journalctl -u kubelet -f

12.3 性能优化建议