100+ Agent 分6大领域、零配置注册、AgentCapability驱动UI、Pipeline流水线
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; }
}
零配置注册原理 (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安全校验 │
└──────────────────────────────────────────┘
每个Agent声明自己支持的能力,前端根据能力集动态渲染UI组件:
| # | Capability | 含义 | 前端UI效果 |
|---|---|---|---|
| 1 | DOCUMENT_UPLOAD | 文档上传 | 显示上传入口 |
| 2 | SOURCE_CITATION | 来源引用 | 展示引用来源面板 |
| 3 | HISTORY_CONTEXT | 历史上下文 | 启用多轮历史注入 |
| 4 | MODEL_SELECTION | 模型选择 | 模型下拉选择器 |
| 5 | WEB_CRAWL | 网页抓取 | 显示URL分析入口 |
| 6 | IMAGE_UPLOAD | 图片上传 | 显示图片上传按钮 |
| 7 | BOOK_SCRAPE | 小说抓取分析 | 显示抓取工具入口 |
| 8 | NETDISK_VIEW | 网盘视图 | 显示网盘面板 |
| 9 | PHOTO_GALLERY | 相册展示 | 显示相册面板 |
| 10 | PHOTO_UPLOAD | 照片上传 | 显示照片批量上传 |
| 11 | PHOTO_MANAGEMENT | 照片管理 | 显示标签/相册/删除等操作 |
| 12 | RESUME_SCREENING | 简历筛选 | 显示筛选工作台 |
| 13 | WECHAT_BACKUP | 微信备份 | 显示微信备份面板 |
| 14 | CHECKLIST | 清单 | 显示Checklist组件 |
| 15 | WEB_SEARCH | 网页搜索 | 显示搜索入口 |
| 16 | BROWSER_AUTOMATION | 浏览器自动化 | 显示自动化能力入口 |
| 17 | CHANNEL_MANAGEMENT | 渠道管理 | 显示渠道管理入口 |
| 18 | CONTENT_LIBRARY | 内容库 | 显示内容库面板 |
| 19 | CONTENT_UPLOAD | 内容上传 | 显示导入入口 |
| 20 | CONTENT_SEARCH | 内容搜索 | 显示检索入口 |
| 21 | CONTENT_READER | 内容阅读器 | 显示阅读/播放组件 |
| 22 | PLAN_MODE | 任务模式 | 显示Plan/Act切换 |
| 23 | QUICK_ASK | 临时提问 | 显示闪问入口 |
| 24 | FILE_UPLOAD | 文件上传 | 显示通用附件上传入口 |
| 25 | VOICE_CHAT | 语音对话 | 显示录音与TTS播放入口 |
| 26 | BACKGROUND_TASK | 后台任务 | 显示任务状态与取消入口 |
| 27 | IMAGE_GENERATION | 图片生成 | 显示图片生成结果预览 |
能力驱动UI的工作原理:
后端返回:
{
"agentId": "photo-agent",
"capabilities": ["IMAGE_UPLOAD", "MODEL_SELECTION", "PHOTO_GALLERY"]
}
前端动态渲染:
┌───────────────────────────────────────┐
│ ChatPanel │
│ ┌─────────────────────────────────┐ │
│ │ [图片上传区] ← IMAGE_UPLOAD │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ 模型: [GPT-4V ▼] ← MODEL_SEL │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ 输入框... [发送] │ │
│ │ 相册面板... ← PHOTO_GALLERY │ │
│ └─────────────────────────────────┘ │
└───────────────────────────────────────┘
| 领域 | Domain枚举 | Agent数量 | 代表Agent |
|---|---|---|---|
| 创意内容 | CREATIVE | 18+ | PhotoAgent、VideoScriptAgent、CopywritingAgent、LogoDesignAgent |
| 企业办公 | ENTERPRISE | 22+ | ContractReviewAgent、MeetingSummaryAgent、OKRAgent、HRAssistant |
| 教育培训 | EDUCATION | 15+ | TutorAgent、QuizGeneratorAgent、PaperReviewAgent、LanguageCoach |
| 生活服务 | LIFESTYLE | 12+ | TravelPlannerAgent、RecipeAgent、HealthAdvisor、FitnessCoach |
| 效率工具 | PRODUCTIVITY | 20+ | CodeReviewAgent、TranslationAgent、DataAnalysisAgent、EmailDraft |
| 专业领域 | SPECIALIZED | 15+ | 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个 │ │ │ └───────────────────────────────────────────────────────────┘
PhotoAgent 工作流:
用户上传图片 + 指令("去除背景", "美化人像", "风格迁移")
│
├── 1. 图片分析 (Vision Model识别内容)
├── 2. 指令解析 (NLU理解用户意图)
├── 3. 工具选择 (背景移除/美颜/滤镜/裁剪)
├── 4. 图片处理 (调用对应图像处理API)
└── 5. 结果返回 (处理后图片 + 操作说明)
能力集: [PHOTO_GALLERY, PHOTO_UPLOAD, PHOTO_MANAGEMENT, MODEL_SELECTION]
NetDiskAgent 工作流:
用户指令("帮我整理下载文件夹", "找到上周的合同文档")
│
├── 1. 意图识别 (搜索/整理/分类/清理)
├── 2. 文件扫描 (遍历目标目录)
├── 3. 智能分类 (按类型/日期/项目自动归类)
├── 4. 执行操作 (移动/重命名/压缩/删除)
└── 5. 生成报告 (操作摘要 + 目录树变化)
能力集: [DOCUMENT_UPLOAD, SOURCE_CITATION, HISTORY_CONTEXT, MODEL_SELECTION, NETDISK_VIEW]
WechatBackupAgent 工作流:
用户导入聊天记录("分析我和客户的沟通重点", "查找某联系人历史记录")
│
├── 1. 数据导入 (文件/本地目录/URL/WCDB)
├── 2. 联系人与消息索引
├── 3. 搜索与统计分析
├── 4. LLM 摘要与问题回答
└── 5. 版本管理与结果展示
能力集: [HISTORY_CONTEXT, MODEL_SELECTION, WECHAT_BACKUP]
复杂任务通过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();
});
}
}
对于简单 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实现,两种方式共存 │
└──────────────────────────────────────────────┘