33 - Agent矩阵与领域设计模式

100+ Agent 分6大领域、零配置注册、AgentCapability驱动UI、Pipeline流水线

一、Agent 接口设计

Agent接口是整个框架的核心契约,所有Agent必须实现此接口:

public interface Agent {

    /** 唯一标识 (如 "photo-agent", "code-review-agent") */
    String getId();

    /** 显示名称 (如 "智能修图助手") */
    String getName();

    /** 功能描述 */
    String getDescription();

    /** 能力集合 - 驱动前端UI动态渲染 */
    Set<AgentCapability> getCapabilities();

    /** 核心方法 - 处理用户消息并返回流式响应 */
    Flux<ChatResponse> chat(ChatRequest request);

    /** 超时时间 (默认120秒) */
    default Duration getTimeout() { return Duration.ofSeconds(120); }

    /** 最大重试次数 (默认3次) */
    default int getMaxRetries() { return 3; }

    /** 优先级 (数值越小优先级越高,用于路由决策) */
    default int getPriority() { return 100; }

    /** 最大并发数 (0=不限) */
    default int getMaxConcurrency() { return 0; }

    /** Agent所属领域 */
    default AgentDomain getDomain() { return AgentDomain.GENERAL; }
}

二、AgentRegistry 零配置注册

零配置注册原理 (Spring DI自动发现):

  Spring容器启动
  │
  ├── 扫描所有 @Component 类
  │   ├── PhotoAgent         implements Agent ✓
  │   ├── CodeReviewAgent    implements Agent ✓
  │   ├── TranslationAgent   implements Agent ✓
  │   ├── ... (100+ Agent)
  │   └── NetDiskAgent       implements Agent ✓
  │
  ▼
  ┌─────────────────────────────────────────────────────────┐
  │ @Component                                              │
  │ public class AgentRegistry {                            │
  │                                                         │
  │   private final Map<String, Agent> agentMap;            │
  │                                                         │
  │   // Spring自动注入所有Agent实现到List中                │
  │   public AgentRegistry(List<Agent> agents) {            │
  │     this.agentMap = agents.stream()                     │
  │       .collect(Collectors.toMap(Agent::getId, a -> a)); │
  │   }                                                     │
  │                                                         │
  │   public Agent getAgent(String id) { ... }              │
  │   public List<Agent> listAll() { ... }                  │
  │   public List<Agent> listByDomain(AgentDomain d) { }   │
  │   public List<Agent> listByCapability(AgentCapability c)│
  │ }                                                       │
  └─────────────────────────────────────────────────────────┘

  新增Agent的全部工作:
  ┌──────────────────────────────────────────┐
  │ 1. 创建Java类                           │
  │ 2. 加 @Component 注解                   │
  │ 3. 实现 Agent 接口                      │
  │ 4. 完毕! (无需任何配置文件)             │
  │                                          │
  │ ✅ 自动出现在API列表                    │
  │ ✅ 自动出现在前端选择器                 │
  │ ✅ 自动获得限流/熔断/重试保护           │
  │ ✅ 自动获得SSE流式通信                  │
  │ ✅ 自动获得对话历史管理                 │
  │ ✅ 自动获得Prompt安全校验               │
  └──────────────────────────────────────────┘

三、AgentCapability 枚举 (27个能力)

每个Agent声明自己支持的能力,前端根据能力集动态渲染UI组件:

#Capability含义前端UI效果
1DOCUMENT_UPLOAD文档上传显示上传入口
2SOURCE_CITATION来源引用展示引用来源面板
3HISTORY_CONTEXT历史上下文启用多轮历史注入
4MODEL_SELECTION模型选择模型下拉选择器
5WEB_CRAWL网页抓取显示URL分析入口
6IMAGE_UPLOAD图片上传显示图片上传按钮
7BOOK_SCRAPE小说抓取分析显示抓取工具入口
8NETDISK_VIEW网盘视图显示网盘面板
9PHOTO_GALLERY相册展示显示相册面板
10PHOTO_UPLOAD照片上传显示照片批量上传
11PHOTO_MANAGEMENT照片管理显示标签/相册/删除等操作
12RESUME_SCREENING简历筛选显示筛选工作台
13WECHAT_BACKUP微信备份显示微信备份面板
14CHECKLIST清单显示Checklist组件
15WEB_SEARCH网页搜索显示搜索入口
16BROWSER_AUTOMATION浏览器自动化显示自动化能力入口
17CHANNEL_MANAGEMENT渠道管理显示渠道管理入口
18CONTENT_LIBRARY内容库显示内容库面板
19CONTENT_UPLOAD内容上传显示导入入口
20CONTENT_SEARCH内容搜索显示检索入口
21CONTENT_READER内容阅读器显示阅读/播放组件
22PLAN_MODE任务模式显示Plan/Act切换
23QUICK_ASK临时提问显示闪问入口
24FILE_UPLOAD文件上传显示通用附件上传入口
25VOICE_CHAT语音对话显示录音与TTS播放入口
26BACKGROUND_TASK后台任务显示任务状态与取消入口
27IMAGE_GENERATION图片生成显示图片生成结果预览
能力驱动UI的工作原理:

  后端返回:
  {
    "agentId": "photo-agent",
    "capabilities": ["IMAGE_UPLOAD", "MODEL_SELECTION", "PHOTO_GALLERY"]
  }

  前端动态渲染:
  ┌───────────────────────────────────────┐
  │ ChatPanel                             │
  │ ┌─────────────────────────────────┐   │
  │ │ [图片上传区] ← IMAGE_UPLOAD     │   │
  │ └─────────────────────────────────┘   │
  │ ┌─────────────────────────────────┐   │
  │ │ 模型: [GPT-4V ▼] ← MODEL_SEL  │   │
  │ └─────────────────────────────────┘   │
  │ ┌─────────────────────────────────┐   │
  │ │ 输入框... [发送]                │   │
  │ │ 相册面板... ← PHOTO_GALLERY    │   │
  │ └─────────────────────────────────┘   │
  └───────────────────────────────────────┘

四、6大领域分类

领域Domain枚举Agent数量代表Agent
创意内容CREATIVE18+PhotoAgent、VideoScriptAgent、CopywritingAgent、LogoDesignAgent
企业办公ENTERPRISE22+ContractReviewAgent、MeetingSummaryAgent、OKRAgent、HRAssistant
教育培训EDUCATION15+TutorAgent、QuizGeneratorAgent、PaperReviewAgent、LanguageCoach
生活服务LIFESTYLE12+TravelPlannerAgent、RecipeAgent、HealthAdvisor、FitnessCoach
效率工具PRODUCTIVITY20+CodeReviewAgent、TranslationAgent、DataAnalysisAgent、EmailDraft
专业领域SPECIALIZED15+LegalConsultAgent、FinanceAnalystAgent、MedicalQAAgent
Agent矩阵概览:

  ┌────────────────── 6大领域 × 100+ Agent ──────────────────┐
  │                                                           │
  │  CREATIVE (创意)        ENTERPRISE (企业)                 │
  │  ├── PhotoAgent         ├── ContractReviewAgent           │
  │  ├── VideoScriptAgent   ├── MeetingSummaryAgent           │
  │  ├── CopywritingAgent   ├── OKRAgent                     │
  │  ├── MusicComposeAgent  ├── DataReportAgent              │
  │  └── ...若干            └── ...若干                      │
  │                                                           │
  │  EDUCATION (教育)       LIFESTYLE (生活)                  │
  │  ├── TutorAgent         ├── TravelPlannerAgent           │
  │  ├── QuizGenerator      ├── RecipeAgent                  │
  │  ├── PaperReview        ├── HealthAdvisor                │
  │  └── ...15个            └── ...12个                      │
  │                                                           │
  │  PRODUCTIVITY (效率)    SPECIALIZED (专业)                │
  │  ├── CodeReviewAgent    ├── LegalConsultAgent            │
  │  ├── TranslationAgent   ├── FinanceAnalystAgent          │
  │  ├── DataAnalysis       ├── MedicalQAAgent               │
  │  └── ...20个            └── ...15个                      │
  │                                                           │
  └───────────────────────────────────────────────────────────┘

五、特色Agent介绍

PhotoAgent (智能修图)

PhotoAgent 工作流:

  用户上传图片 + 指令("去除背景", "美化人像", "风格迁移")
  │
  ├── 1. 图片分析 (Vision Model识别内容)
  ├── 2. 指令解析 (NLU理解用户意图)
  ├── 3. 工具选择 (背景移除/美颜/滤镜/裁剪)
  ├── 4. 图片处理 (调用对应图像处理API)
  └── 5. 结果返回 (处理后图片 + 操作说明)

  能力集: [PHOTO_GALLERY, PHOTO_UPLOAD, PHOTO_MANAGEMENT, MODEL_SELECTION]

NetDiskAgent (智能网盘助手)

NetDiskAgent 工作流:

  用户指令("帮我整理下载文件夹", "找到上周的合同文档")
  │
  ├── 1. 意图识别 (搜索/整理/分类/清理)
  ├── 2. 文件扫描 (遍历目标目录)
  ├── 3. 智能分类 (按类型/日期/项目自动归类)
  ├── 4. 执行操作 (移动/重命名/压缩/删除)
  └── 5. 生成报告 (操作摘要 + 目录树变化)

  能力集: [DOCUMENT_UPLOAD, SOURCE_CITATION, HISTORY_CONTEXT, MODEL_SELECTION, NETDISK_VIEW]

WechatBackupAgent (微信备份助手)

WechatBackupAgent 工作流:

  用户导入聊天记录("分析我和客户的沟通重点", "查找某联系人历史记录")
  │
  ├── 1. 数据导入 (文件/本地目录/URL/WCDB)
  ├── 2. 联系人与消息索引
  ├── 3. 搜索与统计分析
  ├── 4. LLM 摘要与问题回答
  └── 5. 版本管理与结果展示

  能力集: [HISTORY_CONTEXT, MODEL_SELECTION, WECHAT_BACKUP]

六、Pipeline 流水线

复杂任务通过Pipeline将多个Agent串联为流水线,支持PROCESSOR(处理)和REVIEWER(审核)两种角色:

Pipeline流水线模式:

  ┌─────────────────────────────────────────────────────────────┐
  │  PipelineDefinition                                         │
  │                                                             │
  │  Stage 1 (PROCESSOR)    Stage 2 (PROCESSOR)                │
  │  ┌──────────────────┐   ┌──────────────────┐              │
  │  │ ResearchAgent    │──→│ WritingAgent     │──┐           │
  │  │ 搜集资料/调研   │   │ 撰写初稿         │  │           │
  │  └──────────────────┘   └──────────────────┘  │           │
  │                                                │           │
  │  Stage 3 (REVIEWER)     Stage 4 (PROCESSOR)   │           │
  │  ┌──────────────────┐   ┌──────────────────┐  │           │
  │  │ ReviewAgent      │←──│ 审核通过?        │←─┘           │
  │  │ 质量审核/打分   │   │ YES → 下一步     │              │
  │  │                  │──→│ NO  → 返回修改   │              │
  │  └──────────────────┘   └──────────────────┘              │
  │                                                │           │
  │  Stage 5 (PROCESSOR)                           │           │
  │  ┌──────────────────┐                          │           │
  │  │ PublishAgent     │←─────────────────────────┘           │
  │  │ 格式化/发布     │                                      │
  │  └──────────────────┘                                      │
  └─────────────────────────────────────────────────────────────┘
public class PipelineDefinition {

    private final List<PipelineStage> stages;

    @Data
    public static class PipelineStage {
        private String agentId;           // 执行的Agent
        private StageRole role;           // PROCESSOR / REVIEWER
        private Map<String, Object> config; // 阶段配置
        private String onRejectGoTo;      // 审核不通过跳转到哪个Stage
        private int maxIterations;        // 最大循环次数(防无限loop)
    }

    public enum StageRole {
        PROCESSOR,  // 处理者:执行具体任务
        REVIEWER    // 审核者:评估上一步输出质量
    }
}

// Pipeline执行引擎
@Service
public class PipelineExecutor {

    public Flux<PipelineEvent> execute(PipelineDefinition pipeline, String input) {
        return Flux.create(sink -> {
            PipelineContext ctx = new PipelineContext(input);

            for (PipelineStage stage : pipeline.getStages()) {
                Agent agent = agentRegistry.getAgent(stage.getAgentId());

                if (stage.getRole() == REVIEWER) {
                    ReviewResult result = executeReview(agent, ctx);
                    if (!result.approved()) {
                        // 跳转回指定Stage重新处理
                        ctx.jumpTo(stage.getOnRejectGoTo());
                        sink.next(PipelineEvent.rejected(stage, result.feedback()));
                        continue;
                    }
                }

                String output = executeProcessor(agent, ctx);
                ctx.addStageOutput(stage.getAgentId(), output);
                sink.next(PipelineEvent.completed(stage, output));
            }
            sink.complete();
        });
    }
}

七、AgentSpec 声明式配置

对于简单 Agent,可以先用 YAML/JSON 沉淀名称、提示词、能力、展示元数据等规格。当前实现侧重规格解析、配置合并和管理端维护,动态创建运行中 Agent 仍是演进点:

# agent-specs/translation-agent.yml
id: "translation-agent"
name: "多语言翻译助手"
description: "支持多语言翻译,保持原文风格和语境"
avatar: "translate"
systemPrompt: |
  你是一位专业的多语言翻译专家。
  规则:
  1. 准确传达原文含义,保持语境和风格
  2. 专业术语使用目标语言的通用翻译
  3. 如有歧义,提供多种翻译选项
  4. 保留原文格式(列表、段落等)

capabilities:
  - HISTORY_CONTEXT
  - MODEL_SELECTION

timeoutSeconds: 120
maxRetries: 1
modelId: null

display:
  category: "tool"
  categoryLabel: "工具类"
  suggestions:
    - "帮我翻译成英文"
AgentSpec 加载流程:

  应用启动
  │
  ├── AgentSpecLoader 扫描 agent-specs/*.yml
  │   ├── translator-agent.yml
  │   ├── writer-agent.yml
  │   └── ...
  │
  ├── 解析YAML → AgentSpec对象
  │
  ├── AgentSpecInitializer 合并配置
  │   └── 写入 AgentReactProperties.agents
  │       (供运行时配置链路读取)
  │
  └── 当前边界
      └── 动态注册到 AgentRegistry 仍是演进点

  优势:
  ┌──────────────────────────────────────────────┐
  │ · 非开发人员也能创建Agent (只写YAML)        │
  │ · 管理端维护: 创建/编辑/删除/手动reload    │
  │ · 版本管理: YAML文件纳入Git                │
  │ · 批量管理: 100+个简单Agent用YAML维护     │
  │ · 复杂Agent: 仍用Java实现,两种方式共存   │
  └──────────────────────────────────────────────┘

八、面试话术

面试话术:"我们设计了一个可扩展的Agent框架,核心是Agent接口定义了getId、getName、getCapabilities、chat等方法。新增Agent只需实现接口加@Component注解,利用Spring DI自动发现注入到AgentRegistry中——真正的零配置注册。目前已有100多个Agent分布在6大领域:创意、企业、教育、生活、效率、专业。每个Agent声明自己支持的Capability枚举,前端根据能力集动态渲染UI组件,比如Agent声明了IMAGE_UPLOAD能力,前端就自动显示图片上传区。"
面试话术:"对于复杂任务场景,我们设计了Pipeline流水线模式。多个Agent可以串联为处理链,支持PROCESSOR和REVIEWER两种角色。REVIEWER Agent负责质量把关,审核不通过可以驳回到之前的Stage重做,同时有maxIterations限制防止无限循环。此外,AgentSpec 把名称、提示词、模型、能力等配置沉淀为 YAML/JSON 规格,管理端支持创建、编辑、删除和手动 reload。这里我会把它讲成配置治理和动态 Agent 化的演进基础,而不是已经完整实现的文件热更新上线。"