Skip to content

JIAF-JIAF/LangGraphAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LangGraph 倚 Agent 智胜䜓框架

基于 LangGraph 的䌁䞚级倚 Agent 智胜䜓框架采甚 Orchestrator-Worker 猖排暡匏集成知识库检玢RAG、MCP 工具调甚、技胜系统和倚蜮对话胜力。支持钉钉机噚人集成提䟛可视化配眮䞭心。


栞心讟计

1. 统䞀流匏思考组件 — 䞚务层零感知

讟计了 ThinkingStreamer 组件通过 LangGraph 原生 get_stream_writer() + contextvars 机制圚任意调甚深床自劚获取 writer。䞚务层Detector / Recognizer / Expert通过 stream_llm() / stream_agent() 接口调甚完党䞍感知流匏/同步差匂笊合单䞀职莣原则。

架构决策结构化蟓出情绪分析 JSON、意囟识别 JSON䞎自然语蚀思考过皋走䞍同路埄 — 前者通过 stream_llm_structured() 静默收集后者通过 stream_llm() 逐 token 掚送 STEP_THINKING 事件。甚户看到的是节点 COMPLETED 摘芁 + 实时思考过皋而非原始 JSON。

2. Manifest 驱劚的插件化架构 — 新增 Expert 零改劚框架

所有 Expert 通过 PLUGIN.yaml 声明匏配眮框架启劚时自劚完成囟节点泚册add_node + add_edge、路由映射CATEGORY_EXPERT_MAP、胜力描述DECOMPOSE_PROMPT、意囟泚册。新增 Expert 只需䞉步创建插件目圕 → 继承 ExpertPlugin → 泚册框架代码零改劚。

架构决策将原本硬猖码的映射关系䞓家类别→节点、意囟→路由、胜力描述党郚从 Manifest 劚态生成消陀了新增 Expert 时的框架代码䟵入。

3. Orchestrator-Worker 猖排 — 波次调床支持任务䟝赖

Planner 拆分䞺 Decompose分解和 Dispatch调床䞀䞪节点。Dispatch 按波次调床独立子任务并行 Send䟝赖子任务按波次䞲行埪环盎到党郚完成。每䞪 complex_plan 意囟独立调甚 LLM 分解LLM 泚意力 100% 聚焊单䞪目标分解莚量䞍受其他意囟䞊䞋文干扰。

架构决策Expert 执行完回到 Dispatch而非盎接到 Merge通过 __subtask_idx__ 路由标记区分调床来源支持倚波次䟝赖调床。

4. 分层挏斗路由 — 先快后慢、先䜎成本后高智胜

意囟识别采甚䞉级挏斗L1 关键词匹配<1ms→ L2 向量语义保留入口→ L3 LLM Function Calling1-2s。意囟类型从倚䞪来源劚态泚册技胜 SKILL.md、知识库 databases.json、MCP 工具 registry.py无需硬猖码。

5. 暡块化 RAG — 可插拔组件讟计

玢匕噚ChromaDB / Milvus、检玢噚Simple / Reranking / Filtered、生成噚Stuff / MapReduce / Refine均䞺可插拔组件支持灵掻组合。路由噚支持 LLM 智胜选择知识库查询扩展通过 LLM 生成同义查询词合并去重。


系统架构

┌─────────────────────────────────────────────────────────────────────┐
│                          Client (React + Vite)                      │
│              Chat UI · Config Panel · File Preview                  │
└──────────────────────────────┬──────────────────────────────────────┘
                               │ SSE / REST
┌──────────────────────────────▌──────────────────────────────────────┐
│                       Gateway (Nginx)                                │
└──────┬──────────┬──────────┬──────────┬─────────────────────────────┘
       │          │          │          │
┌──────▌───┐ ┌───▌────┐ ┌──▌───┐ ┌───▌──────┐
│  Flask    │ │  MCP   │ │  DB  │ │  Consul  │
│  App      │ │ Server │ │ API  │ │ Registry │
└──────┬───┘ └───┬────┘ └──┬───┘ └──────────┘
       │         │         │
       ▌         ▌         ▌
┌──────────────────────────────────────────────────────────────────────┐
│                     LangGraph StateGraph                             │
│                                                                      │
│  ┌──────────┐   ┌──────────┐   ┌───────────┐   ┌────────────────┐  │
│  │ Feeling  │──▶│ Intent   │──▶│ Supervisor │──▶│ Planner        │  │
│  │ Detect   │   │ Recognize│   │           │   │ Decompose      │  │
│  └──────────┘   └──────────┘   └───────────┘   └───────┬────────┘  │
│                                                        │            │
│                                               ┌────────▌────────┐   │
│                                               │ Planner Dispatch │   │
│                                               │ (波次调床)       │   │
│                                               └──┬──┬──┬──┬────┘   │
│                    ┌──────────────────────────────┘  │  │  │        │
│              ┌─────▌─────┐  ┌──────▌─────┐  ┌─────▌─────┐  ┌────▌───┐
│              │ MCP       │  │ Skill      │  │ RAG       │  │ Chat   │
│              │ Expert    │  │ Expert     │  │ Expert    │  │ Expert │
│              └─────┬─────┘  └──────┬─────┘  └─────┬─────┘  └───┬────┘
│                    └───────────────┬┎───────────────┘            │
│                               ┌───▌──────────────────────────────┘
│                               │ Merge Node (合并涊色)             │
│                               └──────────────────────────────────┘
└──────────────────────────────────────────────────────────────────────┘
       │              │              │
┌──────▌───┐  ┌──────▌──────┐  ┌───▌────┐  ┌──────────┐
│ ChromaDB  │  │ MCP Tools   │  │ Skills │  │ Redis    │
│ Milvus    │  │ (钉钉/倩气)  │  │        │  │ Checkpoint│
└──────────┘  └─────────────┘  └────────┘  └──────────┘

栞心流皋

完敎节点流皋

sequenceDiagram
    participant User
    participant Feeling as feeling_detect
    participant Intent as intent_recognize
    participant Supervisor as supervisor
    participant Planner as planner_decompose
    participant Dispatch as planner_dispatch
    participant MCP as mcp_expert
    participant Skill as skill_expert
    participant RAG as rag_expert
    participant Chat as chat_expert
    participant Merge as merge

    User->>Feeling: query
    Feeling->>Intent: feeling
    Intent->>Supervisor: intents
    Supervisor->>Supervisor: 重眮 agent_results / planned_subtasks
    Supervisor->>Planner: 统䞀路由
    Planner->>Planner: 可执行意囟盎接构建子任务䞍调 LLM
    Planner->>Planner: complex_plan 意囟 LLM 独立分解
    Planner->>Planner: 合并䞺统䞀子任务列衚
    Planner->>Dispatch: planned_subtasks
    loop 波次调床埪环
        Dispatch->>Dispatch: 计算就绪子任务depends_on 已满足
        Dispatch->>MCP: Send并行
        Dispatch->>Skill: Send并行
        Dispatch->>RAG: Send并行
        Dispatch->>Chat: Send并行
        MCP->>Dispatch: agent_results
        Skill->>Dispatch: agent_results
        RAG->>Dispatch: agent_results
        Chat->>Dispatch: agent_results
    end
    Dispatch->>Merge: 党郚完成
    Merge->>Merge: 合并结果 + LLM 涊色
    Merge-->>User: 最终回答
Loading

执行瀺䟋

混合可执行意囟 — 甚户蟓入"查杭州倩气画架构囟"

甚户蟓入 → intent_recognize → [mcp: 查倩气, skill: 画架构囟]
         → supervisor → planner_decompose
         → 可执行意囟盎接构建子任务䞍调 LLM
             [0] mcp:   查杭州倩气      depends_on: []
             [1] skill: 画架构囟        depends_on: []
         → planner_dispatch第1波ready=[0,1] → 并行 Send
         → mcp_expert + skill_expert 并行执行
         → planner_dispatch第2波党郚完成 → merge
         → LLM 涊色 → 最终回答

倍杂任务规划 — 甚户蟓入"创建䞀䞪圚线衚栌应甚"

甚户蟓入 → intent_recognize → [complex_plan]
         → supervisor → planner_decompose
         → LLM 独立分解 complex_plan
             [0] chat: 分析栞心需求        depends_on: []
             [1] chat: 讟计数据暡型         depends_on: [0]
             [2] chat: 规划技术选型         depends_on: [0]
             [3] chat: 敎合蟓出匀发计划      depends_on: [1,2]
         → planner_dispatch 波次调床
             第1波[0] → chat_expert
             第2波[1,2] → chat_expert × 2并行
             第3波[3] → chat_expert
         → merge → LLM 涊色 → 最终回答

栞心暡块

1. 意囟识别Intent Recognition

采甹 分层挏斗路由架构先快后慢、先䜎成本后高智胜

层级 策略 延迟 诎明
L1 关键词/正则匹配 <1ms 倄理固定指什/help, exit, yes/no
L2 向量语义匹配 30-100ms 保留入口倄理同义改写
L3 LLM Function Calling 1-2s 倄理倍杂请求和倚意囟

意囟类型

类别 枚䞟倌 诎明 瀺䟋
RAG rag 知识库检玢 rag_exams, rag_politics
Skill skill 技胜执行 skill_drawio-skill, skill_analysis
MCP mcp MCP 工具调甚 mcp_weather, mcp_dingtalk_schedule
Plan complex_plan 倍杂任务猖排 Planner 分解 + 波次调床
Chat chat 通甚对话 Chat Expert 涊色
System system 系统指什 system_help, system_exit

意囟劚态泚册系统启劚时自劚从倚䞪来源泚册意囟类型 — 技胜SKILL.md、知识库databases.json、MCP 工具tools/registry.py无需硬猖码。

2. 倚 Agent 协䜜Multi-Agent

Orchestrator-Worker 暡匏Planner 拆分䞺 Decompose分解和 Dispatch调床䞀䞪节点

  • PlannerDecompose可执行意囟盎接构建子任务无 LLMcomplex_plan 意囟独立调甚 LLM 分解
  • PlannerDispatch按波次调床独立子任务并行 Send䟝赖子任务按波次䞲行埪环盎到党郚完成

Expert 节点

Expert 类别 工具集 执行流皋
mcp_expert MCP MCP 劚态工具 + mcp_execute 兜底 ReAct 埪环选工具→提参→执行
skill_expert Skill Skill 劚态工具 + skill_execute 兜底 ReAct 埪环选技胜→提参→执行
rag_expert RAG knowledge_search + knowledge_generate ReAct 埪环选知识库→检玢→生成
chat_expert Chat 无工具纯内容生成 盎接对话

3. Manifest 驱劚的插件化架构

新增 Expert 只需䞉步框架代码零改劚

  1. 创建插件目圕含 PLUGIN.yaml + plugin.py
  2. 继承 ExpertPlugin实现 meta + execute
  3. registry.register(YourPlugin())

框架自劚完成囟泚册add_node + add_edge、路由映射CATEGORY_EXPERT_MAP、胜力描述DECOMPOSE_PROMPT、意囟泚册。

PLUGIN.yaml 瀺䟋MCP Expert

name: mcp_expert
description: 倖郚工具调甚倩气查询、钉钉日皋、消息掚送等
version: "1.0.0"

expert:
  category: mcp
  icon: 🔧
  label: 工具调甚 Agent
  priority: 100

routing:
  target_format: "mcp:{tool_name}"
  target_prefix: "mcp:"
  aliases: {}
  default_fallback: false

intents:
  dynamic: true    # 运行时从 MCP 工具列衚劚态发现
  static: []

prompt:
  capability_template: "mcp: {description}。圓前可甚工具{tools}"

4. 暡块化 RAG

可插拔组件讟计支持灵掻组合

组件 实现
玢匕噚 ChromaIndexer, MilvusIndexer
检玢噚 SimpleVectorRetriever, RerankingRetriever, FilteredRetriever
生成噚 StuffGenerator, MapReduceGenerator, RefineGenerator
路由噚 SimpleRouter, LLMRouter智胜选择知识库
查询扩展 LLM 生成同义查询词合并倚次检玢结果去重

5. MCP 工具服务

独立郚眲的 MCP 服务噚基于 Streamable HTTP 协议

  • 倩气查询get_weather, weather_recommend
  • 钉钉集成日皋创建/查询/删陀、埅办事项管理
  • 衚单提亀submit_form
  • 劚态扩展通过 tools/registry.py 泚册新工具自劚暎露䞺 MCP 胜力

6. 技胜系统Skill System

基于 SKILL.md 的技胜匹配和执行匕擎

技胜 诎明
drawio-skill 生成 Draw.io 架构囟/流皋囟支持倚种样匏预讟
tldraw-skill 生成 tldraw 癜板绘囟
data-analysis 数据分析䞎可视化
trip-plan 旅行规划

技胜匹配支持向量语义玢匕自劚匹配最盞关的技胜。

7. 状态持久化

通过 LangGraph Checkpoint 机制实现䌚话状态持久化

存傚 诎明
MemoryCheckpointSaver 内存存傚匀发调试甚
RedisCheckpointSaver Redis 持久化生产环境掚荐

8. 情绪感知

6 种情绪检测劚态曎新 Prompt 语气风栌

情绪 诎明 兞型关键词
default 䞭性 —
upbeat 积极向䞊 加油、努力、奋斗
angry 愀怒䞍满 生气、投诉、差评
cheerful 欢快喜悊 倪棒了、厉害、完矎
depressed 消极䜎萜 隟过、焊虑、迷茫
friendly 友奜亲切 谢谢、麻烊䜠、蟛苊了

9. SSE 流匏响应

对霐 AG-UI (Agent-User Interaction) 协议标准

事件类型 诎明
STEP_STARTED 节点匀始执行
STEP_THINKING 节点思考过皋逐 token 掚送打字机效果
STEP_FINISHED 节点执行完成
TEXT_MESSAGE_CONTENT LLM 逐 token 蟓出最终回答打字机效果党速
RUN_FINISHED 敎䜓运行完成
RUN_ERROR 运行匂垞

配眮䞭心

基于 React 的可视化配眮管理界面䞉䞪功胜面板

数据库管理

  • 创建 / 删陀知识库
  • 文档䞊䌠支持拖拜栌匏PDF / Word / Excel / TXT / MD䞊䌠后自劚进行 RAG 向量化玢匕
  • 文档列衚管理䞎删陀
  • 内眮文件预览䟧栏
    • Excel通过纵暪 SDK 圚线预览
    • Word通过钉钉仓颉猖蟑噚圚线预览
    • PDF通过 react-pdf 枲染预览
    • 纯文本盎接枲染

MCP 配眮

  • 添加 / 删陀 MCP 服务噚配眮名称、URL、协议
  • 连接测试
  • 服务噚状态监控connected / disconnected

Skill 管理

  • 通过 URL 安装技胜自劚䞋蜜 SKILL.md 并泚册
  • 已安装技胜列衚查看䞎删陀

钉钉集成

钉钉机噚人DingTalk Stream

通过 dingtalk-stream SDK 实现钉钉机噚人实时消息收发

  • Stream 长连接基于 WebSocket 的钉钉 Stream API无需公眑回调地址
  • 消息去重基于 message_id 去重防止重倍倄理
  • 䌚话管理按甚户 ID 绎技独立䌚话支持倚蜮对话
  • 自劚回倍接收甚户消息 → LangGraph Agent 倄理 → 自劚回倍

纵暪 SDK衚栌预览

钉钉圚线衚栌预览胜力支持 Excel 文件圚钉钉内盎接打匀和猖蟑。

仓颉猖蟑噚文字预览

钉钉文档预览胜力支持 Word 等文档圚钉钉内盎接查看。

钉钉 MCP 工具

钉钉盞关 MCP 工具支持通过自然语蚀操䜜钉钉功胜

工具 诎明
dingtalk_schedule_create 创建日皋支持时闎、参䞎者、地点
dingtalk_schedule_query 查询日皋列衚
dingtalk_schedule_delete 删陀日皋
dingtalk_todo 管理埅办事项

䜿甚瀺䟋

甚户: "垮我创建明倩䞋午3点的䌚议日皋"
  → intent_recognize → mcp:dingtalk_schedule_create
  → mcp_expert → 调甚钉钉 API 创建日皋
  → merge → "已䞺悚创建明倩䞋午3点的䌚议日皋"

技术栈

后端

类别 技术
Web 框架 Flask + Flask-CORS + Flask-Limiter
Agent 框架 LangGraph 1.0+ (StateGraph, Checkpoint, Send API)
LLM 集成 LangChain 1.0+ / OpenAI SDK (兌容 Qwen, GPT 等)
向量数据库 ChromaDB / Milvus Lite
MCP 协议 FastMCP + Streamable HTTP
钉钉集成 dingtalk-stream (机噚人) + 纵暪 SDK (衚栌预览) + 仓颉猖蟑噚 (文字预览)
状态持久化 Redis / Memory Checkpoint
文档解析 pypdf, python-docx, pandas, openpyxl
服务泚册 Consul
容噚化 Docker + Docker Compose

前端

类别 技术 诎明
框架 React 18 + Vite 5 SPASSE 流匏枲染
状态管理 Zustand 5 蜻量级状态管理替代 Redux
HTTP Axios REST API 调甚
文件预览 exceljsExcel 枲染、mammoth-plus-plus-2Word 蜬 HTML、react-pdfPDF 枲染 配眮䞭心内眮预览䟧栏
钉钉预览 纵暪 SDK衚栌、仓颉猖蟑噚文字 钉钉内盎接打匀/猖蟑
郚眲 Nginx + Docker 反向代理 + 静态资源

关键讟计决策

1. ThinkingStreamer — 䞚务层䞎流匏细节解耊

通过 get_stream_writer() + contextvars 机制ThinkingStreamer 内郚自劚管理 writer䞚务层通过 stream_llm() / stream_llm_structured() / stream_agent() 接口调甚完党䞍感知流匏/同步差匂。结构化蟓出䞎自然语蚀思考走䞍同路埄避免原始 JSON 暎露给甚户。

2. Orchestrator-Worker 暡匏 — Planner 拆分

Planner 拆分䞺 Decompose分解和 Dispatch调床䞀䞪节点而非单䞀 Agent

  • Decompose 只莟莣分解任务䞍执行
  • Dispatch 按波次调床支持䟝赖关系
  • Expert 执行完回到 Dispatch而非盎接到 Merge

3. 独立分解策略 — LLM 泚意力聚焊

每䞪 complex_plan 意囟独立调甚 LLM 分解而非合并分解

  • LLM 泚意力 100% 聚焊单䞪目标
  • 分解莚量䞍受其他意囟䞊䞋文干扰

4. __subtask_idx__ 路由标记 — 区分调床来源

通过 __subtask_idx__ 区分 Expert 的调床来源

  • Supervisor 调床 → Expert → merge
  • Planner 调床 → Expert → planner_dispatch回到波次调床

5. Manifest 驱劚 — 消陀硬猖码

所有原本硬猖码的映射关系CATEGORY_EXPERT_MAP、PLANNER_DISPATCH_TARGETS、DECOMPOSE_PROMPT 胜力描述等均从 PLUGIN.yaml 劚态生成新增 Expert 时框架代码零改劚。

6. MCP 客户端/服务端分犻

mcp_server/独立 MCP 服务噚FastMCP + 工具插件䞎 server/modules/mcp/MCP 客户端连接远皋 MCP 服务噚获取工具职莣分犻避免客户端逻蟑䞎服务端代码耊合。

7. Planner 双分解噚 — 可执行意囟零 LLM 匀销

PlannerDecompose 节点内郚委托给䞀䞪对称分解噚

分解噚 适甚意囟 方匏 LLM 匀销
ExecutableIntentDecomposer mcp/skill/rag/chat/system 规则映射同类别合并䞺䞀䞪子任务 0
ComplexPlanDecomposer complex_plan LLM 独立分解结构化蟓出TaskDecomposition 1-2s

可执行类别从 PluginRegistry 劚态获取新增插件时无需修改分解噚代码。ComplexPlanDecomposer 䜿甚 build_task_decomposition_model() 运行时劚态生成 Pydantic 暡型将 Manifest 䞭的类别选项和 target 栌匏描述泚入 Field确保 LLM 蟓出䞎泚册插件䞀臎。

8. MultiAgentState 自定义 Reducer — 并行安党状态合并

LangGraph Send API 并行分发 Expert 时倚䞪节点同时写入 state 需芁自定义 reducer 解决冲突

字段 Reducer 诎明
agent_results add_agent_results 并行 Expert 远加结果Supervisor 返回 None 重眮解决跚请求环积问题
planned_subtasks keep_last 只读字段并行节点倌䞍变取最后䞀䞪即可
__dispatch_complete__ keep_last 调床完成标记取最后䞀䞪
chat_history add_messages_with_truncation 原生保留 + 超长裁剪

9. AgentContext — 统䞀䞊䞋文管理

参考 Context Engineering 最䜳实践将 Agent 执行所需的甚户信息、䌚话信息、执行䞊䞋文、运行时配眮统䞀封装䞺 AgentContextPydantic BaseModel避免参数爆炞。各暡块通过 context 获取所需信息而非逐层䌠递参数。

10. ConfigAwareAgentExecutor — 解决 LangChain config 䌠递猺倱

LangChain Classic 的 AgentExecutor 圚调甚 tool.run() 时䞍䌠递 RunnableConfig富臎工具无法从 config.configurable 获取 skill_name 等配眮。通过重写 _perform_agent_action 方法圚工具调甚时泚入 config确保 Skill 等劚态工具胜正确获取运行时配眮。

11. 文档加蜜噚工厂 — 可扩展的文档解析

DocumentLoaderFactory 采甚泚册暡匏每种文件栌匏对应䞀䞪加蜜噚

栌匏 加蜜噚 解析库
PDF PdfLoader pypdf
Word DocxLoader python-docx
Excel ExcelLoader pandas + openpyxl
TXT/MD TextLoader 原生读取

新增栌匏只需 DocumentLoaderFactory.register_loader(extension, LoaderClass) 泚册。

12. 统䞀流匏事件协议 — StreamEvent

定义 Agent astream 的统䞀蟓出栌匏 StreamEvent(token, event_type, metadata)所有实现 astream 的 Agent 必须遵埪歀协议。ThinkingStreamer 无需做栌匏刀断盎接读取 token 字段。圓前 Expert Agent 仍䜿甚同步调甚invoke未来实现 astream 后可支持 ReAct 埪环䞭的逐 token 思考蟓出。

13. SSE 事件倄理噚 — 策略映射消陀 if-elif

SSEEventProcessor 通过 _STATUS_TO_EVENT 映射衚将 StepStatus 蜬换䞺 EventType消陀 if-elif 铟。倄理䞉种流暡匏updates / custom / messages统䞀蟓出 AG-UI 标准事件。

14. API 限流 — Flask-Limiter 集成

基于 Flask-Limiter 实现可配眮的 API 限流支持从环境变量读取限流规则RATE_LIMIT_ENABLED、RATE_LIMIT_DEFAULT按 IP 地址限流防止接口滥甚。


项目结构

LangGraphAgent/
├── mcp_server/                      # MCP 服务噚独立郚眲
│   ├── mcp_server.py                # FastMCP 服务噚栞心Streamable HTTP
│   ├── config.py                    # MCP 服务噚配眮
│   ├── logger.py                    # 日志暡块
│   ├── start.py                     # 启劚脚本
│   └── tools/                       # 工具插件目圕
│       ├── registry.py              # 工具泚册衚
│       ├── weather_plugin.py        # 倩气查询
│       ├── weather_recommend_plugin.py  # 倩气掚荐
│       ├── submit_form_plugin.py    # 衚单提亀
│       └── dingtalk/                # 钉钉工具
│           ├── dingtalk_client.py   # 钉钉 API 客户端
│           ├── dingtalk_schedule_create_plugin.py
│           ├── dingtalk_schedule_query_plugin.py
│           ├── dingtalk_schedule_delete_plugin.py
│           └── dingtalk_todo_plugin.py
│
├── server/                          # Python 后端服务
│   ├── app.py                       # Flask 䞻应甚入口
│   ├── db.py                        # 向量库管理 API
│   ├── DingWebHook.py               # 钉钉 Stream 机噚人入口
│   ├── docker-compose.yml           # Docker Compose 猖排
│   ├── requirements.txt             # Python 䟝赖
│   ├── config/                      # 配眮文件
│   │   ├── config.yaml              # 䞻配眮
│   │   └── mcp_servers.yaml         # MCP 服务噚地址配眮
│   ├── modules/                     # 栞心功胜暡块
│   │   ├── langgraph/               # LangGraph 状态囟
│   │   │   ├── agent.py             # 䞻入口组件初始化、插件泚册、囟猖译
│   │   │   ├── state.py             # 状态定义
│   │   │   ├── context_builder.py   # 䞊䞋文构建噚RAG 文档/对话历史 → prompt
│   │   │   ├── config_aware_executor.py  # ConfigAwareAgentExecutor修倍 config 䌠递
│   │   │   ├── nodes/               # 前眮节点feeling, intent, steps
│   │   │   └── multi_agent/         # 倚 Agent 协䜜暡块
│   │   │       ├── graph.py         # 䞻囟构建噚
│   │   │       ├── states.py        # MultiAgentState自定义 reducer
│   │   │       ├── thinking_streamer.py  # 统䞀流匏思考组件
│   │   │       ├── manifest.py      # PLUGIN.yaml 解析噚 + 数据类
│   │   │       ├── plugin_base.py   # ExpertPlugin 抜象基类
│   │   │       ├── plugin_registry.py # PluginRegistry 插件泚册衚
│   │   │       ├── meta.py          # ExpertMeta 数据类
│   │   │       ├── helpers.py       # 插件公共工具凜数
│   │   │       ├── expert_agent_factory.py  # 领域䞓粟 Agent 工厂工具隔犻
│   │   │       ├── nodes/           # Supervisor + Merge 节点
│   │   │       ├── planner/         # 任务规划暡块
│   │   │       │   ├── decompose.py       # 分解节点纯猖排者
│   │   │       │   ├── dispatch.py        # 波次调床节点Send API 并行
│   │   │       │   ├── executable_intent_decomposer.py  # 可执行意囟分解噚规则映射
│   │   │       │   ├── complex_plan_decomposer.py       # 倍杂意囟分解噚LLM
│   │   │       │   ├── models.py          # Pydantic 结构化蟓出暡型劚态生成
│   │   │       │   └── prompts.py         # 分解 Prompt 暡板
│   │   │       ├── tools/           # Expert 工具适配噚
│   │   │       │   ├── mcp_tools.py       # MCP 工具劚态适配
│   │   │       │   ├── rag_tools.py       # RAG 工具封装
│   │   │       │   └── skill_tools.py     # Skill 工具劚态适配
│   │   │       └── plugins/         # 䞚务插件
│   │   │           ├── mcp_plugin/  # MCP 插件PLUGIN.yaml + plugin.py
│   │   │           ├── rag_plugin/  # RAG 插件
│   │   │           ├── skill_plugin/ # Skill 插件
│   │   │           └── chat_plugin/ # Chat 插件
│   │   ├── executors/               # 意囟执行噚Base → MCP/RAG/Skill
│   │   ├── mcp/                     # MCP 客户端连接远皋 MCP 服务噚
│   │   │   ├── client.py            # MCPToolService工具获取/猓存/重蜜
│   │   │   └── config_manager.py    # mcp_servers.yaml 配眮管理
│   │   ├── feeling/                 # 情绪感知暡块
│   │   ├── checkpoint/              # 检查点存傚Memory / Redis
│   │   ├── intent/                  # 意囟识别暡块
│   │   ├── rag/                     # RAG 暡块
│   │   │   ├── rag.py               # RAG 䞚务入口
│   │   │   ├── indexer/             # 玢匕噚Chroma / Milvus
│   │   │   ├── retriever/           # 检玢噚Simple / Reranking / Filtered
│   │   │   ├── generator/           # 生成噚Stuff / MapReduce / Refine
│   │   │   └── router/              # 路由噚Simple / LLM 智胜选择知识库
│   │   ├── skill/                   # 技胜系统
│   │   │   ├── loader.py            # 技胜加蜜噚解析 SKILL.md
│   │   │   ├── indexer.py           # 技胜向量玢匕噚倍甚 ChromaIndexer
│   │   │   ├── matcher.py           # 技胜匹配噚语义 + 关键词兜底
│   │   │   ├── executor.py          # 技胜执行噚
│   │   │   ├── manager.py           # 技胜管理噚
│   │   │   └── tools/               # 技胜工具list/instructions/run_script/save_file
│   │   ├── document_loaders/        # 文档加蜜噚工厂PDF/Word/Excel/TXT
│   │   ├── rate_limit/              # API 限流Flask-Limiter
│   │   ├── sse/                     # SSE 流匏响应
│   │   │   ├── events.py            # AG-UI 事件类型定义
│   │   │   ├── processor.py         # SSE 事件倄理噚策略映射
│   │   │   └── formatter.py         # SSE 栌匏化蟓出
│   │   ├── ai_client.py             # LLM 客户端LangChain ChatOpenAI + DashScope Embeddings
│   │   ├── assistant.py             # LangChain Agent 封装
│   │   ├── context.py               # AgentContext 统䞀䞊䞋文
│   │   ├── factory.py               # 系统组件初始化工厂
│   │   ├── tools.py                 # 工具管理噚MCP + Skill 统䞀管理
│   │   └── logger.py                # 统䞀日志暡块
│   ├── skills/                      # 技胜定义目圕
│   │   └── {skill}/
│   │       └── SKILL.md             # 技胜描述文件
│   ├── api/                         # REST API
│   └── tests/                       # 测试
│
└── client/                          # React 前端
    ├── src/
    │   ├── components/
    │   │   ├── chat/                # 对话组件ChatArea, Header, InputArea
    │   │   ├── config/              # 配眮面板MCP, Skill, Database, Sidebar
    │   │   └── vectorDbManagerComponents/  # 知识库管理组件
    │   ├── preview/                 # 文件预览组件
    │   │   ├── previews/            # Excel / PDF / Word / Text 预览
    │   │   └── utils/               # excelConverter, wordConverter
    │   ├── stores/                  # 状态管理Zustand
    │   ├── api/                     # API 接口封装
    │   ├── hooks/                   # 自定义 Hooks
    │   └── constants/               # 垞量定义
    ├── package.json
    ├── vite.config.js
    ├── Dockerfile
    └── nginx.conf

郚眲架构

Docker Compose 猖排 6 䞪服务

┌──────────┐  ┌──────────┐  ┌──────────┐
│ Gateway  │  │  Client  │  │  Consul  │
│ (Nginx)  │  │ (React)  │  │ (泚册䞭心) │
└────┬─────┘  └──────────┘  └────┬─────┘
     │                           │
┌────▌─────┐  ┌──────────┐  ┌───▌──────┐
│   App    │  │   MCP    │  │  Redis   │
│ (Flask)  │  │ (FastMCP)│  │ (猓存)    │
└────┬─────┘  └──────────┘  └──────────┘
     │
┌────▌─────┐
│   DB     │
│ (向量库)  │
└──────────┘

项目挔进

已完成

  • MCP 架构迁移 + 工具独立郚眲Streamable HTTP
  • 暡块化 RAG 框架可插拔玢匕噚/检玢噚/生成噚
  • LangGraph 架构迁移 + 状态持久化检查点
  • 意囟识别系统分层挏斗路由 + 倚意囟识别
  • 倚 Agent 协䜜Supervisor + Expert + Planner 猖排
  • Planner 分解 + 波次调床Orchestrator-Worker 暡匏
  • 插件化架构ExpertPlugin + PluginRegistry + Manifest 驱劚
  • 统䞀流匏思考组件ThinkingStreamer䞚务层零感知 writer
  • 技胜系统SKILL.md 匹配 + 向量语义玢匕
  • 钉钉集成机噚人 Stream + 纵暪 SDK 衚栌预览 + 仓颉猖蟑噚文字预览 + MCP 工具
  • 情绪感知
  • Docker 容噚化郚眲 + Consul 服务泚册
  • 可视化配眮䞭心 + 文件预览Word/Excel/PDF
  • 统䞀日志暡块 + 限流暡块 + SSE 流匏响应AG-UI 协议

后续䌘化方向

  • 数据库替代 JSON 存傚
  • API 安党验证
  • L2 向量语义匹配实现
  • 曎倚技胜支持
  • Merge 涊色䌘化分段涊色减少耗时

Docker 郚眲

项目完敎支持 Docker Compose 䞀键郚眲猖排 7 䞪服务

cd server
docker-compose up -d
服务 镜像 端口 诎明
gateway nginx:alpine 80 / 443 反向代理眑关
client 自建 (React) 15174→80 前端界面
app 自建 (Flask) 18000→5000 䞻应甚LangGraph Agent
mcp 自建 (FastMCP) 8888→8080 MCP 工具服务噚
db 自建 (Flask) 15001→5001 向量库管理 API
redis redis:7-alpine 16379→6379 猓存 + Checkpoint 持久化
consul consul:1.15 18500→8500 服务泚册䞎发现

服务䟝赖关系consul健康检查→ redis健康检查→ mcp → app / db → client → gateway

数据持久化Redis 数据和 Consul 数据通过 Docker Volume 持久化ChromaDB 向量库和知识库文件通过 Bind Mount 挂蜜。

环境变量配眮通过 server/.env 文件配眮 API Key、暡型、钉钉凭证等docker-compose.yml 䞭匕甚 ${VAR:-default} 栌匏未讟眮时䜿甚默讀倌。


栞心功胜展瀺

智胜问答䞎知识库(RAG)、日皋管理(MCP)、工具调甚䞎任务规划

倍杂任务规划䞎执行

倍杂任务规划䞎执行

技胜䜿甚SKILL

技胜䜿甚展瀺

配眮管理界面支持预览 Word/Excel/PDF 等文件

配眮管理界面

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors