# A2A需求分析\-网关\-K8s全链路架构详细设计方案 ## 一、架构整体概述 ### 1\.1 核心架构分层 整体采用**三层解耦架构:需求分析层 → 智能网关层 → K8s Agent算力层**,完全贴合你的设计思路,兼顾本地IDE/CLI异步任务、云端Agent弹性调度、全链路任务管控。 - **需求分析层(前端调度端)**:CLI终端、VSCode IDE、Claude Code/CodeBuddy等AI终端,负责自然语言需求解析、复杂任务拆解、本地轻量任务异步执行、结构化任务上报网关。 - **智能网关层(核心中枢)**:基于FastAPI\+ElementUI\+Redis搭建,核心能力为任务池管理、Agent池管理、心跳保活、任务\-Agent规则匹配、全链路通信中转、任务生命周期管控、可视化运维。 - **K8s算力层(执行端)**:全权负责Agent容器的生命周期管理(创建、扩容、销毁、重启),Agent启动/销毁主动通知网关,实现集群弹性伸缩。 ### 1\.2 核心设计理念 - 分层解耦:需求拆解、任务调度、算力执行完全隔离,支持独立迭代扩容; - 异步协同:本地CLI可自主处理轻量编程任务,复杂任务上云调度K8s Agent,轻重任务分流; - 动态感知:网关实时维护在线Agent池,通过定时心跳剔除异常节点,适配K8s动态扩缩容; - 精准匹配:基于自定义规则实现任务与Agent能力精准绑定,支持负载均衡、优先级调度; - 统一通信:网关作为唯一通信中枢,承接CLI与云端Agent的双向交互,通过AgentID精准关联任务链路。 ## 二、各层级详细能力设计 ### 2\.1 需求分析层(CLI/IDE/AI终端) #### 2\.1\.1 核心角色 包含自研CLI、VSCode插件、Claude Code、CodeBuddy等所有前端需求入口,作为**顶层任务调度者**,具备LLM自主拆解能力。 #### 2\.1\.2 核心能力 1. **需求智能拆解**:接收用户自然语言需求,自主拆分出可独立执行的原子任务,区分轻量本地任务、重型云端任务; 2. **本地异步执行**:简单代码补全、语法校验、本地文件修改等轻量任务,由CLI/IDE本地异步处理,无需上云; 3. **云端任务上报**:编译构建、批量测试、数据分析、流媒体处理等复杂任务,结构化封装后提交至网关; 4. **结果接收与聚合**:接收网关转发的Agent执行结果,LLM聚合输出最终答案,反馈给用户; 5. **全链路追踪**:每个任务生成全局唯一RequestID,贯穿网关、Agent全链路,用于结果精准匹配、日志溯源。 #### 2\.1\.3 任务上报协议 采用标准HTTP JSON协议适配所有AI终端工具调用规范,请求体核心字段:RequestID、任务类型、任务标签、任务载荷、超时时间、本地工作目录信息。 ### 2\.2 智能网关层(核心中枢) 技术栈:**FastAPI(高性能接口服务)\+ ElementUI(可视化后台)\+ Redis(内存数据存储)**,无状态服务设计,支持水平扩容,核心维护两大核心资源池:Task任务池、Agent算力池。 #### 2\.2\.1 核心模块拆分 - **API接入模块**:接收CLI/IDE任务提交、Agent注册/注销、心跳上报、任务结果回传; - **任务池管理模块**:缓存所有待执行/执行中/已完成任务,维护任务全生命周期状态; - **Agent池管理模块**:维护所有K8s在线Agent信息,基于定时心跳保活、剔除异常节点; - **规则调度模块**:实现任务与Agent的标签匹配、负载均衡、优先级调度; - **通信中转模块**:基于AgentID关联CLI与Agent,双向转发任务指令、执行日志、最终结果; - **可视化运维模块**:ElementUI实现任务列表、Agent在线状态、执行日志、异常告警可视化展示。 #### 2\.2\.2 Task任务池设计(Redis存储) 网关接收CLI任务后,立即写入Redis任务池,同步返回「任务受理成功」响应,不阻塞CLI,实现异步调度。 **任务数据结构**:RequestID、TaskType、TaskTags、Payload、Status(pending/running/success/failed)、AgentID、CliSessionID、CreateTime、Timeout、Progress、Result、ErrorInfo。 **任务状态流转**:待受理 → 待调度 → 执行中 → 执行成功/执行失败 → 任务归档(TTL自动清理)。 #### 2\.2\.3 Agent算力池设计(Redis存储) 全权管理K8s集群所有Agent实例,适配K8s动态生命周期,实现动态注册、失效剔除。 **Agent数据结构**:AgentID、Endpoint(K8s内部访问地址)、AgentTags(能力标签)、MaxConcurrent(最大并发)、CurrentLoad(当前负载)、LastHeartbeat(最后心跳时间)、Status(online/offline)、CreateTime。 #### 2\.2\.4 心跳保活机制(核心设计) 严格遵循你的设计:**网关定时每分钟轮询维持心跳**,补充工程化容错逻辑: 1. 网关后台启动定时任务,每60s扫描一次Redis Agent池; 2. 判定规则:连续2个周期(120s)未上报心跳 → 标记Agent为offline,从可用算力池剔除; 3. 被动更新:Agent启动主动注册、销毁主动注销,实时更新Agent池状态,优先覆盖定时轮询结果; 4. 负载同步:心跳同步上报当前任务并发数,为调度算法提供依据。 #### 2\.2\.5 任务\-Agent匹配调度规则 网关核心调度逻辑,实现精准任务分发,优先级从高到低: 1. **标签精准匹配**:根据任务TaskTags筛选具备对应能力标签的Agent(如代码编译、日志分析、流媒体处理); 2. **负载过滤**:剔除当前负载已满(CurrentLoad ≥ MaxConcurrent)的Agent; 3. **最优算力选择**:优先选择负载最低、在线时间最稳定的Agent; 4. **任务绑定**:匹配成功后,将AgentID写入任务池对应任务,标记任务为running,下发任务至目标Agent。 #### 2\.2\.6 双向通信机制(核心闭环) 完全贴合你的设计:**网关作为唯一中转,携带AgentID完成CLI与Agent双向通信** 1. 正向链路(CLI → Agent):CLI提交任务 → 网关入库匹配Agent → 携带AgentID下发任务指令; 2. 反向链路(Agent → CLI):Agent执行完成/产生日志 → 结果回传网关 → 网关通过RequestID\+AgentID关联对应CLI会话 → 精准返回结果; 3. 链路隔离:多任务、多Agent、多CLI会话通过RequestID\+AgentID双维度隔离,杜绝消息错乱。 ### 2\.3 K8s算力层 #### 2\.3\.1 核心职责 专注Agent容器生命周期管理,不参与业务调度,职责单一:Agent镜像部署、弹性扩缩容、故障重启、资源配额管控、节点销毁。 #### 2\.3\.2 Agent生命周期联动网关机制 1. **Agent创建启动**:Pod启动后自动读取K8s环境变量(网关地址、Pod信息),主动调用网关`/agent/register`接口完成注册,上报能力标签、并发上限、访问地址;网关更新Agent池,纳入算力调度。 2. **Agent运行中**:每10s主动上报心跳,同步当前负载,网关定时轮询兜底校验; 3. **Agent销毁/缩容**:Pod收到SIGTERM信号后,主动调用网关`/agent/unregister`接口优雅注销;网关立即剔除该Agent,终止其未完成任务,避免任务调度失效; 4. **Agent异常崩溃**:无主动注销时,依赖网关120s心跳超时机制自动剔除,实现故障自愈。 ## 三、全链路完整执行流程 整合所有模块,端到端闭环流程如下: 1. **需求拆解上报**:用户在CLI/IDE输入需求,AI终端自主拆解任务,轻量任务本地异步执行,复杂任务结构化后提交网关; 2. **网关任务受理**:网关接收任务,生成/复用RequestID,写入Redis任务池,立即返回受理响应,避免CLI阻塞; 3. **算力匹配调度**:网关遍历在线Agent池,通过标签\+负载规则匹配最优Agent,绑定AgentID,下发任务; 4. **Agent执行任务**:K8s Agent接收任务,开始执行,定时上报执行进度、日志至网关; 5. **结果回传中转**:Agent执行完成后,将结果/错误信息回传网关;网关通过AgentID\+RequestID匹配原CLI会话; 6. **结果聚合反馈**:网关推送结果至CLI,AI终端聚合结果、整理答案,最终反馈给用户; 7. **状态归档清理**:网关更新任务为成功/失败状态,留存日志,到期自动清理冗余数据。 ## 四、核心数据存储设计(Redis) ### 4\.1 任务池存储结构 - Hash结构:`task:info:{RequestID}`存储任务全量信息; - Set结构:`task:pending` 待调度任务集合、`task:running` 执行中任务集合; - TTL策略:任务数据默认保留24小时,自动过期清理,释放资源。 ### 4\.2 Agent池存储结构 - Hash结构:`agent:info:{AgentID}` 存储Agent全量信息; - ZSet结构:`agent:heartbeat` score=最后心跳时间,用于网关定时清理失效节点; - Set索引:`agent:tag:{tag}` 按能力标签索引Agent,加速任务匹配效率。 ## 五、容错与异常处理机制 ### 5\.1 任务异常容错 - 任务超时:网关自定义任务超时时间,超时自动标记失败,释放Agent算力,反馈CLI; - Agent离线:执行中Agent失联,网关立即终止任务,标记异常,支持CLI重提任务; - 幂等性:基于RequestID实现任务幂等,避免CLI重试导致重复调度。 ### 5\.2 Agent容错 - 心跳兜底:主动心跳\+网关定时轮询双机制,杜绝僵尸节点; - 重启自愈:K8s负责Agent故障重启,重启后自动重新注册,纳入算力池。 ### 5\.3 通信容错 - 断连不丢任务:任务数据持久化Redis,网关重启、网络波动不丢失任务状态; - 精准重连匹配:重连后通过RequestID\+AgentID恢复任务链路,继续推送结果。 ## 六、可视化运维能力(ElementUI) 基于ElementUI搭建后台,提供全维度可视化管控: - 任务管理:查看所有任务状态、进度、关联AgentID、执行日志、结果详情; - Agent管理:在线Agent列表、能力标签、实时负载、心跳状态、异常节点告警; - 日志审计:全链路任务操作日志、Agent注册注销日志、通信记录溯源; - 手动管控:支持手动取消任务、下线异常Agent、重置任务状态。 ## 七、架构核心优势 1. **极简解耦**:三层架构职责清晰,K8s只管生命周期,网关只管调度通信,CLI只管需求拆解; 2. **弹性适配**:完美适配K8s扩缩容,Agent动态上下线自动感知,无需人工干预; 3. **高低速任务分流**:本地轻量异步处理,云端重型算力调度,资源利用率最大化; 4. **精准链路管控**:AgentID\+RequestID双维度绑定,通信不错乱、任务可溯源; 5. **轻量易落地**:FastAPI\+Redis技术栈轻量化,部署简单、开发成本低,配套可视化运维; 6. **可扩展性强**:后续可扩展多租户、权限管控、负载均衡优化、大文件中转、本地文件远程读写等能力。 ## 八、落地实施步骤 1. 搭建网关基础服务:FastAPI接口、Redis数据结构、ElementUI可视化基础页面; 2. 实现Agent注册、注销、心跳上报、网关定时轮询保活能力; 3. 开发任务池管理、任务\-Agent匹配调度核心逻辑; 4. 打通CLI任务上报、网关调度、Agent执行、结果回传全链路; 5. 完善异常容错、日志审计、可视化运维功能; 6. 压测优化,适配K8s大规模Agent集群调度。 > (注:部分内容可能由 AI 生成)