多Agent协作实战:AI产品经理+前端+测试的协同架构

多 Agent 协作的前端开发场景:;AI 产品经理、AI 前端、AI 测试的协同模式

多 Agent 协作是 2026 年 AI 工程化的前沿方向。不同于单模型交互,;多 Agent 系统让不同角色的 AI 代理分工协作——AI 产品经理定义需求,;AI 前端工程师实现代码,;AI 测试工程师验证质量。本文基于三个实验性项目的实践,;梳理多 Agent 协作在前端开发中的适用场景、协同协议与当前局限。

一、多 Agent 协作的角色分工与协议设计

三角色模型

在前端开发场景中,;三个 Agent 角色各有明确的职责边界:;

角色核心职责输入输出AI 产品经理需求拆解、优先级排序、验收标准定义业务需求文档功能规格书AI 前端工程师组件设计、代码实现、技术方案选型功能规格书源码 + 组件文档AI 测试工程师测试策略制定、测试脚本生成、缺陷验证功能规格书 + 源码测试报告 + 修复建议

协同协议的关键要素

三个 Agent 之间的协同依赖协议约定。协议包含三个层次:;

消息格式协议
——Agent 之间传递的消息必须遵循统一格式

交接标准协议
——每个阶段的输出必须满足下一阶段的输入要求

冲突解决协议
——当 Agent 的意见冲突时,;如何裁决

/**
 * 多 Agent 协同协议定义
 * 规范 Agent 之间的消息传递和交接标准
 */

// 消息格式协议
interface AgentMessage {
  from: AgentRole;
  to: AgentRole;
  type: 'request' | 'response' | 'conflict' | 'approval';
  payload: unknown;
  timestamp: number;
  sessionId: string;
}

type AgentRole = 'pm' | 'frontend' | 'test';

// 交接标准协议:;PM → Frontend 的规格书格式
interface FeatureSpecification {
  featureId: string;
  title: string;
  priority: 'P0' | 'P1' | 'P2';
  userStories: UserStory[];
  acceptanceCriteria: AcceptanceCriterion[];
  technicalConstraints: string[];
  performanceBudget: {
    lcp: number;
    bundleSizeIncrease: number;
  };
}

interface UserStory {
  id: string;
  description: string;
  expectedBehavior: string;
  edgeCases: string[];
}

interface AcceptanceCriterion {
  id: string;
  criterion: string;
  testType: 'visual' | 'functional' | 'performance';
  measurable: boolean;
  measurementMethod: string;
}

// 交接标准协议:;Frontend → Test 的交付物格式
interface FrontendDeliverable {
  featureId: string;
  components: ComponentDescriptor[];
  routeChanges: RouteChange[];
  stateChanges: StateChange[];
  accessibilityNotes: string[];
  knownLimitations: string[];
}

interface ComponentDescriptor {
  name: string;
  props: Record;
  events: string[];
  dependencies: string[];
  renderComplexity: 'simple' | 'medium' | 'complex';
}

// 冲突解决协议
interface ConflictResolution {
  conflictType: 'spec-ambiguity' | 'tech-feasibility' | 'test-disagreement';
  resolutionStrategy: 'pm-decides' | 'data-driven' | 'escalate-human';
  requiredData: string[];
  maxResolutionTime: number;  // 分钟
}

const conflictRules: Record = {
  'spec-ambiguity': {
    conflictType: 'spec-ambiguity',
    resolutionStrategy: 'pm-decides',   // 规格模糊由 PM Agent 补充
    requiredData: ['原始需求文档'],
    maxResolutionTime: 10,
  },
  'tech-feasibility': {
    conflictType: 'tech-feasibility',
    resolutionStrategy: 'data-driven',   // 技术可行性用数据说话
    requiredData: ['性能基准数据', '竞品实现方案'],
    maxResolutionTime: 30,
  },
  'test-disagreement': {
    conflictType: 'test-disagreement',
    resolutionStrategy: 'escalate-human', // 测试分歧升级到人工
    requiredData: ['测试报告', '代码 diff'],
    maxResolutionTime: 60,
  },
};

二、三个实验项目的协同流程与数据

项目一:;内部工具 Dashboard 搭建

场景约束:;功能可枚举、性能要求中等、无复杂交互。

协同流程数据:;

环节耗时人工介入次数质量评分PM → 规格15 分钟1(优先级调整)7/10FE → 代码40 分钟2(组件选型修正)6/10TE → 测试25 分钟1(边界条件补充)8/10总计80 分钟4 次7/10

结论:;内部工具场景适合多 Agent 协作。功能可枚举意味着规格书质量可控,;代码实现风险低。

项目二:;电商首页改版

场景约束:;视觉一致性严格、A/B 测试需求、性能预算严格。

协同流程数据:;

环节耗时人工介入次数质量评分PM → 规格30 分钟3(业务规则澄清)5/10FE → 代码90 分钟5(设计 Token 对齐)4/10TE → 测试45 分钟4(交互行为验证)5/10总计165 分钟12 次4.5/10

结论:;电商首页场景不适合多 Agent 协作。视觉一致性和业务规则的复杂度远超 AI 的理解能力,;人工介入频率过高。

项目三:;数据探索面板

场景约束:;界面形态不可枚举、交互逻辑动态推断、性能中等。

协同流程数据:;

环节耗时人工介入次数质量评分PM → 规格20 分钟2(数据源确认)6/10FE → 代码60 分钟3(图表库选型)5/10TE → 测试35 分钟2(数据边界验证)6/10总计115 分钟7 次5.5/10

结论:;数据探索面板场景有潜力但需要更多人工介入。形态不可枚举的部分适合 AI 生成,;但数据源配置和图表选型仍需人工决策。

三、协同流程中的瓶颈与解决方案

瓶颈一:;规格书质量是全局瓶颈

PM Agent 生成的规格书质量直接决定后续两个 Agent 的产出质量。在三个项目中,;规格书的平均质量评分只有 5.5/10——AI 对业务上下文的理解不足导致规格模糊。

解决方案:;引入"规格审查环"——Frontend Agent 和 Test Agent 在收到规格书后,;先做一轮"可实现性审查"和"可测试性审查",;将不可行和不可测的部分反馈给 PM Agent 补充。

/**
 * 规格审查环:;下游 Agent 审查上游规格书质量
 */
interface SpecReviewFeedback {
  reviewer: AgentRole;
  issues: SpecIssue[];
  suggestions: string[];
  overallFeasibility: 'feasible' | 'partially-feasible' | 'not-feasible';
}

interface SpecIssue {
  section: string;
  issueType: 'ambiguous' | 'missing' | 'contradictory' | 'unmeasurable';
  description: string;
  requiredClarification: string;
}

async function reviewSpecification(
  spec: FeatureSpecification,
  reviewerRole: AgentRole
): Promise {
  const issues: SpecIssue[] = [];

  try {
    if (reviewerRole === 'frontend') {
      // 前端 Agent 的可实现性审查
      for (const story of spec.userStories) {
        // 检查用户故事是否有明确的预期行为
        if (!story.expectedBehavior || story.expectedBehavior.length < 20) {
          issues.push({
            section: `用户故事 ${story.id}`,
            issueType: 'ambiguous',
            description: '预期行为描述不够具体',
            requiredClarification: '补充具体的交互行为描述',
          });
        }

        // 检查边界条件是否覆盖
        if (story.edgeCases.length < 2) {
          issues.push({
            section: `用户故事 ${story.id}`,
            issueType: 'missing',
            description: '边界条件不足',
            requiredClarification: '补充至少 2 个边界条件',
          });
        }
      }

      // 检查验收标准是否可测量
      for (const criterion of spec.acceptanceCriteria) {
        if (!criterion.measurable) {
          issues.push({
            section: `验收标准 ${criterion.id}`,
            issueType: 'unmeasurable',
            description: '验收标准不可量化测量',
            requiredClarification: '补充可量化的测量方法',
          });
        }
      }
    }

    if (reviewerRole === 'test') {
      // 测试 Agent 的可测试性审查
      for (const criterion of spec.acceptanceCriteria) {
        if (criterion.testType === 'visual' && !criterion.measurementMethod) {
          issues.push({
            section: `验收标准 ${criterion.id}`,
            issueType: 'missing',
            description: '视觉类验收标准缺少测量方法',
            requiredClarification: '补充视觉对比的具体方法',
          });
        }
      }
    }

    const feasibleCount = spec.acceptanceCriteria.filter(c => c.measurable).length;
    const totalCount = spec.acceptanceCriteria.length;
    const feasibilityRatio = feasibleCount / totalCount;

    return {
      reviewer: reviewerRole,
      issues,
      suggestions: issues.map(i => i.requiredClarification),
      overallFeasibility: feasibilityRatio >= 0.8 ? 'feasible'
        : feasibilityRatio >= 0.5 ? 'partially-feasible' : 'not-feasible',
    };
  } catch (error) {
    console.error(`规格审查失败: ${error instanceof Error ? error.message : String(error)}`);
    return {
      reviewer: reviewerRole,
      issues: [{ section: 'system', issueType: 'ambiguous', description: '审查执行异常', requiredClarification: '人工介入' }],
      suggestions: ['规格审查异常,;需人工介入'],
      overallFeasibility: 'not-feasible',
    };
  }
}

瓶颈二:;Agent 之间的上下文传递损耗

三个 Agent 之间传递的信息不可避免地有损耗。PM Agent 的意图在传递给 Frontend Agent 后,;可能有 30% 的语义丢失。

解决方案:;在交接消息中增加"意图声明"字段——不仅传递规格内容,;还传递规格背后的意图和约束理由。

瓶颈三:;测试 Agent 的可靠性不足

AI 生成的测试脚本有约 15% 的 Flaky 率。当测试 Agent 报告"失败"时,;Frontend Agent 无法区分是真失败还是 Flaky 失败。

解决方案:;每个测试运行 3 次,;3 次结果一致才认定为有效结果。不一致时标记为 Flaky,;需要人工介入。

四、当前局限与适用场景总结

多 Agent 协作当前的三个局限

业务理解能力不足
——AI 无法理解复杂的业务规则和商业约束,;导致规格书质量不稳定

上下文传递损耗
——Agent 之间的信息传递存在语义丢失,;影响下游产出质量

测试可靠性不足
——AI 测试的 Flaky 率偏高,;导致协同流程中的验证环节不可信

适用场景判断矩阵

场景特征适合多 Agent不适合多 Agent原因功能可枚举是—规格书质量可控视觉一致性严格—是设计 Token 对齐需要人工业务规则复杂—是PM Agent 无法理解复杂业务交互逻辑动态部分—生成式 UI 有潜力但需人工兜底性能预算严格部分—AI 可以计算但人工需要确认

结论

多 Agent 协作在前端开发中已有初步成果,;但当前仍处于实验阶段。核心结论有三点:;

第一,;多 Agent 协作的适用场景是"功能可枚举、视觉要求宽松、业务规则简单"的项目。超出这个范围,;人工介入频率过高,;协同效率不如单人开发。

第二,;规格书质量是全局瓶颈。引入"规格审查环"可以部分解决,;但根本问题是 AI 缺乏业务上下文理解能力,;短期内无法突破。

第三,;多 Agent 协作的价值不在于减少人工投入,;在于提供结构化的开发框架——规格书、代码、测试报告的格式被协议强制规范,;减少了协作中的信息混乱。

多 Agent 协作不是替代人工团队,;是在特定场景下提供一种更结构化的开发流程。在当前的技术局限下,;适用场景的选择比 Agent 的调优更重要。

0

评论0

请先
显示验证码
没有账号?注册  忘记密码?