投顾综合 Agent 端到端系统流程图
一句话定义:该流程图描述了一个从投顾输入到仪表盘输出的端到端系统架构,涵盖入口调度、四阶段执行 pipeline、数据源、存储及贯穿事件,并强调防幻觉与能力边界两条关键设计红线。
关键知识点
1. 入口调度层(ENTRY)
- 概念:系统接收用户输入并进行意图识别、路由与任务规划的第一层。
- 简要解释:
IntentRouter利用 ReActAgent 判断输入是否清晰、是否在能力范围内,若需澄清或超范围则触发异常处理;通过SkillSelector和Planner选择技能并规划任务,最后由ToolkitConfigurator配置工具集。 - 例子:用户输入“帮我分析股票 A 的近期走势”,若“股票 A”存在歧义(如多公司同名),
IntentRouter会触发SymbolLookupTool进行消歧。
2. 四阶段执行 pipeline(PIPE)
- 概念:从数据检索到仪表盘输出的核心处理流程。
- 简要解释:
DataRetriever获取数据 →Analyzer分析 →DashboardComposer组装仪表盘 → 回填数据 → Schema 校验 → 审计 → 最终输出。 - 例子:
DataRetriever从内部库和第三方获取股价数据,Analyzer计算趋势指标,DashboardComposer生成可视化组件。
3. 数据源与存储(SRC)
- 概念:系统依赖的数据来源与缓存层。
- 简要解释:包括内部库(如数据库)、第三方 API、Redis 缓存和 Elasticsearch 索引;通过虚线连接执行层,标注交互方式如
Resilience4j + 缓存或RAG 混合检索。 - 例子:
DataRetriever通过Resilience4j容错机制从第三方 API 获取数据,若失败则降级使用缓存数据。
4. 贯穿事件(SSE)
- 概念:系统在运行过程中通过 Server-Sent Events 实时推送的事件流。
- 简要解释:包括
progress(每阶段进度)、token(LLM 输出 token)、tool(工具调用)、clarify(澄清请求)、dashboard(仪表盘更新)、error(错误信息)。 - 例子:当
Analyzer正在计算时,客户端收到progress事件,显示“分析中…”。
5. 关键设计红线
- 概念:系统架构中必须遵守的两条核心约束。
- 简要解释:
- 防幻觉:数值只来自数据源 →
dataSeries→ LLM 仅给dataRef→ Java 回填 → Schema + 交叉核对。 - 能力边界:TaskList/MetaTool/ToolGroup/基础 Skill 用
ReActAgent;Plan Mode / 声明式 Subagent / skill 脚本执行需HarnessAgent。
- 防幻觉:数值只来自数据源 →
- 例子:LLM 在生成仪表盘时,不能直接输出数值,而是输出
dataRef引用,由 Java 后端从数据源回填实际数值,防止 LLM 编造数据。
重要公式/代码
%%{init: {'theme':'neutral','flowchart':{'curve':'basis'}}}%%
flowchart TB
subgraph ENTRY["入口调度层"]
IR["IntentRouter<br/>ReActAgent + 结构化输出 → IntentResult<br/>SymbolLookupTool 标的消歧"]
Decision{"意图清晰?<br/>能力范围内?"}
Clarify["澄清等待<br/>classDef warn"]
Reject["拒答<br/>classDef warn"]
SS["SkillSelector<br/>TaskList / MetaTool / ToolGroup"]
Planner["Planner<br/>Plan Mode / 声明式 Subagent"]
TC["ToolkitConfigurator<br/>skill 脚本执行"]
end
subgraph PIPE["四阶段执行 pipeline"]
DR["DataRetriever<br/>Resilience4j + 缓存"]
Analyzer["Analyzer<br/>RAG 混合检索"]
DC["DashboardComposer<br/>LLM 输出 dataRef"]
FillBack["数据回填<br/>Java 执行"]
SchemaCheck["Schema 校验"]
Audit["审计"]
Output["仪表盘输出"]
end
subgraph SRC["数据源 / 存储"]
Internal["内部库"]
ThirdParty["第三方"]
Redis["Redis 缓存"]
ES["Elasticsearch"]
end
IR --> Decision
Decision -- 需要澄清 --> Clarify
Decision -- 超范围 --> Reject
Decision -- 清晰 & 范围内 --> SS
SS --> Planner --> TC
TC --> DR
DR -.-> Internal
DR -.-> ThirdParty
DR -.-> Redis
DR -.-> ES
DR --> Analyzer --> DC --> FillBack --> SchemaCheck --> Audit --> Output
classDef warn fill:#fee2e2,stroke:#dc2626,color:#dc2626;
class Clarify,Reject warn;
常见误区
- ❌ 误将
IntentRouter的判定节点直接连接到DataRetriever,忽略了中间的SkillSelector、Planner和ToolkitConfigurator。 - ❌ 认为 LLM 可以直接输出最终数值,违反了“防幻觉”红线(应输出
dataRef由 Java 回填)。 - ❌ 混淆 SSE 事件与流程图节点,将
progress等事件当作系统组件而非通信机制。 - ❌ 遗漏数据源子图(SRC)及其与执行层的虚线连接,导致数据流不完整。
- ❌ 未标注判定节点的条件分支文字(如“需要澄清”、“超范围”),使流程图失去可读性。