---
title: "投顾综合 Agent 端到端系统流程图"
slug: "agent-120f7601"
contentType: "markdown"
sourceFormat: "markdown"
audience: "professional"
canonical: "https://card-craft.mtbot.top/s/knowledge/agent-120f7601"
updated: "2026-07-27T04:31:17.229Z"
---

# 投顾综合 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 编造数据。

## 重要公式/代码

```mermaid
%%{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）及其与执行层的虚线连接，导致数据流不完整。
- ❌ 未标注判定节点的条件分支文字（如“需要澄清”、“超范围”），使流程图失去可读性。
