本文原文地址
逆天的架构: 用 Harness+Langgraph+A2A 写一个 Agent Team,实现一支硅基团队。程序员 开启 当 10个Agent的boss 之路
尼恩说在前面
在45岁老架构师尼恩的读者交流群(50+人)里,最近不少小伙伴拿到了阿里、滴滴、极兔、有赞、希音、百度、字节、网易、美团这些一线大厂的面试入场券,恭喜各位!
前两天就有个小伙伴面腾讯, 问到 “ 听说过Harness Agent 吗?你们怎么实现 Harness Agent 的? ”的场景题 ,小伙伴没有一点概念,导致面试挂了。
小伙伴 没有看过系统化的 答案,回答也不全面 ,so, 面试官不满意 , 面试挂了。
小伙伴找尼恩复盘, 求助尼恩。
通过这个 文章, 这里 尼恩给大家做一下 系统化、体系化的梳理,写一个系列的文章组成 尼恩编著 《Harness 架构与源码 学习圣经》 深入剖析 Harness AI 平台级 架构的 架构思维与 核心源码,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”。
同时,也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典PDF》V176版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。
尼恩编著 《Harness 架构与源码 学习圣经》
第一章: 什么是 Harness架构?2026年AI核心范式解析 : Harness架构与Agent工程化
具体文章: 54k+Star 爆火!AI 框架 新王者 Harness Agent 来了!尼恩 来一次Harness穿透式解读
第二章: Harness架构 与 LangChain、LangGraph 三者联动 的底层逻辑
具体文章: Harness架构 与 LangChain、LangGraph 三者联动 的底层逻辑
第三章: DeerFlow 源码 14层Middleware 源码解析 ,又一个 “洋葱责任链模式” 架构思维 的 经典案例
具体文章: DeerFlow 源码 14层Middleware 源码解析 ,又一个 “洋葱责任链模式” 架构思维 的 经典案例
第四章: LangChain 超底层 四大设计模式 Design Patterns ,架构师 的 必备 内功,毒打面试官
具体文章: LangChain 超底层 四大设计模式 Design Patterns ,架构师 的 必备 内功,毒打面试官
第五章:Harness宏观架构:基于 PPAF 思维 & REPL 思维,完成 Lead-Agent和Sub-Agent深度拆解
具体文章: 第五章:Harness宏观架构:基于 PPAF 思维 & REPL 思维,完成 Lead-Agent和Sub-Agent深度拆解
第六章:Harness宏观架构:DeerFlow 2.0 断点续跑机制 架构设计与实现
具体文章: Harness宏观架构:DeerFlow 2.0 断点续跑机制 架构设计与实现
第七章: Harness 平台实战: 用 DeerFlow 构建 一个企业自己的 Manus 平台( 企业长任务智能体平台)
具体文章: Harness 平台实战: 用 DeerFlow 构建 一个企业自己的 Manus 平台( 企业长任务智能体平台)
第八章: Harness 超牛逼的 三级记忆架构 :字节 Deerflow 上下文+历史分层+事实列表 ! 落地价值 逆天!!
具体文章: Harness 超牛逼的 三级记忆架构 上下文+历史分层+事实列表 ! 落地价值 逆天!!
第九章: Harness 顶级架构:DeerFlow 2.0 沙盒 Sandbox 架构设计、Sandbox 源码深度解析(史上最深 、价值 逆天)
具体文章: Harness 顶级架构:DeerFlow 2.0 沙盒 Sandbox 架构设计、Sandbox 源码深度解析(史上最深 、价值 逆天)
第10章: 顶奢RAG架构之, 必不可少的 RAG评估体系:7大核心指标落地优化,让RAG从Demo走向生产
【RAG评估、RAG度量指标】顶奢RAG架构之, 必不可少的 RAG评估体系:7大核心指标落地优化,让RAG从Demo走向生产 full - 技术自由圈
第11章:Harness架构 :字节 Deerflow 基于LangGraph的生产级Super Agent驾驭层实现 / DeerFlow 2.0 的 lead_agent 任务总调度 架构设计与实现解析
Harness架构 : DeerFlow 2.0 的 lead_agent 任务总调度 架构设计与实现解析
第十二章: Harness 具体应用:AI编程王炸组合:顶级三剑客 OpenSpec 定方向,Superpowers定纪律,Harness定协同
顶级三剑客 OpenSpec 定方向,Superpowers定纪律,Harness定协同
第十三章: Harness 架构哲学和思维:架构思维、架构哲学、设计模式 大拆解、大总结、大提炼
Harness 架构哲学和思维:架构思维、架构哲学、设计模式 大拆解、大总结、大提炼
本文
第十四章: 架构哲学和思维: Harness /ReAct /PlanExec /Reflect /混合范式 的 区别
架构哲学和思维: Harness /ReAct /PlanExec /Reflect /混合范式 的 区别
第十五章: Harness 底层知识: MCP与FC的10大差别?Harness 怎么 用MCP与FC?
Harness 底层知识: MCP与FC的10大差别?Harness 怎么 用MCP与FC?
第16章: 架构天花板 : 字节 Deerflow 基于LangGraph的生产级 Harness 执行层 Sub-Agent 深度拆解
架构天花板 :基于LangGraph的生产级 Harness 执行层 Sub-Agent 深度拆解
第17章: Harness SDK 架构 :DeepAgent 基于LangGraph的生产级Super Agent驾驭层实现
本文
第17章: Harness SDK 架构 :DeepAgent 基于LangGraph的生产级Super Agent驾驭层实现
第18章:DeepAgent : 基于LangGraph的 Harness 执行层 生产级 子智能体 Sub-Agent 深度拆解
第18章:DeepAgent : 基于LangGraph的 Harness 执行层 生产级 子智能体 Sub-Agent 深度拆解
第19章:深入解析DeepAgents的Middleware管道:设计一个Harness 护栏完成Agent全生命周期的治理
本文
第19章:Harness架构 核心二: XXX
具体文章: 尼恩还在写,后续发布
估计有 10章以上,具体请关注技术自由圈。

Adversarial Agent Team 对抗性多智能体团队 简介
单智能体 核心痛点是单 Agent 既当选手又当裁判、长任务跑偏中途停摆、无制衡易幻觉、IM 同步阻塞;
随着大语言模型(LLM)在复杂任务场景中的深度应用,单智能体 已无法满足企业级任务对可靠性、可扩展性和质量可控性的核心需求。
这时候,对抗式Adversarial Agent Team 出现了。
“对抗式多智能体团队”就是通过制度化的内部竞争,来换取整体产出的高质量与高可靠性,这也是未来 AI 从“玩具”走向“工业化应用”的关键路径之一。
Adversarial Agent Team 核心 是角色隔离 + 对抗质量门禁 + Team Engine 状态机调度 + Agent 通信。
Adversarial Agent Team 核心理念Leader-Worker-Verifier 。
想象一下传统的单体 AI,它就像一个独自工作的员工,容易产生幻觉、犯错且自己很难发现。而“对抗式多智能体团队”则模拟了人类社会的协作模式:
- 多角色分工:团队里不再只有一个“全能选手”,而是拆分为 Leader(规划者)、Worker/Developer(执行者)、Verifier/Critic(审核者/挑刺者)等不同角色。
- 引入对抗机制:这是最核心的差异。团队中专门设有“唱反调”的角色(比如审核员或红队攻击者)。他们的任务不是配合,而是找茬——检查执行者的输出有没有漏洞、逻辑是否自洽、代码能否跑通。
- 闭环迭代:如果“挑刺者”发现了问题,流程会强制打回给“执行者”重修,直到双方达成一致或达到质量标准。
本文以 Adversarial 多智能体团队 核心理念为蓝本,用LangGraph 状态机 + 图编排完整 实现一个 coding Agent Team 的架构、协作流程、对抗机制,
本文最后 用 LangGraph 原生能力 + A2A邦联 落地 一个代码生成的 Adversarial Agent Team 对抗性多智能体团队, 完整设计方案, 包括:任务拆分、并行执行、对抗校验、失败重试、阶段依赖、IM 异步响应、记忆沉淀、人类介入。
下面全部用 LangGraph 体系落地实现。

二、单 Agent 原生痛点

(1) 自审自判无制衡
单 Agent 自己产出、自己自检,校验对象仍是自身生成内容,偏差会持续累积,长任务越做越偏离需求,没有外部独立角色纠错。
(2) 上下文焦虑、中途无故停摆
模型无法自主判断任务终止节点,7 件事只做完 3 件就暂停等用户确认,需要人类反复指令推进,无法全自动跑完完整链路。
(3) 长任务能力退化
上下文膨胀后记忆丢失、风格漂移、研究变营销、格式漏项,单 Agent 无专业分工,无法在垂直领域沉淀经验。
(4) IM 场景同步阻塞
复杂长任务和对话上下文绑定,只能埋头执行全程沉默,用户无秒级反馈、看不到进度,极易产生焦虑;中途无法追加新需求、无法动态加派子任务。
(5) 传统 SubAgent 只是单次函数调用普通子 Agent 是call→return
一次性收发,无多轮对话、无状态留存、无法实时上报阻塞、不能失败重试复用会话,不是真正的团队协作。
三、 Adversarial Agent Team 对抗性多智能体团队 核心架构

1. Adversarial Agent Team 三大核心角色( Leader/Worker/Verifier)
Leader 总控智能体
接收用户原始需求、拆解任务阶段与 Task 依赖关系、规划 Batch 并发策略、汇总所有子任务结果、关键节点决策放行、高风险场景触发人类介入,不插手单个子任务细节,只把控全局流程与验收。
Worker 执行智能体
按专业分工拆分:调研 Agent、文档写作 Agent、代码开发 Agent、PPT 排版 Agent、数据处理 Agent;
独立上下文、独立工具、独立记忆、独立 Skill,只负责产出交付物,追求快速完成执行。
Verifier 核验智能体
独立于 Worker 的第三方质量门禁,和 Worker 形成强对抗关系:
Worker 完成产出自动触发 Verifier 校验,校验不通过由 LangGraph 状态机自动打回 Worker 重做,多轮迭代直到达标;
负责事实溯源、来源核验、格式检查、逻辑一致性、安全风险审查。
2.基于 LangGraph 实现 Adversarial Team Engine
用 LangGraph StateGraph + 自定义全局状态 + 持久化 Session 实现Adversarial Agent Team 全部能力:
(1) 任务分 Batch 编排,同 Batch 内 Task并行执行,Batch 间按依赖串行;
(2) 内置producing → verifying → done标准状态流转;
(3) Verifier 校验失败自动路由回 Worker 重试,设置最大迭代上限防死循环;
(4) 每个 Task 独立 Session,上下文隔离不互相污染,节省窗口资源;
(5) 全程状态可回溯、可暂停、可恢复、可审计,符合 Harness 工程化思想;
(6) 支持中途追加指令、动态增派 Worker、实时进度汇报。
四、LangGraph 对抗机制核心设计( Worker↔Verifier 对抗)

1. 对抗底层逻辑
Worker 只想尽快完成产出结束流程,Verifier 专职挑错、卡质量、查漏洞;一方结束自动触发另一方启动,类似企业研发与 QA 制衡,不用人类逐行审核。
- Worker:产出内容 / 代码 / 报告 / 调研数据
- Verifier:核查来源真实性、逻辑矛盾、格式规范、引用合规、安全漏洞、业务适配性
- 流转规则:Worker 完成 → 进入 Verifier 校验 → 校验通过进入归档;校验不通过 → LangGraph 自动回传给 Worker 修改,循环迭代。
2. 四大场景 的 对抗智能体 Adversarial Team Engine
【1】信息调研场景 Info Harness: Verifier 核查 URL 来源权威性、时效性、正反证据交叉验证,杜绝幻觉和片面结论;
【2】代码工程 Coding Harness: 拆分 Developer/Tester/Reviewer,Tester 跑自动化测试、Reviewer 查架构兼容性、敏感日志、权限越界;
【3】办公文档流水线 Document Harness: Planner 定结构→Writer 写正文→Formatter 排版式→Evaluator 独立验收格式与内容完整性;
【4】合同 / 报告正式文稿 Reports Harness: 多轮对抗修正措辞、条款逻辑、排版规范,直到满足交付标准。
3. 对抗成本与 ROI 控制
- 限制最大重试轮次、Token 消耗上限、并发数量,避免无意义循环耗损资源;
- 简单任务(改错别字、替换常量)直接走单 Agent 链路,不启动 Team;复杂长任务、高风险任务才启用对抗团队,平衡效率与质量。
五、LangGraph 多 Agent 通信设计:Agent 与人类同权

(1) 统一接口抽象将用户可操作的prompt、spawn、abort、kill、summarize、fork会话
全部封装为 LangGraph 可调用工具,用户、普通 Agent、Team Engine 拥有完全对等调用权限。
(2) 三种信息共享机制
- 单 Agent 私有记忆:沉淀本次任务踩坑经验,后续同类型任务自动复用;
- Agent 间 CLI 直连通信:支持运行中互相喊话、打断、同步进度;
- 共享白板文件:大体积交接资料以文件路径 + 摘要传递,不塞入上下文,降低交接 Token 成本。
(3) 权限边界约束
平权不代表无限制,LangGraph 在控制面做权限拦截、操作审计、日志留存,高风险操作必须人工签字确认,守住责任与安全边界。
六、四大核心业务场景 LangGraph 落地实现

场景一:IM 异步秒级响应(解决单 Agent 失踪问题)
(1) 用户在 IM 发需求,Leader 立即秒级回执,告知任务已接收、拆分规划中;
(2) LangGraph 后台异步调度多 Worker 并行执行,不占用对话主上下文;
(3) 用户中途可随时追加新需求,Leader 动态新增 Task、派发新 Worker,不中断原有任务;
【4】关键节点自动推送进度: 任务开始、阻塞卡点、核验失败、全部完成,无需用户主动查询。
场景二:Coding Harness 代码工程全流程
【1】Leader 判断是否启用团队: 简单改量走单 Agent,跨文件开发、多方案比对启动 Team;
【2】角色分工: Developer 实现代码→Tester 跑测试用例→Reviewer 做代码审查(可拆分普通 / 安全 / 业务评审);
【3】LangGraph 编排流程: 修改→自测→自动化 Lint/Build→评审→问题打回修复→合并归档;
【4】基础能力支撑: 支持沙箱执行、Diff 记录、失败回放、任务分支管理,完全贴合 Harness 全链路开发思想。
场景三:并行信息检索与研究
(1) LangGraph 同时派发多路 Worker,从不同维度、不同角度并行搜集信息;
(2) 每路配置独立 Verifier,核验来源、去重、辨伪、交叉三角验证;
(3) 最后由 Synthesizer 汇总多路结果,再经过总 Verifier 二次兜底校验,保证事实一致、引用规范。
场景四:办公文档流水线写作
【1】LangGraph 分阶段编排: 结构规划→正文撰写→格式排版→内容评估→导出 PDF/Word;
(2) 每阶段产出中间件,单步失败仅局部重试,不全局重写;
(3) 把一次性文本生成,变成类似 CI/CD 的流水线构建 + 多轮核验,实现从 “能写” 到 “可正式交付”。
七、LangGraph 实现多 Agent 的工程难点与解法

1. 三大隐性成本治理
- 交接成本:用文件 + 白板做慢通信,不把大段资料塞入 Agent 上下文;
- 共享成本:按需加载共享信息,不全局广播冗余内容,节省每轮 Token 消耗;
- 聚合成本:Leader 专职做多 Worker 结果归一合并,统一风格、统一引用、消除矛盾。
2. 避免无意义多 Agent 并发
无结构的多 Agent 并发 只是更贵的群聊,准确率不升反降。
LangGraph 通过明确图结构、依赖关系、停止条件、验收标准,把多 Agent 从 “闲聊” 变成可管控、可验证、可重试的生产运行时。
3. 多 Agent 是 Runtime 而非 Prompt 编排
真正的多 Agent 不是写 Prompt 角色扮演,而是LangGraph 状态机、会话管理、消息调度、权限控制、状态持久化的复杂软件工程;
重心从 “写提示词” 转向 “维护控制面与运行时规则”。
八、 LangGraph Agent Team 适用边界与长期价值

(1) 适合启用 LangGraph Agent Team
长周期、高严谨度、多步骤、需事实核验、风险高、经验可复用的复杂任务。
(2) 不适合启用
短句修改、简单查询、常量替换等低风险简单任务,单 Agent 效率更高、成本更低。
(3) 长期复利价值
每次团队协作的经验沉淀为 Memory 与 Skill,每个垂直 Agent 越用越专业;LangGraph 持久化会话与记忆体系,让 AI 从一次性工具变成长期协作的数字员工团队,人类只做顶层决策,执行与落地全部交给 Agent Team。
九: 实操 LangGraph Coding Harness 完整代码

基于LangGraph 方案架构,实现Coding Harness代码工程多智能体流水线,严格对齐Leader→Developer→Tester→Reviewer→Verifier的对抗闭环设计,支持失败自动重试、状态机流转,是企业级可落地的代码开发多智能体解决方案。
实现核心能力包括:Leader任务规划、Developer代码实现、Tester测试用例生成、Reviewer代码评审、Verifier质量门禁、自动重试、状态追溯与工程化审计。
基于 LangGraph 的 Coding Harness 完整代码实现:
Leader → Developer → Tester → Reviewer → Verifier 对抗闭环 + 失败自动重试 + 状态机流转。
下面是一个 工程多智能体流水线 核心代码。
核心代码:LangGraph 实现 Coding Harness(对抗式多 Agent)
import json
from typing import TypedDict, Annotated, List, Optional, Dict
from langchain_core.messages import HumanMessage, AIMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from langgraph.graph.message import add_messages
# ======================
# 1. 初始化 LLM(替换成你的模型)
# ======================
llm = ChatOpenAI(model="gpt-4o", temperature=0.1)
# ======================
# 2. 全局状态(LangGraph 核心)
# ======================
class CodeState(TypedDict):
# 输入
user_request: str
# 任务规划
task_plan: str
# 代码产出
code: Optional[str]
# 测试结果
test_result: Optional[str]
# 评审结果
review_result: Optional[str]
# 最终校验(对抗核心)
verifier_result: Optional[str]
# 重试次数
retry_count: int
max_retry: int
# 最终输出
final_output: Optional[str]
# 消息日志
messages: Annotated[List, add_messages]
# ======================
# 3. 角色 Agent 定义
# ======================
# ----------------------
# Agent 1:Leader 任务规划
# ----------------------
def leader_agent(state: CodeState):
prompt = ChatPromptTemplate.from_messages([
("system", "你是Leader,负责拆解代码需求,生成开发计划。只输出计划,不写代码。"),
("user", "需求:{user_request}")
])
chain = prompt | llm
plan = chain.invoke({"user_request": state["user_request"]})
return {"task_plan": plan.content, "messages": [plan]}
# ----------------------
# Agent 2:Developer 写代码
# ----------------------
def developer_agent(state: CodeState):
prompt = ChatPromptTemplate.from_messages([
("system", "你是专业开发者,根据计划生成可运行、干净、规范的代码。只输出代码。"),
("user", "计划:{task_plan}\n上一轮校验意见:{verifier_result}")
])
chain = prompt | llm
code = chain.invoke({
"task_plan": state["task_plan"],
"verifier_result": state.get("verifier_result", "无")
})
return {"code": code.content, "messages": [code]}
# ----------------------
# Agent 3:Tester 写单元测试
# ----------------------
def tester_agent(state: CodeState):
prompt = ChatPromptTemplate.from_messages([
("system", "你是测试工程师,针对代码生成可运行的测试用例。检查是否能运行、是否有bug。"),
("user", "代码:{code}")
])
chain = prompt | llm
test_result = chain.invoke({"code": state["code"]})
return {"test_result": test_result.content, "messages": [test_result]}
# ----------------------
# Agent 4:Reviewer 代码评审
# ----------------------
def reviewer_agent(state: CodeState):
prompt = ChatPromptTemplate.from_messages([
("system", "你是资深架构师,审查代码规范、安全、可读性、架构合理性。给出评审意见。"),
("user", "代码:{code}\n测试结果:{test_result}")
])
chain = prompt | llm
review = chain.invoke({
"code": state["code"],
"test_result": state["test_result"]
})
return {"review_result": review.content, "messages": [review]}
# ----------------------
# Agent 5:Verifier 对抗校验(核心质量门禁)
# ----------------------
def verifier_agent(state: CodeState):
prompt = ChatPromptTemplate.from_messages([
("system", "你是严格的质量门禁,负责判断代码是否可上线。只返回JSON:{\"pass\": true/false, \"reason\": \"...\"}"),
("user", "代码:{code}\n测试:{test_result}\n评审:{review_result}")
])
chain = prompt | llm
verify_result = chain.invoke({
"code": state["code"],
"test_result": state["test_result"],
"review_result": state["review_result"]
})
# 解析校验结果
try:
result = json.loads(verify_result.content)
except:
result = {"pass": False, "reason": "校验格式错误,打回重做"}
return {"verifier_result": result["reason"], "messages": [verify_result]}
# ======================
# 4. 路由决策:校验通过结束 / 不通过重试
# ======================
def verify_router(state: CodeState):
if state["retry_count"] >= state["max_retry"]:
return "exceed_retry"
try:
# 重新解析判断是否通过
messages = state["messages"]
for msg in reversed(messages):
if "verifier" in msg.content.lower() or "pass" in msg.content:
result = json.loads(msg.content)
if result["pass"]:
return "pass"
except:
pass
# 不通过 → 增加重试 → 返回 developer
return "retry"
def increment_retry(state: CodeState):
return {"retry_count": state["retry_count"] + 1}
# ======================
# 5. 最终汇总
# ======================
def final_agent(state: CodeState):
output = f"""
✅ 代码开发完成
📋 需求:{state['user_request']}
📌 开发计划:{state['task_plan']}
💻 最终代码:
{state['code']}
🧪 测试结果:{state['test_result']}
🔍 评审结果:{state['review_result']}
✅ 校验结果:{state['verifier_result']}
"""
return {"final_output": output}
# ======================
# 6. 构建 LangGraph 流程图
# ======================
workflow = StateGraph(CodeState)
# 添加节点
workflow.add_node("leader", leader_agent)
workflow.add_node("developer", developer_agent)
workflow.add_node("tester", tester_agent)
workflow.add_node("reviewer", reviewer_agent)
workflow.add_node("verifier", verifier_agent)
workflow.add_node("increment_retry", increment_retry)
workflow.add_node("final", final_agent)
# 构建流程
workflow.set_entry_point("leader")
workflow.add_edge("leader", "developer")
workflow.add_edge("developer", "tester")
workflow.add_edge("tester", "reviewer")
workflow.add_edge("reviewer", "verifier")
# 条件分支
workflow.add_conditional_edges(
"verifier",
verify_router,
{
"pass": "final",
"retry": "increment_retry",
"exceed_retry": "final"
}
)
workflow.add_edge("increment_retry", "developer")
workflow.add_edge("final", END)
# 编译图
app = workflow.compile()
# ======================
# 7. 运行示例
# ======================
if __name__ == "__main__":
inputs = {
"user_request": "写一个Python函数,计算斐波那契数列,带输入校验、注释、类型提示",
"max_retry": 2,
"retry_count": 0,
"messages": []
}
# 执行
for output in app.stream(inputs):
for key, value in output.items():
print(f"\n====== [{key.upper()}] 输出 ======")
if "final_output" in value:
print(value["final_output"])
elif "code" in value and value["code"]:
print(value["code"])
else:
print(value)
代码核心能力说明
(1) Leader总控能力:仅负责任务拆解与规划,不参与具体代码开发,确保全局视角;
(2) Developer专业执行:生成规范、可运行的代码,支持接收校验反馈进行整改;
(3) Tester测试保障:生成全面的测试用例,排查代码Bug与运行异常;
(4) Reviewer安全评审:覆盖代码规范、安全风险,给出专业评审意见;
(5) Verifier对抗门禁:全维度校验,不通过自动打回,最大重试防死循环;
(6) 状态机流转:实现“规划→开发→测试→评审→校验→汇总”的标准化流转,支持失败重试;
(7) 工程化可观测:全程消息日志可追溯,支持任务暂停、恢复与审计;
(8) 高可扩展性:各Agent独立定义,可根据企业需求新增角色(如安全Agent)、扩展校验规则。
实现的核心能力
(1) Leader 总控:拆解任务、不写代码
(2) Developer 执行:专业写代码
(3) Tester 测试:自动生成测试用例
(4) Reviewer 评审:规范、安全、架构审查
(5) Verifier 对抗门禁:
- 强制校验: 不通过自动打回 Developer
- 最大重试防死循环
(6) 状态机流转
- producing → verifying → done
- 失败自动重试
- 上下文隔离
(7) Runtime 工程化
- 可回溯
- 可重试
- 可审计
- 可中断
十: 联邦A2A编排 与LangGraph 去实现 coding Agent Team

Google于2025年4月发布的A2A(Agent-to-Agent)开放协议为多智能体系统提供了标准通信框架。
该协议定义了三层传输绑定(JSON-RPC 2.0、gRPC、HTTP+JSON),支持Server-Sent Events流式传输和webhooks异步推送
Orchestrator-Worker和A2A模式不是互斥的,而是嵌套的。
通常的设计是:Orchestrator负责任务分发,采用Orchestrator-Worker模式;Worker之间在执行过程中用A2A做状态同步和信息交换
采用分层联邦架构:Global Orchestrator负责跨部门协调与战略决策,各团队Leader管理域内智能体。
这种架构既保留了中心调度的可控性,又释放了智能体之间的灵活性
针对大型企业“多部门、多Agent服务分布式部署”的场景,基于LangGraph主调度器,实现联邦A2A(Agent-to-Agent)编排,将每个角色Agent部署为独立服务,通过LangGraph实现跨服务调度与协作,构建分布式多智能体团队,核心架构如下:
用户 → LangGraph主调度器 → [A2A Agent 1, A2A Agent 2, ...]
用户 →LangGraph主调度器→ Leader(A2A) → Developer(A2A) → Tester(A2A)
"""
方案2:联邦A2A编排
每个角色都是独立的A2A服务,由LangGraph调度
"""
from typing import Dict, List, Any, AsyncIterator
from dataclasses import dataclass
from langgraph.graph import StateGraph, END
import aiohttp
import asyncio
from enum import Enum
# ========== 1. 联邦网络定义 ==========
class AgentType(Enum):
LEADER = "leader"
DEVELOPER = "developer"
TESTER = "tester"
REVIEWER = "reviewer"
VERIFIER = "verifier"
@dataclass
class A2AAgent:
"""A2A联邦成员"""
agent_id: str
agent_type: AgentType
endpoint: str
capabilities: List[str]
async def invoke(self, task: Dict) -> Dict:
"""调用A2A Agent"""
async with aiohttp.ClientSession() as session:
async with session.post(
f"{self.endpoint}/tasks",
json=task,
timeout=aiohttp.ClientTimeout(total=30)
) as response:
return await response.json()
class A2AFederation:
"""A2A联邦网络"""
def __init__(self):
self.agents: Dict[str, A2AAgent] = {}
async def discover_agents(self):
"""发现A2A网络中的Agent"""
# 从服务注册中心发现Agent
registry_url = "http://agent-registry:8500"
async with aiohttp.ClientSession() as session:
async with session.get(f"{registry_url}/agents") as resp:
agents_data = await resp.json()
for agent_data in agents_data:
agent = A2AAgent(
agent_id=agent_data["id"],
agent_type=AgentType(agent_data["type"]),
endpoint=agent_data["endpoint"],
capabilities=agent_data["capabilities"]
)
self.agents[agent.agent_id] = agent
async def call_agent(self, agent_type: AgentType, task: Dict) -> Dict:
"""调用特定类型的Agent"""
candidates = [
agent for agent in self.agents.values()
if agent.agent_type == agent_type
]
if not candidates:
raise ValueError(f"No {agent_type} agent available")
# 简单的负载均衡:选择第一个
agent = candidates[0]
return await agent.invoke(task)
# ========== 2. LangGraph 联邦调度器 ==========
class FederationState(TypedDict):
task: str
stage: str
leader_plan: Optional[str]
developer_code: Optional[str]
tester_results: Optional[List[Dict]]
reviewer_comments: Optional[List[Dict]]
verifier_decision: Optional[Dict]
retry_count: int
current_agent: Optional[str]
class FederationOrchestrator:
"""联邦调度器"""
def __init__(self):
self.federation = A2AFederation()
self.workflow = self._create_orchestration_workflow()
async def initialize(self):
"""初始化联邦网络"""
await self.federation.discover_agents()
def _create_orchestration_workflow(self):
"""创建联邦工作流"""
workflow = StateGraph(FederationState)
# 添加节点
workflow.add_node("call_leader", self._call_leader_agent)
workflow.add_node("call_developer", self._call_developer_agent)
workflow.add_node("call_tester", self._call_tester_agent)
workflow.add_node("call_reviewer", self._call_reviewer_agent)
workflow.add_node("call_verifier", self._call_verifier_agent)
workflow.add_node("handle_retry", self._handle_retry)
# 设置流程
workflow.set_entry_point("call_leader")
workflow.add_edge("call_leader", "call_developer")
workflow.add_edge("call_developer", "call_tester")
workflow.add_edge("call_tester", "call_reviewer")
workflow.add_edge("call_reviewer", "call_verifier")
# 条件路由
def verify_router(state: FederationState) -> str:
decision = state.get("verifier_decision", {})
if decision.get("approved", False):
return "end"
elif state.get("retry_count", 0) < 3:
return "retry"
return "fail"
workflow.add_conditional_edges(
"call_verifier",
verify_router,
{
"end": END,
"retry": "handle_retry",
"fail": END
}
)
workflow.add_edge("handle_retry", "call_developer")
return workflow.compile()
async def _call_leader_agent(self, state: FederationState):
"""调用Leader Agent"""
task = {
"task": state["task"],
"type": "planning"
}
result = await self.federation.call_agent(
AgentType.LEADER, task
)
state["leader_plan"] = result.get("plan")
return state
async def _call_developer_agent(self, state: FederationState):
"""调用Developer Agent"""
feedback = state.get("verifier_decision", {}).get("feedback", "")
task = {
"plan": state["leader_plan"],
"requirements": state["task"],
"feedback": feedback
}
result = await self.federation.call_agent(
AgentType.DEVELOPER, task
)
state["developer_code"] = result.get("code")
return state
async def _call_tester_agent(self, state: FederationState):
"""调用Tester Agent"""
task = {
"code": state["developer_code"],
"test_type": "unit"
}
result = await self.federation.call_agent(
AgentType.TESTER, task
)
state["tester_results"] = result.get("results", [])
return state
async def _call_reviewer_agent(self, state: FederationState):
"""调用Reviewer Agent"""
task = {
"code": state["developer_code"],
"test_results": state["tester_results"]
}
result = await self.federation.call_agent(
AgentType.REVIEWER, task
)
state["reviewer_comments"] = result.get("comments", [])
return state
async def _call_verifier_agent(self, state: FederationState):
"""调用Verifier Agent"""
task = {
"code": state["developer_code"],
"test_results": state["tester_results"],
"review_comments": state["reviewer_comments"]
}
result = await self.federation.call_agent(
AgentType.VERIFIER, task
)
state["verifier_decision"] = result
return state
async def _handle_retry(self, state: FederationState):
"""处理重试"""
state["retry_count"] = state.get("retry_count", 0) + 1
return state
# ========== 3. 主程序 ==========
async def main():
"""运行联邦编排"""
orchestrator = FederationOrchestrator()
await orchestrator.initialize()
task = "编写一个Python函数,计算斐波那契数列"
state = {
"task": task,
"stage": "pending",
"retry_count": 0
}
# 执行工作流
async for update in orchestrator.workflow.astream(state):
print(f"阶段: {update.get('stage')}")
if update.get("developer_code"):
print(f"生成的代码: {update['developer_code'][:100]}...")
十: coding Agent Team 与 Harness 架构
这套 “LangGraph + 联邦 A2A+Leader-Worker-Verifier” 多智能体架构,本身就是一种典型的 Harness 架构;LangGraph 是 Harness 里的 “编排引擎” 部分,而不是和 Harness 对立或并列的东西。
下面拆开讲清楚关系、定位、对应结构。
1)上面的 coding Agent Team 的架构要点
核心:LangGraph 状态机 + 图编排
模式:
- Orchestrator-Worker(主从分发)
- A2A(Agent-to-Agent 对等通信)
- Leader → Developer → Tester(多层角色链)
- 联邦分层:Global Orchestrator + 域内 Leader
- 能力:状态管理、分支循环、持久化、人机介入、对抗式质量门禁(Worker vs Verifier)、记忆 / 技能沉淀、工程化调度
2)Harness 架构(驾驭层)
- 公式:Agent = 大模型 + Harness
- Harness 不是模型,也不是一种 “思考算法”,而是把 LLM 变成稳定、可执行、可治理的 Agent 的运行时控制系统。
- 核心职责:状态、编排、工具、记忆、安全、治理、质量门禁、异常恢复。
- 一句话:模型负责 “想”,Harness 负责 “做、稳、可控、可追溯”。
4)LangGraph 在 Harness 里的位置
Harness 一般分三层:
(1) 模型层:LLM(GPT、Claude 等)—— 只推理,无状态
(2) Harness 运行时层(核心):
- 编排引擎(Workflow/Graph Engine)
- 状态管理、记忆、工具调用、权限、钩子、质量校验
(3) 执行环境层:文件、Shell、API、数据库等
对应关系:
- 上面的 LangGraph = Harness 的编排引擎 + 状态管理子系统
- 上面的 联邦 A2A、Leader-Worker-Verifier、对抗式质量门禁、持久化会话、人工介入钩子 → 全都是 Harness 层的能力。
所以:
- LangGraph 是 Harness 的一个具体实现(编排 + 状态)
- 上面的这套架构 = 基于 LangGraph 构建的企业级 Harness 架构
不是 “LangGraph vs Harness”,而是:
Harness 是整体架构思想,LangGraph 是该架构里的核心编排组件。
5)上面架构 vs 典型 Harness 结构对照
上面架构
用户 → LangGraph主调度器 → [A2A Agent 1, A2A Agent 2, ...]
用户 → LangGraph主调度器 → Leader(A2A) → Developer(A2A) → Tester(A2A)
映射到 Harness
- LangGraph 主调度器 → Harness 的图编排引擎 + 状态中心
- Leader/Developer/Tester → Harness 管理下的角色化 Agent 节点
- A2A 通信(JSON-RPC/gRPC/HTTP+SSE/webhook) → Harness 的Agent 间通信总线 + 异步事件治理
- 对抗式质量门禁(Worker vs Verifier) → Harness 的输出治理 / 校验网关
- 分层联邦(Global Orchestrator + 域内 Leader) → Harness 的多级调度与权限治理
6)Orchestrator-Worker / A2A 和 Harness 的关系
- Orchestrator-Worker:是 Harness 里集中式调度模式
- A2A(对等通信):是 Harness 里分布式协作模式
- 上面说的 “两者嵌套、不互斥” → 正是企业级 Harness 的典型设计:
- 顶层:Global Orchestrator(集中管控)
- 域内:Agent 之间 A2A 直连(灵活协作)
7)总结
(1) 上面尼恩的 Agent Team 多智能体架构,本质就是 Harness 架构的一种落地形态。
(2) LangGraph ≠ Harness:
- Harness:完整的 Agent 运行时与治理架构(思想 + 体系)
- LangGraph:Harness 中的 “图编排 + 状态管理” 核心组件(工具 / 引擎)
(3) Harness 层要解决的问题:
- 状态机编排、角色分离、对抗校验、联邦调度、A2A 通信、记忆沉淀、工程化调度
- LangGraph 提供了 基础的 工具, 但是 需要 业务代码进行 实现。。
一句话:
Harness 是 “为什么要这么架构”,LangGraph 是 “怎么把架构实现出来”;上面的整套联邦 A2A 多智能体系统,就是一个以 LangGraph 为核心引擎的企业级 Harness 架构。
十一、对抗智能体 Adversarial Team Engine 的大 总结

用LangGraph 状态机 + 图编排 可以 完美实现 Agent Team 所有核心能力:
完整落地Leader-Worker-Verifier 三方角色、Worker 与 Verifier 对抗式质量门禁、Batch 并行 + 阶段依赖、IM 异步秒响应、Coding / 调研 / 文档四大场景、Agent 同权通信、记忆与 Skill 沉淀、Runtime 级工程化调度。
通过 LangGraph 提供现成的状态管理、分支循环、持久化会话、人工介入钩子,无需从零开发底层调度,只需聚焦角色定义、对抗校验规则与业务流程编排,是当前落地这类对抗式多智能体团队最适配的开源框架。
基于LangGraph的多智能体系统通过角色分离、对抗校验、联邦编排,有效解决了单智能体系统的固有局限。
A2A协议为跨厂商智能体协作提供了标准化通信框架,而对抗式质量门禁机制则确保了AI生成内容的可信度。