🤖 人机协同节点技术报告

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

版本: 1.0.0 | 发布日期: 2026 年 3 月 15 日

核心功能: 任务暂停 | 人工审核 | 流程重启

📋 项目概述

本系统是"基于 OpenClaw + Claude Code 的端到端研发自动化系统"的核心子系统,专注于实现人机协同节点的任务暂停、人工审核、流程重启功能。系统覆盖从需求分析到 UI 自动化测试验收的全流程自动化研发,并在关键研发节点支持人机协同干预。

🎯 核心价值

  • 智能暂停机制,确保关键决策点有人工介入
  • 灵活审核流程,支持多种决策类型
  • 弹性重启策略,支持从任意节点恢复
  • 全流程追溯,完整的审计日志

🔧 应用场景

  • AI 编码后的代码审核
  • PRD 和技术方案评审
  • 生产部署前确认
  • 异常处理和恢复

📊 技术指标

  • API 响应时间 < 100ms
  • 支持并发用户数 1000+
  • 状态变更追溯率 100%
  • 系统可用性 99.9%

🏗️ 系统架构

整体架构图

┌─────────────────────────────────────────────────────────────┐ │ 前端展示层 (React + CSS3) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 任务看板 │ │ 审核中心 │ │ 监控面板 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ HTTP/WebSocket │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ API 网关层 (FastAPI) │ │ RESTful API / WebSocket / 认证授权 │ └─────────────────────────────────────────────────────────────┘ │ 异步调用 │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 业务服务层 (Python Async) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 暂停服务 │ │ 审核服务 │ │ 恢复服务 │ │ │ │ PauseSvc │ │ ReviewSvc │ │ ResumeSvc │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ Repository Pattern │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 数据存储层 (PostgreSQL/Redis) │ │ 任务数据 │ 审核记录 │ 审计日志 │ 缓存 │ └─────────────────────────────────────────────────────────────┘

分层架构说明

层级 职责 技术选型 关键特性
前端展示层 用户界面交互、状态展示 React 18 + CSS3 响应式设计、实时通知
API 网关层 请求路由、认证授权、限流 FastAPI 0.100+ 异步处理、自动文档
业务服务层 核心业务逻辑处理 Python 3.12 Async 事件驱动、状态管理
数据访问层 数据持久化抽象 Repository Pattern 多存储后端支持
数据存储层 数据存储和检索 PostgreSQL + Redis 事务支持、高速缓存

⚙️ 核心模块设计

1. 任务暂停服务 (TaskPauseService)

负责处理任务暂停请求、管理暂停状态转换、记录暂停历史和原因。

class TaskPauseService:
    async def pause_task(pause_request: PauseRequest) → Dict[str, Any]:
        """暂停任务执行"""
        # 1. 获取并验证任务
        # 2. 更新节点和任务状态为 PAUSED
        # 3. 记录暂停历史
        # 4. 触发通知事件
    
    async def auto_pause_for_review(task_id, node_id, review_type):
        """因需要人工审核而自动暂停"""

2. 人工审核服务 (TaskReviewService)

管理审核队列、处理审核决策、支持审核升级、记录审核历史。

class TaskReviewService:
    async def submit_for_review(review_request: ReviewRequest):
        """提交任务进行审核"""
        # 1. 验证任务和节点
        # 2. 更新节点状态为 WAITING_REVIEW
        # 3. 添加到审核队列
        # 4. 通知审核人员
    
    async def submit_review_decision(review_response: ReviewResponse):
        """提交审核决策"""
        # APPROVED → 继续执行
        # REJECTED → 暂停等待处理
        # MODIFIED → 应用修改后继续

3. 任务恢复服务 (TaskResumeService)

处理任务恢复请求、支持多种重启策略、管理失败重试。

class TaskResumeService:
    async def resume_task(resume_request: ResumeRequest):
        """恢复或重启任务"""
        # resume_type: normal, restart_from_beginning,
        #              restart_from_node, skip_node
    
    async def retry_failed_node(task_id, node_id):
        """重试失败的节点,最多 3 次"""

恢复策略对比

策略 描述 适用场景 进度保留
正常恢复 从暂停点继续执行 审核通过后恢复 ✅ 全部保留
从头重启 重新执行整个任务 需求重大变更 ❌ 全部清空
从节点重启 从指定节点重新开始 局部问题修复 ⚠️ 部分保留
跳过节点 跳过特定节点继续 非关键节点跳过 ✅ 保留其他

📦 数据模型设计

任务模型 (Task)

class Task(BaseModel):
    task_id: str                      # 任务唯一标识 (UUID)
    task_name: str                    # 任务名称
    task_type: str                    # 任务类型 (ai_coding, prd_design...)
    status: TaskStatus                # 任务状态枚举
    priority: int                     # 优先级 (1-10)
    
    workflow_nodes: List[WorkflowNode] # 工作流节点列表
    current_node_index: int           # 当前节点索引
    
    # 人机协同相关
    pause_reason: Optional[str]       # 暂停原因
    pause_initiator: Optional[str]    # 暂停发起人 (system/ai/human)
    review_required: bool             # 是否需要审核
    review_history: List[Dict]        # 审核历史记录
    
    context: Dict[str, Any]            # 上下文信息
    created_at: datetime              # 创建时间
    updated_at: datetime              # 更新时间

状态枚举 (TaskStatus)

PENDING 待执行 RUNNING 执行中 PAUSED 已暂停 WAITING_REVIEW 等待审核 REVIEW_APPROVED 审核通过 REVIEW_REJECTED 审核拒绝 COMPLETED 已完成 FAILED 失败 RESTARTED 已重启

审核决策枚举 (ReviewDecision)

APPROVED 通过 REJECTED 拒绝 MODIFIED 修改后通过

🔌 API 接口设计

任务暂停 API

方法 路径 描述 请求参数
POST /tasks/{task_id}/pause 暂停任务 reason, initiator, initiator_id
GET /tasks/{task_id}/pause-history 获取暂停历史 -

人工审核 API

方法 路径 描述 请求参数
POST /tasks/{task_id}/review/submit 提交审核 node_id, reviewer_id, review_type
POST /tasks/{task_id}/review/decision 提交审核决策 node_id, decision, comments
GET /reviews/pending 获取待审核列表 reviewer_id (optional)
POST /tasks/{task_id}/reviews/{node_id}/escalate 升级审核 reason

任务恢复 API

方法 路径 描述 请求参数
POST /tasks/{task_id}/resume 恢复/重启任务 resume_type, node_id (optional)
POST /tasks/{task_id}/nodes/{node_id}/retry 重试失败节点 -
GET /tasks/{task_id}/restart-history 获取重启历史 -

🛠️ 技术栈选型

后端技术栈

组件 技术 版本 选型理由
Web 框架 FastAPI 0.100+ 高性能异步、自动文档、类型安全
编程语言 Python 3.12 现代语法、丰富生态、AI 友好
数据验证 Pydantic 2.0+ 类型提示、自动验证、JSON 序列化
数据库 PostgreSQL 15+ ACID 事务、JSONB 支持、扩展性强
缓存 Redis 7+ 内存存储、发布订阅、高性能

前端技术栈

组件 技术 版本 选型理由
UI 框架 React 18+ 组件化、虚拟 DOM、生态丰富
样式 CSS3 - 自定义动画、渐变效果、响应式
构建工具 Webpack 5+ 模块打包、代码分割、热更新

✅ 测试策略

单元测试覆盖

暂停服务测试

  • ✅ test_pause_task_success
  • ✅ test_pause_task_not_found
  • ✅ test_pause_task_invalid_status
  • ✅ test_validate_pause_request
  • ✅ test_auto_pause_for_review

审核服务测试

  • ✅ test_submit_for_review_success
  • ✅ test_submit_review_decision_approved
  • ✅ test_submit_review_decision_rejected
  • ✅ test_get_pending_reviews
  • ✅ test_escalate_review

恢复服务测试

  • ✅ test_normal_resume_success
  • ✅ test_restart_from_beginning
  • ✅ test_restart_from_node
  • ✅ test_skip_node
  • ✅ test_retry_failed_node

测试执行命令

# 运行所有单元测试
pytest tests/unit/ -v

# 运行特定测试文件
pytest tests/unit/test_task_pause_service.py -v

# 生成覆盖率报告
pytest --cov=backend --cov-report=html

🚀 部署方案

Docker Compose 部署

version: '3.8'
services:
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/human_collab
      - REDIS_URL=redis://redis:6379
    depends_on:
      - db
      - redis
  
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
  
  db:
    image: postgres:15
    volumes:
      - pgdata:/var/lib/postgresql/data
  
  redis:
    image: redis:7-alpine

volumes:
  pgdata:

Kubernetes 部署要点

🔒 安全设计

认证授权

  • JWT Token 认证
  • RBAC 角色权限控制
  • API 密钥管理
  • 会话超时机制

数据安全

  • 敏感数据加密存储
  • HTTPS 传输加密
  • SQL 注入防护
  • XSS 攻击防护

审计日志

  • 所有状态变更记录
  • 操作人身份追踪
  • 时间戳不可篡改
  • 日志完整性校验

🔮 未来规划

短期目标 (1-3 个月)

中期目标 (3-6 个月)

长期愿景 (6-12 个月)