Agent工厂与A2A网络——AgentMesh设计思路

本文档描述两个独立产品的需求:Agent工厂平台(开发者用来构建和运行Agent的基座,终端用户开箱即用)和A2A网络平台(Agent之间的市场)。两个产品通过A2A协议对接,技术上完全独立部署。

一、背景与定位

1.1 解决什么问题

当前市面上的Agent产品分三类,各有明确的局限。

单体Agent工具(Claude Code、OpenCode、Cursor):解决"一个人用一个Agent干活"的问题。但企业场景需要多个Agent协作,这类工具没有标准方式让Agent A调用Agent B。

Agent协作平台(Multica、Loop):解决了"多个Agent在一个系统里协作"的问题,但协作范围限定在自系统内部。Loop的Orchestrator只能调度注册在Loop里的Subagent,Multica的Actor模型只能管理Multica平台内的Agent,它们没有跨平台的Agent发现和协作协议。现实中企业用不同平台是常态。

自主执行Agent(Manus):给用户一个目标,在云端虚拟机上自主规划执行。但它是封闭系统:执行过程黑盒、单Agent架构、云端锁定、无开放协议。

我们要解决的具体问题:

  1. 用户怎么开箱即用Agent。不是让用户自己配置Agent,而是开发者用工厂平台构建好Agent,用户直接用。OpenCode需要写SKILL.md,Loop需要理解20多种角色定义,这是开发者工具的问题,不应该让终端用户承担。
  2. 本地Agent怎么调用云端能力。OpenCode跑在本地的Agent,想调用企业知识库或高级模型,没有标准路径。
  3. 跨平台的Agent怎么互相发现和对讲。A厂商的客服Agent需要调用B厂商的库存Agent,两个Agent跑在不同平台上,没有通用协议。Google的A2A协议定义了通信格式,但没有定义注册、认证、撮合、治理。

1.2 不做的事

  • 不做基础模型。调用Claude/GPT/DeepSeek等现有模型。
  • 不替代现有工具。OpenCode和Claude Code继续用,工厂负责管理和编排。

1.3 竞品启示

产品 设计启示 我们要避免的
OpenCode 技能按需加载(不全塞上下文)、权限用glob pattern、配置即文件。三个决策让Agent配置变成项目文件编辑 纯本地无云编排、技能全量加载浪费上下文、配置门槛让终端用户无法直接使用
Loop 扁平单层协作(Subagent互不调用)+ 文件系统做共享记忆协议 + 停滞检测看重复错误模式而非超时 强绑定TiDB、闭源、20多种角色定义过重
Multica Agent和Human用同一套数据模型(多态Actor),任务队列+信号量控制并发 重项目管理轻Agent构建
Manus Planner-Executor-Verifier三阶段 + 沙箱隔离 + 执行快照可回滚,解决自主执行失控问题 黑盒、封闭、云端锁定、无开放协议
OpenClaw 聊天应用做Agent入口Gateway + Markdown文件持久化记忆(透明可编辑)+ Pi SDK分层组合 绑定聊天应用交互受限、无Agent间协作协议
Hermes 自改进循环(任务→评估→提取技能→入库),Agent越用越强。方向对但要加人工审核 技能提取全自动不可控、可能积累垃圾技能
Pi(pi.dev) 极简核心(4工具)+ 自我扩展(Agent自己写扩展热重载)。会话即树(分支回溯不浪费上下文)。分层monorepo每层独立可用 无子Agent、无网络协作、终端限定
A2A协议 Agent Card和Task Lifecycle是事实标准,直接在此基础上做撮合和治理 只管通信格式,不管注册发现、撮合、信任、仲裁

跨平台Agent协作是空白地带。Google的A2A协议定义了通信格式但没有撮合和治理,这是A2A网络平台的核心差异。

二、Agent工厂平台

Agent工厂平台是开发者构建和运行Agent的基座。开发者用工厂平台定义Agent的角色、技能、工具、记忆,构建好的Agent以模板形式发布,终端用户直接选用,开箱即用。工厂平台同时也提供Agent的运行时环境(本地、云端、混合),以及开发者工具(CLI、SDK、IDE插件)。

2.1 Agent定义模型

Agent的核心数据结构采用YAML格式,包含以下模块:

  • 元数据:ID、名称、版本、归属、标签
  • 角色定义(Persona):角色类型、语气、专业领域、约束条件
  • 执行模式:工作流编排(step-by-step)或目标驱动自主(autonomous)
  • 记忆配置:持久化策略、存储位置、保留时长
  • 技能清单:引用的外部能力(MCP Server、内联代码等)
  • 工具清单:Agent可直接调用的工具集(含权限和沙箱限制)
  • 模型路由:默认模型、条件路由、降级策略
  • 触发器:Webhook、定时任务、A2A调用
  • 运行时配置:本地/云端/混合、资源配额、沙箱策略

关键设计决策:

  1. 格式采用YAML:可读性优先,配置即代码。
  2. 继承OpenCode的SKILL.md规范:兼容现有生态。
  3. 模型路由独立配置:不硬编码模型选择,支持按条件自动切换。
  4. 运行时类型显式声明:local/cloud/hybrid三种模式,影响调度策略。

2.2 两种执行模式

2.2.1 工作流编排

适用场景:流程确定、需要精确控制、重复性任务。

核心特征:用户用可视化画布定义固定的执行路径,每个节点行为确定,画布是有向无环图(DAG),支持并行分支。

与Dify的关键差异:节点可嵌入自主执行子Agent(混合模式),执行路径完全透明可审计,支持A2A协议可被外部系统调用。

2.2.2 目标驱动自主

适用场景:目标明确但路径不确定、需要灵活决策、一次性复杂任务。

核心特征:用户描述目标,Agent自主规划执行路径,执行中可动态创建子任务、选择工具、调整策略。采用Planner-Execution-Verification架构。

与Manus的关键差异:

维度 Manus 我们的实现
执行环境 云端虚拟机(黑盒) 本地沙箱或云端容器(透明)
工具集 固定内置 用户可配置,支持MCP扩展
干预能力 只能暂停/重试 可实时修改约束、增减工具
复用性 单次任务 保存为可复用的Agent模板
协作 无 支持A2A,可被其他Agent调用

2.2.3 模式选择

场景特征 推荐模式 理由
流程固定、重复执行 工作流编排 确定性高,成本低,易维护
目标明确、路径不确定 目标驱动自主 灵活性强,减少人工拆解
跨多个系统操作 混合使用 工作流定义主流程,自主节点处理复杂子任务

模式在Agent级别声明。混合使用时,工作流画布中可嵌入自主执行节点。

2.3 Agent构建方式

面向开发者,提供四种构建途径。

从模板创建:浏览模板市场 → 选择模板 → 修改参数和配置 → 系统生成Agent定义 → 本地测试 → 发布到模板市场供用户使用。官方模板库Phase 1目标20个,覆盖开发、数据、运营、个人四大类。

从自然语言创建:用自然语言描述Agent的能力和行为 → LLM解析意图 → 生成候选Agent定义(YAML)→ 开发者审核和调整 → 确认后可用。降低开发者从零开始写配置的成本。

从现有配置导入:支持OpenCode SKILL.md、Dify工作流JSON、LangChain代码、CrewAI配置、自定义YAML/JSON。导入后做兼容性检查,生成报告。方便从其他平台迁移。

从空白创建:完整的YAML编辑器,支持语法高亮、自动补全、Schema验证、版本对比。适合需要完全自定义的高级开发者。

构建完成的Agent以模板形式发布到市场,终端用户浏览市场选用即可,无需关心Agent是怎么构建的。

2.4 记忆系统

Agent的记忆系统决定它能否在多次交互中保持连贯性、学习用户偏好、复用历史经验。所有记忆统一由平台在云端管理,Agent不管跑在本地还是云端,记忆都从云端平台读写。会话上下文管理(滑动窗口、摘要压缩)属于运行时引擎的技术细节,不作为独立记忆层。

2.4.1 工作记忆(短期)

生命周期:单个Agent实例运行期间。跨会话保持任务状态、用户偏好、中间结果。支持TTL自动清理过期数据。统一云端存储,Agent实例通过平台API读写。

2.4.2 长期记忆

生命周期:永久。跨任务学习、经验复用、知识积累。

类型 内容 查询方式
情景记忆 具体任务执行记录 相似度搜索
语义记忆 抽象规则、知识、用户画像 关键词/向量混合

任务完成后自动提取成功模式、错误教训、用户偏好、领域知识。检索采用混合策略(工作记忆40% + 情景记忆35% + 语义记忆25%)。

同一Agent的多个实例之间:工作记忆实时同步(<100ms),长期记忆最终一致性(每5分钟或任务完成后同步),冲突解决用时间戳优先加关键记忆人工确认。

2.5 工具接入系统

所有工具无论来源,统一为标准格式:名称、描述、输入参数(JSON Schema)、输出定义、来源配置、权限控制、执行限制。

来源类型 说明 典型场景
MCP Model Context Protocol标准 第三方服务
HTTP 任意HTTP API 内部微服务
Native 平台内置工具 文件读写、命令执行
Inline 用户上传的代码 团队自定义逻辑

工具执行在隔离环境中,按隔离强度分四档:无隔离(只读工具)、WebAssembly进程级(内联代码)、Docker容器级(复杂环境)、Firecracker微型VM(不可信代码)。

2.6 技能系统

采用扩展的SKILL.md规范定义技能,包含元数据、接口定义(输入/输出JSON Schema)、实现代码、测试用例。

类型 实现方式 适用场景
原生技能 平台内置 文件读写、HTTP请求
内联技能 用户上传代码(WebAssembly沙箱) 团队自定义业务逻辑
复合技能 多个子技能编排 复杂流程封装

技能市场:发布流程为本地测试→提交→平台自动验证(Schema检查、单元测试、安全扫描)→审核上架。版本管理采用Semver,主版本变更需显式升级。

2.7 权限管控

权限分五个层面,从平台入口到跨平台调用逐层收窄。

2.7.1 平台访问控制

组织(Organization)→ 团队(Team)→ 用户(User)三层结构。角色四个:

角色 权限范围
Owner 组织管理、计费、团队成员管理
Admin 团队管理、成员邀请、Agent发布审批
Developer 创建/编辑/测试Agent、管理技能
Viewer 查看Agent运行结果、只读访问模板市场

用户可拥有多个角色,权限取并集。

2.7.2 Agent资源权限

每个Agent有可见性控制,决定谁能访问:

可见性 谁能用 谁能编辑
私有 仅创建者 仅创建者
团队 团队内所有Developer及以上 创建者 + Admin
指定成员 被授权的特定用户 创建者 + Admin
公开(市场) 所有用户 仅创建者

Agent生命周期对应不同权限状态:草稿(创建者可编辑)→ 测试中(团队成员可测试)→ 已发布(按可见性控制)→ 已下架(仅创建者可操作)。终端用户对市场中的Agent模板只有使用权限,不能编辑原始定义。

2.7.3 运行时权限

Agent定义中包含权限声明,运行时引擎在执行每个工具调用前检查权限。

权限规则采用allow/ask/deny模式,支持pattern匹配:

权限维度 说明 示例
文件访问 Agent能读写哪些路径 read: src/**/*.ts、edit: /tmp/**
命令执行 Agent能执行哪些shell命令 bash: git * 允许、bash: rm * 拒绝
工具调用 Agent能调用哪些MCP工具 mcp__filesystem__read_file 允许
网络访问 Agent能访问哪些域名 webfetch: api.example.com/*
技能加载 Agent能使用哪些技能 skill: internal-* 拒绝

匹配不到任何规则的工具调用默认deny。ask模式触发时暂停执行,提示开发者或用户确认,确认后可选择"仅本次"或"本次会话内同类型全部允许"。

防死循环机制:连续3次权限阻止后暂停并升级到人工确认,累计20次阻止后停止Agent。

2.7.4 数据访问控制

Agent访问企业数据(数据库、API、文件)时,不直接授予权限,而是以用户身份代理访问(OBO,On-Behalf-Of)。用户的认证token传递给Agent,Agent拿着用户token访问下游数据源,数据源按用户已有的权限做行级安全(RLS)。Agent能访问的数据范围不超过使用它的用户本身能访问的范围。

开发者构建Agent时声明需要访问哪些数据源,平台在Agent运行前验证用户是否有对应数据源的访问权限,无权限则拒绝启动。

2.7.5 A2A跨平台权限

Agent A调用Agent B时,平台生成任务级临时token。token包含调用方身份、任务描述、权限范围、过期时间。Agent B拿到token后只能在这个任务范围内操作,任务结束token自动失效。

跨平台调用的权限在Agent Card中声明:每个技能可标注所需的security scheme(OAuth2 scope或mTLS要求)。A2A网络平台的撮合引擎在匹配Agent时检查调用方是否满足目标Agent的security要求。

2.8 运行时系统

运行时系统负责Agent实例的生命周期管理、执行引擎和故障恢复。任务由谁接是A2A网络平台撮合引擎的事,工厂的运行时不做任务调度。

实例管理

Agent被触发后启动实例。云端模式由K8s管理Pod(自动扩缩容),本地模式由Daemon管理进程。平台维护每个实例的健康状态、资源占用、运行时长。

执行引擎

工作流执行引擎按DAG拓扑排序执行,支持并行分支。自主执行引擎按规划→执行→验证三阶段运行,执行中发现新信息可重新规划。

Agent编排

平台内置编排模式库,开发者选择模式而非自己实现编排逻辑。编排是确定性的系统组件,不是Agent。

编排模式 适用场景 工作方式
顺序执行(Sequential) 流程固定、步骤确定 按定义顺序依次调用Agent,前一步输出作为后一步输入
并行执行(Parallel) 独立子任务可同时进行 同时启动多个Agent,聚合结果后继续
监督者模式(Supervisor) 需要根据中间结果动态决定下一步 一个监督者组件负责路由决策,按规则或LLM判断将任务分发给合适的Agent
群涌模式(Swarm) 多个Agent各自处理自己擅长的部分 Agent根据任务描述自行认领,无中心调度
规划-执行(Plan-And-Execute) 复杂目标需要拆解 先规划完整步骤,再逐步执行,执行中可重新规划

开发者可以在工作流画布中混合使用这些模式。比如主流程用顺序执行,某个复杂节点用规划-执行模式拆解,多个独立子任务用并行执行。监督者模式中的路由决策默认用确定性规则(关键字匹配、技能标签匹配),仅在规则无法覆盖时降级为LLM判断,控制成本和可预测性。

任务状态

任务从工厂外部到达(用户直接触发或A2A网络分发):RECEIVED(收到)→ RUNNING(执行中)→ COMPLETED(成功)/ FAILED(失败)/ TIMEOUT(超时)。重试策略默认3次,指数退避,区分可重试和不可重试失败。

故障恢复

心跳检测(10秒间隔,30秒超时)。Agent故障自动重启(最多3次)。每30秒保存执行状态快照,故障时从checkpoint恢复。

三种运行模式

本地模式:Agent运行在用户机器的隔离环境中,模型调用通过Daemon代理,业务数据不出域。

云端模式:Agent运行在平台管理的K8s集群中,自动扩缩容。

混合模式:Agent运行在本地但可调用云端技能,通过Daemon与云端建立反向WebSocket。

2.9 人机交互形式

这里说的是用户使用Agent时的交互,使用阶段有四种交互模式。

2.9.1 对话式

页面上就是一个对话框,用户说话,Agent回复。Agent的回复不只支持文字,还可以返回表格、图表、文件附件、卡片。用户可以针对回复追问、纠正、补充。

页面布局:左侧Agent列表,右侧对话区域。对话区域顶部显示Agent名称和状态,底部输入框。

2.9.2 流程可视化+实时监控

用户看到Agent正在执行的工作流:当前走到哪个节点、每个节点的输入输出、哪些完成了、哪个正在执行、哪个失败了。节点颜色标记状态(绿色完成、脉冲动画执行中、灰色等待、红色失败)。

用户可以在执行中介入:暂停整个流程、重试失败节点、跳过节点、修改后续参数、手动审批需要确认的节点。

页面布局:上方流程执行视图(可缩放拖拽),下方节点详情面板(点击展开),右上角操作按钮。

2.9.3 目标委派+阶段性汇报

用户给Agent一个目标,Agent自主规划,但在关键节点主动汇报。

交互过程:用户描述目标 → Agent回复执行计划并确认 → Agent开始执行,每完成一个阶段主动汇报(汇报出现在对话区域)→ 遇到决策点主动问用户(比如数据冲突时问用哪份数据)→ 用户可随时追加约束或调整方向 → Agent最终交付结果。

用户可以随时查看执行进度(对话区域右侧的进度面板),也可以在过程中说"顺便把竞品C也加进来"来调整方向。

2.9.4 后台运行+异常通知

Agent在后台自动跑,用户平时不管,出问题才收到通知。

通知触发条件:执行失败且自动重试也失败、结果超出预期范围、需要人工审批、检测到异常模式。通知通过飞书/Slack/邮件推送,用户点击通知跳转到任务详情页。

任务详情页展示:异常描述(一句话)、执行日志(完整调用链)、Agent的建议处理方案、操作按钮(重试/跳过/修改参数后重试/终止)。

2.9.5 交互模式的切换

四种模式不是互斥的,同一个任务可以在不同阶段自然切换。系统根据任务状态自动展示对应的界面。

典型场景:电商公司的"竞品价格监控Agent"。日常运行用后台模式,Agent每天自动跑。某天价格波动超5%,Agent推送飞书通知。用户点击通知进入流程可视化模式,看到数据采集节点失败。用户在对话框里说"URL改成这个",Agent确认后重新执行(对话模式)。业务扩展后用户对Agent说"把B公司价格数据也接入",Agent回复执行计划请求确认(目标委派模式)。

2.10 开发者工具

CLI:init(初始化)、dev(本地调试)、run(单步执行)、publish(发布)、skill(技能管理)、a2a(Agent发现和调用)。

SDK:Python和TypeScript,支持Agent定义、技能引用、模型路由、触发器设置、A2A调用。

IDE插件:VS Code插件,支持Agent可视化编辑、调试集成、技能市场浏览、一键发布。

2.11 工厂与A2A网络的对接

两个平台通过A2A协议通信,不共享数据库、不共享内部API。工厂平台是A2A网络的"客户端",负责构建和运行Agent;A2A网络平台负责Agent之间的发现、撮合、通信、治理。

对接点有三个:

注册对接:开发者发布Agent时,工厂平台自动将Agent Card(名称、描述、端点URL、能力声明、技能列表、SLA承诺)提交到A2A网络的注册API。注册后A2A网络开始心跳监控,Agent下线时工厂平台主动注销。

任务对接:调用方Agent在A2A网络选定目标Agent后,平台锁定任务并通过A2A协议发送任务。工厂平台的网关收到请求,验证调用方身份和权限(任务级临时token),然后路由到目标Agent(云端直接到K8s Pod,本地通过反向WebSocket转发给Daemon)。执行完成后结果原路返回。

用户直接触发的任务(对话、Webhook、定时任务)不经过A2A网络,由工厂平台实例管理器直接创建Agent实例执行。两种场景走不同入口,但执行引擎和运行时是同一套。

信任对接:每次A2A任务完成后,A2A网络更新信任评分。工厂平台可以查询自己Agent的评分,用于仪表盘展示和决策。争议仲裁时,工厂平台提供执行日志,A2A网络根据日志裁定责任归属。

三、A2A网络平台

A2A网络平台是独立于Agent工厂的基础设施。工厂平台是开发者构建和运行Agent的基座,网络平台负责Agent之间的发现、撮合、通信、治理。两个平台通过A2A协议对接,网络平台不关心Agent内部怎么执行,工厂平台不关心网络层怎么路由。

3.1 网络层(基础设施)

网络层做三件事:Agent之间怎么互相找到(Agent Card)、消息怎么传过去(传输协议)、身份怎么验证(认证)。它是中性的管道。

3.1.1 Agent Card与发现协议

Agent Card兼容Google A2A v1.0标准,是Agent在网络中的"名片"。包含名称、描述、端点URL、版本、提供方信息、能力声明、技能列表、SLA承诺。

发现方式:主动注册(Agent所有者提交Agent Card)、自动注册(工厂平台托管的Agent发布时自动注册)、被动发现(平台定期扫描已知端点更新健康状态)。

3.1.2 传输协议

传输方式 适用场景
HTTP/HTTPS 同步调用,简单可靠
WebSocket 流式输出、状态推送
gRPC 高性能内部通信
消息队列 异步任务、广播

3.1.3 身份认证

支持四种方式:API Key(服务间调用)、JWT(内部短期令牌)、OAuth2(用户授权第三方)、mTLS(企业间高安全)。认证是网络层的安全基础,授权是平台层的事。

3.1.4 本地Agent接入

本地Agent通过Local Daemon接入:Daemon与云端建立反向WebSocket连接,云端为本地Agent生成虚拟端点,外部调用通过云端网关路由到Daemon再转发给本地Agent。业务数据不经过云端。

3.2 撮合层(业务逻辑)

网络层解决了"消息能不能到"的问题,撮合层解决的是"调用方不需要知道哪个Agent最合适"。

3.2.1 注册中心

建在网络层之上的索引层。Agent Card的存储与索引、按技能和领域分类、健康状态实时监控(心跳检测)、版本管理与兼容性检查。

Agent Card通过网络层注册,注册中心解析后建立分类索引。调用方查询注册中心找到候选Agent,再通过网络层发起调用。

3.2.2 两种任务分发模式

点对点调用:调用方明确知道要用哪个Agent,直接通过Agent Card中的端点发起调用。适用于长期合作关系的Agent之间、内部固定流程。

广播认领:调用方不指定目标,把任务描述广播给符合条件的Agent,由Agent自主认领。这是A2A网络平台的核心撮合机制。

广播认领流程:

  1. 任务发布:调用方提交任务描述、技能要求、时间要求、质量期望。平台按技能标签预筛选候选Agent池
  2. 广播通知:平台将任务推送给候选池中所有Agent。通知包含任务摘要和要求,不包含调用方身份(避免选择性接单)
  3. 意向收集:Agent在时间窗口内反馈承接意向,包含预期完成时间、资源负载、相关经验说明。平台只做初步过滤(健康状态、技能版本兼容性、资源充足性),不过滤掉任何符合条件的Agent
  4. 方案推荐:平台按多维度生成推荐列表并附推荐理由(历史完成率、平均耗时、当前负载、信任评分),返回给调用方Agent。调用方Agent结合自身策略做最终选择
  5. 锁定与执行:调用方Agent选定后通知平台锁定任务,通过网络层建立调用通道执行

推荐排序参考维度:历史同类任务完成率、平均响应时效、当前负载情况、信任评分。调用方Agent可自定义权重或指定特定Agent。

3.2.3 认领准入与质量控制

广播准入:信任评分高于阈值的Agent才进入候选池。高敏感任务(涉及用户数据、金融操作)门槛高,普通任务门槛低。

意向确认:Agent反馈意向后平台快速验证当前健康状态、技能版本兼容性、资源充足性。验证不通过的Agent不进入推荐列表。

执行监控:超时未完成、错误率异常、心跳丢失时,平台触发任务回收(释放当前Agent,重新广播给候选池中其他Agent)。

3.2.4 权限控制

RBAC + ABAC混合授权。支持字段级权限:调用方只能看到有权限的数据字段。跨组织调用需要双向授权,粒度支持组织级、Agent级、技能级。

3.3 信任评分体系

信任评分是撮合层的核心数据,决定Agent在市场中的可见度和竞争力。

评分构成:任务完成率(40%)、响应质量(30%)、响应时效(15%)、可靠性(15%)。每次任务完成后实时更新。

准入阈值:普通任务≥60分,标准任务≥75分,高敏感任务≥90分且额外安全审核。

评分影响:评分高的Agent在广播候选池中排名靠前、注册中心搜索排序靠前、获得更多推荐权重。评分低的被降权(减少广播曝光)或标记警告。低于40分自动下架,60天内可申诉重新上架。

3.4 治理与仲裁

Agent审核:公开发布的Agent需通过平台审核(功能验证、安全扫描、SLA测试)。

争议仲裁:调取执行日志、验证结果正确性、裁定责任归属。仲裁败诉方扣分。

淘汰机制:连续7天心跳失败、低于40分且超过50条评价、被多次投诉的Agent自动下架。

协议兼容性:在A2A v1.0标准之上扩展任务编排协议、信任评估协议、审计协议、广播认领协议。版本兼容通过适配器实现。

四、技术架构

Agent工厂平台和A2A网络平台是两套独立系统,独立部署、独立演进。它们之间的唯一接口是A2A协议。

4.1 两个系统的边界

工厂平台是A2A网络的"客户端":Agent通过工厂平台注册到网络、从网络接收任务、向网络发布能力。网络平台不关心Agent内部怎么执行,工厂平台不关心网络层怎么路由和撮合。对接点(注册、任务、信任)的详细说明见2.11节。

4.2 Agent工厂平台的技术架构

4.2.1 技术组件

接入层:

组件 职责 选型
Web UI 用户操作界面(对话、流程监控、仪表盘) React,WebSocket接收实时状态
CLI 开发者命令行工具 Go单二进制
REST API 外部系统集成 OpenAPI 3.0规范

控制层:

组件 职责 选型
API Gateway 请求路由、限流、认证 Kong或Envoy
实例管理器 Agent实例的启停、健康监控、资源管理 自研,云端K8s + 本地Daemon
认证服务 身份认证、权限控制 OAuth2+JWT+API Key+mTLS
记忆服务 工作记忆和长期记忆的存储、检索、同步 云端统一管理

数据层:

组件 用途 选型
PostgreSQL Agent定义、用户数据、任务记录、工作记忆 JSONB存Agent定义和工作记忆
Redis 任务队列、会话状态 Streams做任务队列
S3兼容 技能包、附件、执行产出物 S3存储(如RustFS)
Qdrant 长期记忆的语义检索 开源,支持混合检索
ClickHouse 审计日志、运行分析 列存,大规模时序分析

运行时层:

组件 职责 选型
K8s集群 云端Agent运行 Pod隔离,HPA自动扩缩容
Local Daemon 本地Agent管理 Go单二进制,反向WebSocket
模型网关 多LLM厂商路由、缓存、降级 统一接口适配Claude/GPT/DeepSeek

4.2.2 记忆系统技术选型

工作记忆:统一由平台云端管理,PostgreSQL JSONB存储(GIN索引支持快速查询)。Agent实例通过平台API读写,不管Agent跑在本地还是云端。TTL自动清理过期数据。

长期记忆:向量数据库(Qdrant)存情景记忆和语义记忆的向量表示,支持混合检索(关键词过滤+向量相似度排序)。关系数据库(PostgreSQL)存语义记忆的结构化部分(规则、知识、用户画像),JSONB+GIN索引支持全文搜索。

记忆提取流程:任务完成 → 轻量模型分析执行日志 → 提取候选记忆 → 用已有语义记忆去重 → 写入向量数据库或同时写入两个库。

4.2.3 核心数据流转

Agent创建:用户提交YAML → API Gateway验证Schema → 存储到PostgreSQL → 解析技能依赖 → 记忆服务初始化存储空间 → 如果设为公开,调用A2A网络的注册API提交Agent Card。

任务执行(对话式):用户发送消息 → 实例管理器创建Agent实例(按运行时配置选择本地Daemon或云端K8s Pod)→ Agent加载定义,从记忆服务读取上下文 → 调用模型和工具执行 → 结果写入记忆服务 → 推送到用户界面 → 记录执行日志到ClickHouse。

任务执行(工作流):触发器触发 → 按DAG拓扑执行节点 → 每个节点独立调度执行 → 并行节点同时执行由调度器聚合结果 → 条件分支由LLM判断 → 人工审批节点暂停等待 → 节点状态实时推送到流程可视化界面。

4.3 A2A网络平台的技术架构

4.3.1 技术组件

接入层:

组件 职责 选型
A2A网关 外部Agent调用的唯一入口,协议转换 gRPC/HTTP双协议
管理API Agent所有者管理注册信息、查看信任评分 OpenAPI 3.0

业务层:

组件 职责 选型
注册中心 Agent Card索引、健康监控 PostgreSQL+Redis,心跳+事件驱动
撮合引擎 广播认领、意向收集、方案推荐、任务锁定 自研,消息队列驱动
认证服务 身份认证、跨组织权限 mTLS+OAuth2
信任服务 信任评分计算、准入阈值管理 事件驱动,每次任务完成更新
仲裁服务 争议处理、执行日志调取 人工+自动混合

数据层:

组件 用途 选型
PostgreSQL Agent Card、信任评分、任务记录 JSONB存Agent Card
Redis 广播候选池、会话状态 发布/订阅做广播通知
消息队列 异步任务、广播分发 Kafka或NATS,支持消费者组
ClickHouse 审计日志、调用分析 列存时序分析

4.3.2 核心数据流转

点对点调用:调用方通过注册中心查询目标Agent的Agent Card → 认证服务验证调用权限 → 通过A2A网关发送任务 → 网关做协议转换后路由到目标Agent → 目标Agent执行后结果原路返回 → 网关记录审计日志 → 信任服务更新评分。

广播认领:调用方提交任务描述到撮合引擎 → 撮合引擎从注册中心按技能标签筛选候选池 → 通过消息队列广播给候选Agent → 有意向的Agent在时间窗口内反馈承接意向 → 平台初步过滤后生成推荐列表返回给调用方Agent → 调用方Agent结合自身策略选定目标Agent → 通知平台锁定任务并通过A2A网关建立调用通道 → 执行结果返回后信任评分更新 → 失败时撮合引擎触发任务回收重新广播。

Agent注册:工厂平台调用A2A网络的注册API → 提交Agent Card → 注册中心解析建立索引 → 开始心跳监控 → 定时健康检查更新状态。

详见3.2节广播认领流程和3.3节信任评分体系。

4.3.3 Benchmark与质量保证

三层评估框架:技能级(提交时自动测试)、Agent级(标准化场景集Benchmark)、网络级(信任评分,详见3.3节)。

评估方式:自动化流水线 + 人工众包(生成金标准数据集)+ 对抗性测试(构造边界输入)。

质量闭环:发布前达标才允许公开 → 运行中自动收集反馈 → 定期重检检测退化 → 退化超阈值告警 → 数据驱动排序推荐。

4.4 部署架构

工厂平台:开发环境docker-compose(api-gateway、scheduler、memory-service、worker、postgres、redis、qdrant)。生产环境K8s,每个组件独立部署,HPA自动扩缩容。本地一键安装Daemon。

A2A网络平台:独立部署。网关集群(多节点高可用),注册中心和撮合引擎无状态化(状态存PostgreSQL和Redis),消息队列集群保证广播可靠性。

对接:两个平台之间不共享数据库、不共享内部API。所有通信走A2A协议。工厂平台是A2A网络的客户端,网络平台不反向调用工厂平台的内部接口。

五、三方协同场景

以下场景展示了Agent工厂平台、A2A网络平台、第三方Agent三者如何协同工作。

背景:一家汽车制造商(主机厂)需要评估供应商的零部件质量风险。主机厂、一级供应商、第三方检测机构分别使用不同的Agent平台。

参与者:

  • 主机厂用我们的Agent工厂平台构建了"质量风险分析Agent"。这个Agent能分析供应商提交的质量数据、识别风险模式、生成评估报告。开发者在工厂平台上定义了Agent的角色、技能(数据分析、报告生成)、工具(数据库查询、PDF解析)、记忆(历史评估经验),发布为模板供质量工程师使用。
  • 一级供应商用Dify构建了自己的"质量数据Agent"。这个Agent能查询供应商内部的质检记录、生产批次数据、不合格品处理记录。它通过Dify的Webhook触发,返回结构化数据。它不是用我们的工厂构建的,但实现了A2A协议,注册到了A2A网络。
  • 第三方检测机构用自研系统构建了"实验室检测Agent"。它能查询实验室的测试报告、材料分析结果、认证状态。同样注册到了A2A网络。

流程:

  1. 主机厂质量工程师在工厂平台上启动"质量风险分析Agent",输入"评估供应商A的刹车片质量风险"
  2. 工厂平台的质量风险分析Agent判断需要获取供应商A的质量数据,向A2A网络发起任务请求
  3. A2A网络的撮合引擎广播任务描述("查询供应商A近6个月的质量检测数据"),按技能标签筛选出候选Agent池
  4. 供应商A的"质量数据Agent"(Dify构建)和第三方检测机构的"实验室检测Agent"(自研)都在候选池中,各自认领了能完成的部分
  5. A2A网络通过任务级临时token授权,分别与两个Agent建立调用通道
  6. 供应商A的质量数据Agent返回近6个月的质检记录和不合格品数据(通过Dify的A2A适配器)
  7. 第三方检测Agent返回刹车片材料的实验室测试报告(通过自研的A2A接口)
  8. 主机厂的质量风险分析Agent汇总两个数据源,结合自己的长期记忆(历史评估中该供应商的表现),生成风险分析报告
  9. 执行完成后,A2A网络根据响应质量和时效更新两个供应商Agent的信任评分
  10. 主机厂质量工程师在工厂平台上看到完整的风险评估报告,包含数据来源、风险等级、建议措施

这个场景体现了什么:

  • 工厂平台负责构建和运行Agent(质量风险分析Agent的开发、部署、记忆管理)
  • A2A网络负责发现和撮合(广播任务、匹配技能、管理信任、授权调用)
  • 第三方Agent通过A2A协议自由接入(Dify和自研系统,不需要用我们的工厂)
  • 三个平台互不感知内部实现,只通过A2A协议通信