基于Harness + Langgraph + A2A 写一个 Agent Team,实现一支硅基团队自己 写代码

简介: 基于Harness + Langgraph + A2A 写一个 Agent Team,实现一支硅基团队自己 写代码

本文原文地址

逆天的架构: 用 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章以上,具体请关注技术自由圈。

五、工序四:middleware 责任链的  三段式装配

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 体系落地实现。

基于 LangGraph  实现 Agent Team 完整设计方案

二、单 Agent 原生痛点

二、单 Agent 原生痛点

(1) 自审自判无制衡

单 Agent 自己产出、自己自检,校验对象仍是自身生成内容,偏差会持续累积,长任务越做越偏离需求,没有外部独立角色纠错。

(2) 上下文焦虑、中途无故停摆

模型无法自主判断任务终止节点,7 件事只做完 3 件就暂停等用户确认,需要人类反复指令推进,无法全自动跑完完整链路。

(3) 长任务能力退化

上下文膨胀后记忆丢失、风格漂移、研究变营销、格式漏项,单 Agent 无专业分工,无法在垂直领域沉淀经验。

(4) IM 场景同步阻塞

复杂长任务和对话上下文绑定,只能埋头执行全程沉默,用户无秒级反馈、看不到进度,极易产生焦虑;中途无法追加新需求、无法动态加派子任务。

(5) 传统 SubAgent 只是单次函数调用普通子 Agent 是call→return

一次性收发,无多轮对话、无状态留存、无法实时上报阻塞、不能失败重试复用会话,不是真正的团队协作。

三、 Adversarial Agent Team 对抗性多智能体团队 核心架构

三、  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 对抗)

四、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 与人类同权

五、LangGraph 多 Agent 通信设计:Agent 与人类同权

(1) 统一接口抽象将用户可操作的prompt、spawn、abort、kill、summarize、fork会话

全部封装为 LangGraph 可调用工具,用户、普通 Agent、Team Engine 拥有完全对等调用权限。

(2) 三种信息共享机制

  • 单 Agent 私有记忆:沉淀本次任务踩坑经验,后续同类型任务自动复用;
  • Agent 间 CLI 直连通信:支持运行中互相喊话、打断、同步进度;
  • 共享白板文件:大体积交接资料以文件路径 + 摘要传递,不塞入上下文,降低交接 Token 成本。

(3) 权限边界约束

平权不代表无限制,LangGraph 在控制面做权限拦截、操作审计、日志留存,高风险操作必须人工签字确认,守住责任与安全边界。

六、四大核心业务场景 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 的工程难点与解法

七、LangGraph 实现多 Agent 的工程难点与解法

1. 三大隐性成本治理

  • 交接成本:用文件 + 白板做慢通信,不把大段资料塞入 Agent 上下文;
  • 共享成本:按需加载共享信息,不全局广播冗余内容,节省每轮 Token 消耗;
  • 聚合成本:Leader 专职做多 Worker 结果归一合并,统一风格、统一引用、消除矛盾。

2. 避免无意义多 Agent 并发

无结构的多 Agent 并发 只是更贵的群聊,准确率不升反降。

LangGraph 通过明确图结构、依赖关系、停止条件、验收标准,把多 Agent 从 “闲聊” 变成可管控、可验证、可重试的生产运行时

3. 多 Agent 是 Runtime 而非 Prompt 编排

真正的多 Agent 不是写 Prompt 角色扮演,而是LangGraph 状态机、会话管理、消息调度、权限控制、状态持久化的复杂软件工程;

重心从 “写提示词” 转向 “维护控制面与运行时规则”。

八、 LangGraph Agent Team 适用边界与长期价值

八、 LangGraph Agent Team 适用边界与长期价值

(1) 适合启用 LangGraph Agent Team

长周期、高严谨度、多步骤、需事实核验、风险高、经验可复用的复杂任务。

(2) 不适合启用

短句修改、简单查询、常量替换等低风险简单任务,单 Agent 效率更高、成本更低。

(3) 长期复利价值

每次团队协作的经验沉淀为 Memory 与 Skill,每个垂直 Agent 越用越专业;LangGraph 持久化会话与记忆体系,让 AI 从一次性工具变成长期协作的数字员工团队,人类只做顶层决策,执行与落地全部交给 Agent Team。

九: 实操 LangGraph Coding Harness 完整代码

九: 实操 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

十: 联邦A2A编排  与LangGraph  去实现

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生成内容的可信度。

相关文章
|
8天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
2763 15
|
6天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
2303 4
|
21天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23554 13
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
8天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
2055 1
|
2天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
1306 1
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
14天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
3456 5
|
7天前
|
人工智能 安全 开发工具
Claude Code 官方工作原理与使用指南
Claude Code 不是传统代码补全工具,而是 Anthropic 推出的终端 AI 代理,具备代理循环、双驱动架构(模型+工具)、全局项目感知、6 种权限模式等核心能力,本文基于官方文档系统解析其工作原理与高效使用技巧。
1095 0