用Claude+Temporal.io构建多Agent协作开发流水线

admin 2026-03-27 13:43:33 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章介绍使用Claude和Temporal.io构建多Agent协作开发流水线的工程实践,采用制品驱动模式实现PM、架构师、开发、测试、QA五个Agent角色协作,通过FastAPI、PostgreSQL、MinIO等技术栈实现流水线状态管理和制品存储。核心经验包括制品驱动比对话驱动更适合工程化场景,工作流引擎是Multi-Agent系统的基础设施。作者分析了LLM输出质量不稳定等局限并提出改进方向。 综合评分: 90 文章分类: AI安全,实战经验,安全建设,解决方案


cover_image

用 Claude + Temporal.io 构建多 Agent 协作开发流水线

原创

牧之 牧之

从黑客到保安

2026年3月25日 19:38 江苏

一次关于”让 AI 模拟完整开发团队”的工程实践

一、为什么要做这件事

软件开发是一个天然的流水线过程:需求分析 → 技术设计 → 编码实现 → 测试验证 → 验收交付。每个环节都有明确的输入、输出和职责边界。

当 LLM 的能力足够强,我自然开始想:能不能把这条流水线上的每个角色都替换成 AI Agent,让自然语言需求直接驱动整个开发过程?

这不只是个新奇想法。对我来说有几个实际的价值点:

  1. 验证需求的可行性:用 AI 快速出 PRD 和技术方案,暴露需求里的模糊点
  2. 加速原型开发:对于内部工具、脚本服务、API 原型,走一遍流水线比自己写快得多
  3. 理解 Multi-Agent 架构:真正把多 Agent 系统跑起来,才能理解它的瓶颈和边界

于是就有了这个项目:一个可以通过自然语言驱动、包含 PM / 架构师 / 开发 / 测试 / QA 五个 Agent 角色的协作流水线,每个阶段的产物(PRD、技术架构、代码文件、测试报告、验收结论)都实时可观测、持久化存储,验收不通过可以自动打回迭代。

二、核心思路:制品驱动的 Agent 协作

在动手之前,我思考了两种 Multi-Agent 的协作模式:

模式一:对话式(Chat-based)Agent 之间互相发消息,上下游通过聊天记录传递上下文。实现简单,但上下文膨胀快,长对话里信号噪音比下降严重。

模式二:制品驱动(Artifact-driven)每个 Agent 读取上一阶段的结构化输出(Markdown 文件),生成自己的输出,写入持久化存储。下游 Agent 只关心”制品”,不关心”对话历史”。

我选择了制品驱动模式,原因很简单:这和真实团队的协作方式完全一致。

真实的产品经理写完 PRD 就扔给架构师,架构师出完技术方案就扔给开发。他们之间传递的不是聊天记录,而是文档。AI Agent 也应该如此。

这带来了几个工程优势:

  1. 每个 Agent 的 Prompt 只需要包含”当前制品”,Token 消耗可控
  2. 制品天然可以版本化(v1, v2, v3…),支持迭代追踪
  3. 各 Agent 解耦,独立可测试

三、技术架构

整体架构

用户浏览器 (Next.js)      │      │  HTTP REST      ▼FastAPI 后端      │      ├── PostgreSQL (流水线状态 + 制品元数据)      ├── MinIO (制品文件存储,S3 兼容)      └── Temporal.io (工作流引擎)              │              ▼         Worker 进程              │    ┌─────────┼─────────┐    │         │         │  PM Agent  架构师   开发 Agent  (LLM)    Agent     (LLM)              │         测试 Agent              │         QA 验收 Agent

各个组件职责

| 组件 | 职责 | | — | — | | FastAPI | REST API、依赖注入、数据库/MinIO/Temporal 客户端管理 | | Temporal.io | 工作流编排、活动重试、状态持久化、故障恢复 | | Worker 进程 | 执行 Temporal Activity(每个 Agent 调用是一个 Activity) | | MinIO | 以 {pipeline_id}/{agent_type}/v{n}.md 路径存储每个阶段制品 | | PostgreSQL | Pipeline 表、AgentState 表、Artifact 表 | | Next.js 前端 | 流水线管理、实时状态展示、制品查看 |

技术选型的关键决策:为什么用 Temporal.io?

最初我考虑过直接用 asyncio 的 task chain 来串联 Agent。但这有个根本问题:无法应对 LLM 调用的长时间等待和随机失败。

Temporal.io 给了我:

  1. Activity 级别的重试:LLM 调用超时或 rate limit 自动重试,无需手写重试逻辑
  2. 工作流状态持久化:Worker 崩溃重启后,工作流从中断点继续
  3. 可观测性:Temporal Web UI 可以看到每个 Activity 的执行历史、重试记录、输入输出
  4. Workflow 确定性:Temporal 的事件重放机制要求 Workflow 代码是确定性的,这迫使我把 LLM 调用都封装到 Activity 里,架构更清晰

四、Agent 工作流程详解

流水线执行序列

create_pipeline (API)&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ▼[Temporal Workflow: PipelineWorkflow]&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ├─&nbsp;1.&nbsp;PM Agent Activity&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输入: 用户需求文本&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输出: PRD.md → MinIO + DB&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ├─&nbsp;2.&nbsp;架构师 Agent Activity&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输入: PRD.md 内容&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输出: architecture.md → MinIO + DB&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ├─&nbsp;3.&nbsp;开发 Agent Activity&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输入: PRD.md + architecture.md&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输出: 各代码文件 → MinIO + DB(每个文件一条 Artifact 记录)&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ├─&nbsp;4.&nbsp;测试 Agent Activity&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输入: 代码文件列表 + PRD.md&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输出: test_report.md → MinIO + DB&nbsp; &nbsp; &nbsp; │&nbsp; &nbsp; &nbsp; ├─&nbsp;5.&nbsp;QA 验收 Activity&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输入: PRD.md + test_report.md&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;输出: qa_verdict.md → MinIO + DB&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; ┌────┴────┐&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp;通过 &nbsp; &nbsp; &nbsp; &nbsp; 不通过&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp;COMPLETED &nbsp; &nbsp;iteration_count < max?&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 是 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;否&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;│&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;回到 PM &nbsp; &nbsp; &nbsp;FAILED&nbsp; &nbsp; &nbsp; │ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(新迭代开始)&nbsp; &nbsp; &nbsp; └─

五、用 OMC 来构建这个系统:Meta 视角

这个项目本身就是用 AI 工具开发的,这是一个很有意思的 Meta 视角。

oh-my-claudecode(OMC) 是 Claude Code 的多 Agent 编排插件。在本项目开发过程中,我大量使用了它的几个模式:

Autopilot 模式

/oh-my-claudecode:autopilot为 pipeline 删除功能添加后端 API,包括:- DELETE /api/pipelines/{id} 端点,仅允许 failed/completed 状态- 删除对应 MinIO 所有制品文件- 删除数据库记录(注意 FK 约束顺序)

Autopilot 会自动走完:需求分析 → 技术规划 → 并行实现 → QA 验证的完整循环,不需要逐步指导它。

Ralph 模式(自驱循环)

对于需要多轮修复的任务(比如 LLM 输出后处理),Ralph 模式会持续执行直到验证通过:

/oh-my-claudecode:ralph修复 developer_agent.py 中文件内容被 markdown 代码围栏污染的问题,验收标准:生成的 .py 文件不含&nbsp;``` 字符

Deep-interview → Ralplan → Autopilot 三段式流水线

对于复杂的功能需求,最高质量的路径是:

  1. /deep-interview:通过苏格拉底式提问澄清需求,输出低歧义度 Spec
  2. /ralplan:Planner + Architect + Critic 三方 Agent 共识,输出实现计划
  3. /autopilot:检测到 ralplan 计划直接跳过规划阶段,从执行开始

用 AI 来开发 AI 系统,最大的体会是:AI 工具能极大加速”已知模式”的实现(CRUD、API、组件),但在”未知领域”(比如如何设计 Prompt 防止过度工程化)仍然需要人来做决策。AI 是放大器,不是决策者。

六、全流程演示&&效果展示

1、安装oh-my-claudecode 插件,在Autopilot 模式下,告诉它你想要构建一个怎样的工作流

2、等他运行完成,运行本地项目

这个是生成的本地项目

执行命令make up && make migrate运行该项目。

访问http://localhost:3000

3、创建流水线

你可以创建一个流水线

这里描述清楚你的需求。创建好流水线

4、等待全流程完成

这里可以看到每个agent的工作状态,还有产出

七、应用场景发散

这个架构不只是代码生成流水线,稍加修改可以适配很多场景:

7.1 内容创作流水线

选题策划 Agent → 大纲撰写 Agent → 正文撰写 Agent→ 编辑校对 Agent → SEO 优化 Agent → 发布审核 Agent

技术文章、营销文案、产品说明书都可以走这套流程,每个阶段的产物(大纲、草稿、终稿)都版本化保存。

7.2 数据分析流水线

需求理解 Agent → 数据探索 Agent → 分析方案 Agent→ Python 分析脚本生成 Agent → 结论撰写 Agent → 可视化 Agent

用户用自然语言描述”分析上季度销售数据,找出下滑原因”,整条链路自动完成。

7.3 安全审计流水线

代码扫描 Agent → 漏洞分类 Agent → 风险评估 Agent→ 修复建议 Agent → 审计报告 Agent

每个 Agent 专注于安全的一个维度(OWASP Top 10 中的某几类),比单个 Agent 负责全部更准确。

7.4 法律/合规文档审查

文档解析 Agent → 条款提取 Agent → 风险识别 Agent→ 合规对比 Agent(对标法规)→ 修改建议 Agent → 审查报告 Agent

合同审查、隐私政策合规检查等场景,天然适合这种流水线模式。

7.5 产品需求到测试用例

PRD 解析 Agent → 功能点提取 Agent → 测试场景设计 Agent→ 测试用例生成 Agent → 边界条件补充 Agent → 测试计划 Agent

QA 团队可以直接拿到结构化的测试用例,而不需要从 PRD 手动拆解。

7.6 多语言本地化流水线

原文解析 Agent → 直译 Agent(多语言并行)→ 本地化润色 Agent(各语言独立)→ 术语一致性检查 Agent→ 回译验证 Agent → 格式化输出 Agent

支持同时输出 10 种语言,每种语言经过翻译 → 润色 → 验证三道关卡。

7.7 招聘筛选流水线

JD 解析 Agent → 简历解析 Agent → 岗位匹配 Agent→ 技能评估 Agent → 背景核实提示 Agent → 面试问题生成 Agent

处理大量简历时,标准化评估维度,减少人工初筛时间。

7.8 智能运维变更流水线

变更申请解析 Agent → 影响分析 Agent → 风险评估 Agent→ 变更方案生成 Agent → 回滚方案 Agent → 审批摘要 Agent

DevOps 场景下,将变更申请拆解成结构化风险评估,降低审批负担。

八、当前局限与演进方向

诚实地说,现在这个系统还有很多不完善的地方:

8.1 LLM 输出质量不稳定

当前最大的问题是 LLM 输出的可预测性。同样的 Prompt,不同调用的结果可能差异很大:

  1. 文件路径列表有时混入描述文字
  2. 代码文件有时包含不必要的 Markdown 格式
  3. 开发 Agent 偶尔会生成空文件或截断文件

改进方向:引入结构化输出(JSON Schema 约束)替代纯文本输出,用 Pydantic 模型验证 LLM 响应。

8.2 Agent 之间缺乏真正的”对话”

目前每个 Agent 只读取上一阶段的制品,没有澄清机制。如果 PRD 有歧义,开发 Agent 只能猜测,而不能问 PM Agent。

改进方向:在 Activity 内部增加”澄清循环”——如果 Agent 检测到输入不清晰,生成一批澄清问题,等待上游 Agent(或人工)回答后继续。

8.3 开发 Agent 生成的代码无法执行验证

测试 Agent 目前只是对着代码文本写测试报告,并没有真正执行代码。QA 通过的代码不代表能运行。

改进方向:集成代码执行沙箱(如 E2B、Docker exec),让测试 Agent 真正运行生成的代码,捕获运行时错误并反馈给开发 Agent。

8.4 成本控制

一条完整的流水线(5 个 Agent,每个调用 1-3 次 LLM)大约消耗 50,000-200,000 tokens。对于简单任务,这个成本偏高。

改进方向:

  1. 按任务复杂度动态选择模型(简单任务用 Haiku,复杂任务用 Opus)
  2. 引入缓存机制,相似需求复用上游制品

8.5 人工介入节点缺失

目前流水线是全自动的,但在现实中,PRD 写完后产品经理可能需要人工确认,技术方案写完后架构师可能需要人工审批。

改进方向:Temporal.io 支持 Signal 机制,可以在关键节点暂停 Workflow 等待人工输入,实现”人在环中”(Human-in-the-loop)。

九、总结

这个项目让我对 Multi-Agent 系统有了几个核心认识:

  1. 制品驱动比对话驱动更适合工程化场景文档比对话更稳定、更可版本化、更符合人类协作习惯。
  2. 工作流引擎是 Multi-Agent 系统的基础设施不要用裸 asyncio 串联 Agent,Temporal.io 这类引擎解决了重试、幂等、状态持久化这些系统性问题,让你专注于 Agent 本身的逻辑。
  3. Prompt 工程的本质是边界管理让 AI 做得好不难,让 AI 不做多余的事才难。最小化原则、与规模匹配的技术选型约束,比任何”让它做更多”的提示都重要。
  4. 用 AI 开发 AI 系统是可行的加速路径OMC 的 Autopilot 模式处理了这个项目 60% 以上的编码工作,包括所有样板代码、CRUD 实现、前端组件。剩下的 40% 是架构决策、调试和 Prompt 调优,这部分仍然需要人。
  5. 从小处开始,逐步扩展不要一开始就规划完美的系统。先让两个 Agent 跑起来,验证制品流转机制,再逐步加入更多角色和能力。复杂性是累积的,不是设计出来的。

Multi-Agent 协作系统还处于早期,很多最佳实践还在被探索。但方向是清晰的:AI 不会替代团队,但一个懂得协调 AI Agent 的人,生产力可以等同于一个小团队。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:从黑客到保安 牧之 牧之《用 Claude + Temporal.io 构建多 Agent 协作开发流水线》

评论:0   参与:  0