🤖 多Agent协作开发实践:从零构建面向Agent友好的技术博客网站

举报
华为云社区精选 发表于 2026/07/06 10:09:55 2026/07/06
【摘要】 🤖 多Agent协作开发实践:从零构建面向Agent友好的技术博客网站一句话总结:8个专职Agent,7个阶段,3.5小时,从需求到交付——完整演示如何用多Agent团队高效构建一个全栈Web应用。 📖 目录一、项目背景二、团队组建与角色分工三、开发流程总览四、Phase A — 需求规格编写五、Phase B — 技术设计六、Phase C — 任务拆解七、Phase D — 编码实...

🤖 多Agent协作开发实践:从零构建面向Agent友好的技术博客网站

一句话总结:8个专职Agent,7个阶段,3.5小时,从需求到交付——完整演示如何用多Agent团队高效构建一个全栈Web应用。


📖 目录


一、项目背景

1.1 需求描述

开发一个面向Agent友好的技术博客网站,核心特性:

特性 说明
Agent注册/登录 任意Agent可携带用户信息注册和登录
Markdown文章发布 已登录Agent可发布技术文章
AI审核与评分 后台AI自动审核评分,评分≥60通过
首页智能展示 高分文章首页展示,低分文章隐藏
Agent友好爬取 任意Agent可方便爬取和阅读文章

1.2 技术约束

约束项 选择
构建工具 Vite
UI方案 Web Components(原生自定义元素)
运行时 JavaScript / Node.js
命名规范 kebab-case
交互语言 中文

二、团队组建与角色分工

2.1 团队架构

graph TD
    TL[👨‍💼 Team Leader<br/>规划/调度/决策] --> REQ[📋 需求工程师<br/>EARS规格编写]
    TL --> DES[🏗️ 技术设计师<br/>架构与API设计]
    TL --> PLAN[📝 任务规划师<br/>原子任务拆解]
    TL --> BE[🔧 后端工程师<br/>Express+SQLite+JWT]
    TL --> FE[🎨 前端工程师<br/>Vite+WebComponents]
    TL --> IE[🔗 集成工程师<br/>前后端联调]
    TL --> TE[🧪 测试工程师<br/>121个测试用例]
    TL --> CR[👀 代码审查员<br/>25项问题发现]
    TL --> FIX[🛠️ 修复工程师<br/>11项问题修复]
    TL --> VE[✅ 验证工程师<br/>独立功能验证]

    style TL fill:#4A90D9,color:#fff,stroke:#2C5F8A
    style REQ fill:#7B68EE,color:#fff
    style DES fill:#7B68EE,color:#fff
    style PLAN fill:#7B68EE,color:#fff
    style BE fill:#2ECC71,color:#fff
    style FE fill:#2ECC71,color:#fff
    style IE fill:#F39C12,color:#fff
    style TE fill:#E74C3C,color:#fff
    style CR fill:#E74C3C,color:#fff
    style FIX fill:#F39C12,color:#fff
    style VE fill:#9B59B6,color:#fff

2.2 角色职责说明

角色 Agent类型 职责 产出
Team Leader team-leader 全局规划、任务调度、质量把关 任务列表、进度跟踪
需求工程师 team-spec-requirement-agent EARS格式需求规格编写 spec.md
技术设计师 team-spec-design-agent 架构设计、API设计、数据模型 design.md
任务规划师 team-spec-task-agent 原子任务拆解与依赖分析 tasks.md
后端工程师 coding-engineer 服务端全部代码 server/ 目录
前端工程师 coding-engineer 客户端全部代码 src/ 目录
集成工程师 coding-engineer 前后端联调与问题修复 4项集成修复
测试工程师 developer-test-generator 单元测试与集成测试 121个测试
代码审查员 team-code-reviewer 代码质量与安全审查 25项审查发现
修复工程师 coding-engineer 审查问题修复 11项修复
验证工程师 team-result-verifier 独立功能验证 验证报告

关键洞察:同一 coding-engineer 类型可复用于不同阶段(后端/前端/集成/修复),通过不同的 prompt 赋予不同职责。


三、开发流程总览

3.1 Spec-Driven Development 流程

flowchart LR
    A["📋 Phase A<br/>需求规格"] --> B["🏗️ Phase B<br/>技术设计"]
    B --> C["📝 Phase C<br/>任务拆解"]
    C --> D1["🔧 Phase D<br/>后端开发"]
    C --> D2["🎨 Phase D<br/>前端开发"]
    D1 --> E["🔗 Phase D<br/>前后端联调"]
    D2 --> E
    E --> F1["🧪 Phase E<br/>单元测试"]
    E --> F2["👀 Phase F<br/>代码审查"]
    F1 --> G["🛠️ 问题修复"]
    F2 --> G
    G --> H["✅ Phase G<br/>功能验证"]

    style A fill:#7B68EE,color:#fff
    style B fill:#7B68EE,color:#fff
    style C fill:#7B68EE,color:#fff
    style D1 fill:#2ECC71,color:#fff
    style D2 fill:#2ECC71,color:#fff
    style E fill:#F39C12,color:#fff
    style F1 fill:#E74C3C,color:#fff
    style F2 fill:#E74C3C,color:#fff
    style G fill:#F39C12,color:#fff
    style H fill:#9B59B6,color:#fff

3.2 阶段耗时统计

阶段 耗时 产出 并行度
Phase A: 需求规格 ~7min spec.md (597行) 1人
Phase B: 技术设计 ~17min design.md (1460行) 1人
Phase C: 任务拆解 ~8min tasks.md (27个子任务) 1人
Phase D: 后端开发 ~41min 24个服务端文件 2人并行
Phase D: 前端开发 ~23min 15个客户端文件 ↑ 同上
Phase D: 前后端联调 ~39min 4项集成修复 1人
Phase E: 单元测试 ~37min 121个测试用例 2人并行
Phase F: 代码审查 ~7min 25项审查发现 ↑ 同上
问题修复 ~9min 11项修复 1人
Phase G: 功能验证 ~33min VERDICT: PASS 1人
总计 ~3.5h 40+文件, 121测试

四、Phase A — 需求规格编写

4.1 做什么

需求工程师team-spec-requirement-agent)基于用户需求,生成EARS格式的需求规格文档。

4.2 怎么做

# 发布任务
publish-task(id=1, content="生成EARS格式需求规格文档")

# 启动需求工程师
background-task(
    agent_name="需求工程师",
    subagent_type="team-spec-requirement-agent",
    prompt="""
    你是需求规格工程师,负责生成EARS格式的需求规格文档。
    
    ## 项目描述
    开发一个面向Agent友好的技术博客网站...
    
    ## 你的任务
    1. 在 .codeartsdoer/specs/agent-blog/ 目录下创建 spec.md
    2. 使用EARS格式编写完整的需求规格文档
    """,
    assign_task_id=[1]
)

4.3 产出结构

需求规格文档包含以下章节:

spec.md
├── 1. 组件定位(核心职责、输入、输出、边界)
├── 2. 领域术语表
├── 3. 角色与边界
├── 4. DFX约束(性能、安全、可用性、可维护性)
├── 5. 核心能力
│   ├── 5.1 Agent注册(EARS:...时,系统应...)
│   ├── 5.2 Agent登录
│   ├── 5.3 文章发布
│   ├── 5.4 AI审核与评分
│   ├── 5.5 首页文章展示
│   ├── 5.6 Agent文章爬取
│   └── 5.7 文章管理
└── 6. 数据约束

4.4 关键经验

💡 EARS格式的价值:每个需求都有明确的触发条件、系统行为和验收标准,后续设计和测试可直接映射。例如:

当Agent提交注册请求时,系统应校验用户名(3-30字符,仅字母数字下划线)、
密码(≥6字符)、Agent标识(非空),校验通过后创建用户并返回JWT Token。
验收标准:[AC1] 合法输入返回200+Token [AC2] 重复用户名返回409...

五、Phase B — 技术设计

5.1 做什么

技术设计师team-spec-design-agent)基于需求规格,生成完整的技术设计文档。

5.2 怎么做

# 等待Phase A完成后
background-task(
    agent_name="技术设计师",
    subagent_type="team-spec-design-agent",
    prompt="""
    你是技术设计师,负责生成技术设计文档。
    
    ## 技术约束(必须严格遵守)
    - 前端:Vite + Web Components + 纯H5
    - 后端:Node.js + Express
    - 数据库:SQLite
    
    ## 你的任务
    1. 阅读 spec.md 需求规格文档
    2. 创建 design.md 技术设计文档
    3. 包含:系统架构、技术选型、目录结构、数据模型、API设计、组件设计...
    """
)

5.3 产出亮点 — API设计

技术设计中最关键的部分是 API接口规范,它直接决定了前后端能否正确对接:

POST /api/v1/auth/register     → 注册
POST /api/v1/auth/login        → 登录
GET  /api/v1/articles           → 公开文章列表(Agent爬取)
GET  /api/v1/articles/:id       → 文章详情(Agent爬取)
POST /api/v1/articles           → 发布文章(需认证)
GET  /api/v1/articles/mine      → 我的文章(需认证)
DELETE /api/v1/articles/:id     → 删除文章(需认证)
PUT  /api/v1/articles/:id/resubmit → 重新提交(需认证)

5.4 产出亮点 — 数据模型

erDiagram
    USERS {
        string id PK
        string username UK
        string password_hash
        string agent_id
        int login_fail_count
        datetime locked_until
        datetime created_at
    }
    
    ARTICLES {
        string id PK
        string author_id FK
        string title
        text content
        string tags
        string status
        int score
        datetime published_at
        datetime updated_at
        int retry_count
        datetime review_submitted_at
    }
    
    REVIEW_RECORDS {
        string id PK
        string article_id FK
        int score
        string result
        text review_comment
        datetime reviewed_at
    }
    
    AUDIT_LOGS {
        string id PK
        string user_id
        string action
        text detail
        datetime created_at
    }
    
    USERS ||--o{ ARTICLES : "author_id"
    ARTICLES ||--o{ REVIEW_RECORDS : "article_id"

5.5 关键经验

💡 设计先行,避免返工:技术设计文档中明确定义了API路径、请求参数、响应格式、状态码、错误码,后续前后端工程师并行开发时,只需遵循同一份API规范即可,极大减少了集成问题。


六、Phase C — 任务拆解

6.1 做什么

任务规划师team-spec-task-agent)将技术设计拆解为可执行的原子任务。

6.2 拆解原则

原则 说明
原子性 每个任务2-4小时可完成
可验证 每个任务有明确验收标准
有依赖 明确标注任务间的前后依赖关系
文件绑定 每个任务标注涉及的文件

6.3 产出示例

### 任务2.1: 用户数据访问层
- 描述: 实现user-repository.js,包含createUser, findByUsername, findById等方法
- 涉及文件: server/repositories/user-repository.js
- 依赖: 任务1.3(数据库初始化)
- 验收标准:
  - [x] createUser插入用户并返回完整用户对象
  - [x] findByUsername按用户名查询返回用户或null
  - [x] 所有查询使用参数化查询防止SQL注入

七、Phase D — 编码实现

7.1 并行开发策略

这是整个流程中最关键的并行化环节。前后端工程师同时启动,基于同一份API规范独立开发:

sequenceDiagram
    participant TL as Team Leader
    participant BE as 后端工程师
    participant FE as 前端工程师
    participant IE as 集成工程师

    TL->>BE: 分配后端开发任务
    TL->>FE: 分配前端开发任务
    
    Note over BE,FE: 并行开发(基于同一份API规范)
    
    BE->>BE: Express + SQLite + JWT
    BE->>BE: 24个服务端文件
    FE->>FE: Vite + Web Components
    FE->>FE: 15个客户端文件
    
    BE-->>TL: 后端完成
    FE-->>TL: 前端完成
    
    TL->>IE: 启动集成工程师
    IE->>IE: 验证API对接
    IE->>IE: 修复4个集成问题
    IE-->>TL: 联调完成

7.2 后端开发产出

server/
├── index.js                    # Express入口(CORS、路由、优雅关闭)
├── config.js                   # 配置管理(环境变量、JWT、速率限制参数)
├── database/
│   ├── connection.js           # SQLite连接(WAL模式、外键约束)
│   └── init.js                 # 建表脚本(4张表+索引)
├── repositories/               # 数据访问层
│   ├── user-repository.js      # 用户CRUD
│   ├── article-repository.js   # 文章CRUD(分页、排序、标签筛选)
│   ├── review-repository.js    # 审核记录CRUD
│   └── audit-log-repository.js # 审计日志
├── services/                   # 业务逻辑层
│   ├── user-service.js         # 注册/登录(bcrypt、账户锁定)
│   ├── article-service.js      # 文章发布/查询/删除/重新提交
│   └── review-service.js       # AI审核提交/结果处理
├── controllers/                # 控制器层
│   ├── auth-controller.js      # 认证请求处理
│   └── article-controller.js   # 文章请求处理
├── routes/                     # 路由层
│   ├── auth-router.js          # POST /register, POST /login
│   └── article-router.js       # 6个文章API路由
├── middlewares/                 # 中间件
│   ├── auth-middleware.js       # JWT Token验证
│   ├── rate-limit-middleware.js # 滑动窗口速率限制
│   ├── validate-middleware.js   # 请求参数schema校验
│   └── error-middleware.js      # 统一错误处理
├── schedulers/                 # AI审核调度
│   ├── review-scheduler.js     # 审核调度器(含模拟审核服务)
│   └── review-retry-queue.js   # 指数退避重试队列
└── utils/                      # 工具类
    ├── error-types.js          # 10个错误码 + AppError类
    ├── logger.js               # 结构化日志
    └── validator.js            # 通用校验函数

7.3 前端开发产出

src/
├── main.js                     # 应用入口(注册所有Web Components)
├── router/
│   └── app-router.js           # SPA路由(History API)
├── services/                   # API服务层
│   ├── api-client.js           # HTTP请求封装(fetch + Token注入)
│   ├── auth-service.js         # Token存储 + 注册/登录API
│   └── article-service.js      # 文章相关API
├── components/                 # Web Components
│   ├── blog-header.js          # 顶部导航栏
│   ├── blog-home.js            # 首页文章列表
│   ├── blog-article-detail.js  # 文章详情页
│   ├── blog-article-editor.js  # 文章编辑器(含Markdown预览)
│   ├── blog-auth-form.js       # 注册/登录表单
│   ├── blog-my-articles.js     # 我的文章管理
│   ├── blog-pagination.js      # 分页组件
│   └── blog-markdown-renderer.js # Markdown渲染(marked+hljs+DOMPurify)
└── styles/
    └── global.css              # 全局样式(CSS变量、响应式)

7.4 集成阶段发现的4个问题

# 问题 严重性 修复方式
1 marked v15 API不兼容,highlight选项被移除 🔴严重 改用renderer.code(token) + new Marked()
2 Markdown内容通过HTML属性传递,长文章被截断 🔴严重 改用JavaScript property设置content
3 编辑器预览模式同样存在属性传递问题 🔴严重 同上,改用property
4 findByAuthorId查询缺少content字段 🔴严重 SQL中添加content字段

7.5 关键经验

💡 并行开发的基石是API规范:只要API路径、请求参数、响应格式在技术设计阶段定义清楚,前后端完全可以并行开发。集成阶段发现的问题主要是"实现细节不匹配"而非"接口设计不匹配"。

⚠️ 第三方库版本兼容性marked v15 的API变更是一个典型的"静默失败"——代码不报错但功能失效。集成测试是发现此类问题的唯一手段。


八、Phase E — 单元测试

8.1 做什么

测试工程师developer-test-generator)为后端API和前端组件编写测试。

8.2 测试架构

graph TB
    subgraph "后端测试 (Jest)"
        AT[auth.test.js<br/>19个测试]
        ART[article.test.js<br/>39个测试]
        RLT[rate-limit.test.js<br/>4个测试]
    end
    
    subgraph "前端测试 (Vitest + happy-dom)"
        AF[blog-auth-form.test.js<br/>13个测试]
        AH[blog-home.test.js<br/>13个测试]
        AP[blog-pagination.test.js<br/>23个测试]
        AR[router.test.js<br/>13个测试]
    end
    
    subgraph "测试辅助"
        TA[test-app.js<br/>无速率限制的测试应用]
        TH[test-helpers.js<br/>数据库清理]
    end
    
    TA --> AT
    TA --> ART
    TH --> TA
    
    style AT fill:#2ECC71,color:#fff
    style ART fill:#2ECC71,color:#fff
    style RLT fill:#2ECC71,color:#fff
    style AF fill:#3498DB,color:#fff
    style AH fill:#3498DB,color:#fff
    style AP fill:#3498DB,color:#fff
    style AR fill:#3498DB,color:#fff

8.3 测试结果

测试套件 框架 测试数 通过
auth.test.js Jest 19 ✅ 19
article.test.js Jest 39 ✅ 39
rate-limit.test.js Jest 4 ✅ 4
blog-auth-form.test.js Vitest 13 ✅ 13
blog-home.test.js Vitest 13 ✅ 13
blog-pagination.test.js Vitest 23 ✅ 23
router.test.js Vitest 13 ✅ 13
总计 121 ✅ 121

8.4 关键经验

💡 速率限制干扰测试:后端测试中,速率限制器的内存Store在测试文件间共享,导致auth测试被rate-limit测试的请求耗尽配额。解决方案:为auth/article测试创建不含速率限制的测试应用,rate-limit测试使用独立应用。

💡 内存数据库:使用 DB_PATH=:memory: 环境变量让SQLite使用内存模式,测试间互不影响,且不污染生产数据。


九、Phase F — 代码审查

9.1 做什么

代码审查员team-code-reviewer)对全部代码进行质量和安全审查。

9.2 审查发现分布

pie title 代码审查发现的问题分布
    "🔴 严重问题" : 5
    "🟡 一般问题" : 11
    "🟢 改进建议" : 9

9.3 5个严重问题详情

# 问题 文件 风险
1 JWT密钥硬编码可预测 server/config.js 认证体系可被攻破
2 速率限制可被IP伪造绕过 server/index.js 暴力破解无防护
3 速率限制定时器内存泄漏 rate-limit-middleware.js 服务器资源泄漏
4 标签搜索LIKE注入 article-repository.js 非授权数据访问
5 前后端密码trim不一致 blog-auth-form.js 特定密码无法使用

9.4 修复后的关键改动

JWT密钥校验(修复前 vs 修复后):

// ❌ 修复前:可预测的默认密钥
secret: process.env.JWT_SECRET || 'agent-blog-jwt-secret-key-2024-change-me-in-production'

// ✅ 修复后:启动时强制校验
const jwtSecret = process.env.JWT_SECRET;
if (!jwtSecret) {
  console.error('错误:环境变量 JWT_SECRET 未配置,服务器拒绝启动。');
  process.exit(1);
}
if (jwtSecret.length < 32) {
  console.error(`错误:JWT_SECRET 长度不足(当前 ${jwtSecret.length} 字符),要求至少32字符。`);
  process.exit(1);
}

LIKE注入修复

// ❌ 修复前:用户输入的 % 和 _ 未转义
params.push('%"' + tag + '"%');

// ✅ 修复后:转义LIKE通配符
const escapedTag = tag.replace(/%/g, '\\%').replace(/_/g, '\\_');
params.push('%"' + escapedTag + '"%');
// 并在SQL中添加 ESCAPE '\\' 子句

9.5 关键经验

💡 代码审查不可跳过:5个严重安全问题中,4个是运行时不会报错的"静默风险"(密钥可预测、IP伪造、内存泄漏、LIKE注入),只有通过人工审查才能发现。

💡 安全审查清单:JWT密钥管理、trust proxy配置、SQL注入(含LIKE注入)、XSS防护、密码处理一致性——这5项应作为每个项目的必查项。


十、Phase G — 功能验证

10.1 做什么

验证工程师team-result-verifier)独立验证所有功能是否满足需求规格。

10.2 验证方法

graph LR
    A[代码审查] --> B[单元测试<br/>58/58通过]
    B --> C[端到端API测试<br/>54项验证]
    C --> D[对抗性测试<br/>SQL注入/XSS/并发]
    D --> E{最终判定}
    E -->|全部通过| F[VERDICT: PASS]
    
    style F fill:#2ECC71,color:#fff,stroke:#27AE60

10.3 验证结果总览

功能模块 结果 通过/总数
Agent注册 7/7
Agent登录 5/5
文章发布 7/7
AI审核与评分 5/5
首页展示 7/7
Agent友好爬取 10/10
文章管理 6/6
安全特性 7/7
对抗性测试 ⚠️ 5/7

10.4 关键经验

💡 独立验证的价值:验证工程师不参与开发,从需求规格出发独立构造测试用例,能发现开发者"自测"时忽略的问题(如无效JSON返回500而非400)。

💡 端到端测试 > 单元测试:单元测试验证的是"代码是否按预期工作",端到端测试验证的是"功能是否满足需求"。两者互补,不可替代。


十一、关键经验与踩坑记录

11.1 ✅ 做对的事

经验 说明
Spec-Driven Development 先写需求规格→技术设计→任务拆解,再编码。避免"边写边想"导致的返工
API规范先行 技术设计阶段明确定义所有API接口,前后端可并行开发
并行开发 前后端工程师同时启动,节省50%开发时间
代码审查不可跳过 发现5个严重安全问题,4个是"静默风险"
独立功能验证 验证工程师从需求出发,发现开发者自测忽略的问题
任务列表驱动 publish-task 全局跟踪,避免重复工作和遗漏

11.2 ⚠️ 踩过的坑

表现 解决方案
第三方库API变更 marked v15移除highlight选项,代码静默失败 集成测试覆盖关键渲染路径
并行开发模块系统冲突 前端设置"type":"module",后端用CommonJS 统一使用ES模块语法
HTML属性传递大内容 Markdown内容作为属性传递被截断 改用JavaScript property
速率限制干扰测试 测试文件间共享内存Store导致429 为测试创建无速率限制的应用
前后端密码处理不一致 前端trim密码,后端不trim 统一处理逻辑
updateStatus不处理null score:null不会清除数据库score 增加score===null分支

11.3 🎯 流程优化建议

graph TD
    A[当前流程] --> B[优化建议]
    
    B --> B1["集成测试前置<br/>在Phase D中增加API契约测试"]
    B --> B2["增量代码审查<br/>每个工程师完成后立即审查<br/>而非等全部完成"]
    B --> B3["测试与开发并行<br/>测试工程师基于API规范先写测试<br/>开发工程师再实现"]
    B --> B4["CI/CD集成<br/>每次提交自动运行测试<br/>代码审查问题自动检测"]
    
    style B fill:#F39C12,color:#fff

十二、复现指南

12.1 环境准备

# 确保安装了 Node.js >= 20
node --version

# 创建项目目录
mkdir agent-blog && cd agent-blog

12.2 Step-by-Step 复现

Step 1: 初始化项目

作为Team Leader,首先调用 get-team-setup(scene='coding') 获取团队配置指引。

Step 2: Phase A — 需求规格

# 发布任务
publish-task(todos=[{
    "id": 1,
    "content": "生成EARS格式需求规格文档",
    "blocked_by": [],
    "target_files": [".codeartsdoer/specs/agent-blog/spec.md"]
}])

# 启动需求工程师
background-task(
    agent_name="需求工程师",
    subagent_type="team-spec-requirement-agent",
    prompt="""...""",  # 详见第四节
    assign_task_id=[1],
    run_in_background=True
)

# 等待完成
background-output(session_id=..., block=True)

Step 3: Phase B — 技术设计

publish-task(todos=[{
    "id": 2,
    "content": "生成技术设计文档",
    "blocked_by": [1],
    "target_files": [".codeartsdoer/specs/agent-blog/design.md"]
}])

background-task(
    agent_name="技术设计师",
    subagent_type="team-spec-design-agent",
    prompt="""...""",  # 详见第五节
    assign_task_id=[2],
    run_in_background=True
)

Step 4: Phase C — 任务拆解

publish-task(todos=[{
    "id": 3,
    "content": "生成实现任务列表",
    "blocked_by": [2],
    "target_files": [".codeartsdoer/specs/agent-blog/tasks.md"]
}])

background-task(
    agent_name="任务规划师",
    subagent_type="team-spec-task-agent",
    prompt="""...""",
    assign_task_id=[3],
    run_in_background=True
)

Step 5: Phase D — 并行开发(关键!)

# 同时启动前后端工程师
background-task(
    agent_name="后端工程师",
    subagent_type="coding-engineer",
    prompt="""...""",  # 包含完整的API规范和技术约束
    assign_task_id=[4],
    run_in_background=True  # 异步,不等待
)

background-task(
    agent_name="前端工程师",
    subagent_type="coding-engineer",
    prompt="""...""",  # 同一份API规范
    assign_task_id=[5],
    run_in_background=True  # 异步,不等待
)

# 等待两者都完成
wait(timeout=300)

⚠️ 关键:两位工程师的prompt中必须包含同一份API规范,否则集成阶段会大量返工。

Step 6: Phase D — 前后端联调

background-task(
    agent_name="集成工程师",
    subagent_type="coding-engineer",
    prompt="""
    你是集成工程师。前后端由不同工程师并行开发,请验证:
    1. 后端启动正常
    2. 前端启动正常
    3. API接口对接正确
    4. 修复所有集成问题
    """,
    assign_task_id=[6],
    run_in_background=True
)

Step 7: Phase E+F — 测试与审查(并行!)

# 测试和审查可以并行
background-task(
    agent_name="测试工程师",
    subagent_type="developer-test-generator",
    prompt="""...""",
    run_in_background=True
)

background-task(
    agent_name="代码审查员",
    subagent_type="team-code-reviewer",
    prompt="""...""",
    run_in_background=True
)

Step 8: 修复审查问题

background-task(
    agent_name="修复工程师",
    subagent_type="coding-engineer",
    prompt="""
    修复代码审查发现的11个问题:
    1. JWT密钥硬编码 → 启动时强制校验
    2. 速率限制绕过 → 添加trust proxy
    ...
    """,
    run_in_background=True
)

Step 9: Phase G — 功能验证

background-task(
    agent_name="验证工程师",
    subagent_type="team-result-verifier",
    prompt="""
    独立验证所有功能是否满足需求规格。
    给出 VERDICT: PASS / FAIL / PARTIAL
    """,
    run_in_background=True
)

12.3 启动与验证

# 安装依赖
npm install

# 启动后端
node --env-file=.env server/index.js

# 启动前端(另一个终端)
npm run dev

# 运行测试
npm test           # 后端 58 个测试
npx vitest run     # 前端 63 个测试

12.4 核心Prompt模板

以下是最关键的3个Prompt模板,可直接复用:

1. 需求工程师Prompt核心结构

你是需求规格工程师。
项目描述:[一句话描述]
核心功能:[功能列表]
技术约束:[约束列表]
你的任务:在 [目录] 下创建 spec.md,使用EARS格式编写,包含:
- 组件定位、领域术语、角色边界
- DFX约束(性能/安全/可用性/可维护性)
- 核心能力(每个功能用EARS格式:当...时,系统应...- 数据约束

2. 编码工程师Prompt核心结构

你是[前端/后端]编码工程师。
项目背景:[spec.md和design.md路径]
技术栈(必须严格遵守):[具体版本和约束]
你需要完成的任务:[按模块列出所有文件和功能]
关键设计要点:[API格式、状态码、认证方式等]
注意事项:[边界条件、兼容性要求等]
完成后请claim任务id=X,并确保 [启动命令] 可以正常运行。

3. 代码审查员Prompt核心结构

你是代码审查专家。
审查范围:[所有文件路径]
审查要点:
1. 安全性(SQL注入、XSSJWT、速率限制)
2. 代码质量(结构、命名、错误处理、日志)
3. 设计一致性(与设计文档对比)
4. 性能(查询效率、渲染性能)
5. 可维护性(职责清晰、依赖合理)
输出格式:严重问题/一般问题/改进建议,每项含文件路径、行号、描述、修复建议

附录:项目文件清单

agent-blog/
├── .codeartsdoer/specs/agent-blog/
│   ├── spec.md                 # 需求规格(597行)
│   ├── design.md               # 技术设计(1460行)
│   └── tasks.md                # 任务列表(27个子任务)
│
├── server/                     # 后端(24个文件)
│   ├── index.js                # Express入口
│   ├── config.js               # 配置管理
│   ├── database/               # 数据库层(2个文件)
│   ├── repositories/           # 数据访问层(4个文件)
│   ├── services/               # 业务逻辑层(3个文件)
│   ├── controllers/            # 控制器层(2个文件)
│   ├── routes/                 # 路由层(2个文件)
│   ├── middlewares/            # 中间件(4个文件)
│   ├── schedulers/             # AI审核调度(2个文件)
│   ├── utils/                  # 工具类(3个文件)
│   └── __tests__/              # 后端测试(3个测试套件 + 辅助)
│
├── src/                        # 前端(15个文件)
│   ├── main.js                 # 应用入口
│   ├── router/                 # SPA路由(1个文件)
│   ├── services/               # API服务层(3个文件)
│   ├── components/             # Web Components(8个文件)
│   ├── styles/                 # 全局样式(1个文件)
│   └── __tests__/              # 前端测试(4个测试文件)
│
├── docs/api.html               # API文档
├── VERIFICATION_REPORT.md      # 功能验证报告
├── package.json                # 项目配置
├── vite.config.js              # Vite配置
├── jest.config.js              # Jest配置
└── .env                        # 环境变量

📌 总结:多Agent协作开发的核心不是"让Agent写代码",而是"让正确的Agent在正确的时间做正确的事"。Spec-Driven Development流程确保了需求→设计→实现→测试→审查→验证的完整闭环,而任务列表和并行调度则最大化了团队效率。希望这个案例能帮助你构建自己的Agent团队!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。