graph TD
subgraph UILayer["UI Layer"]
MR["MessageRenderer"]
BR["BlockRenderer"]
CI["ChatInterface"]
MR --> |包含| MH["MessageHeader"]
MR --> |包含| MG["MessageGroup"]
MR --> |包含| ML["MessageList"]
BR --> |包含| MTB["MainTextBlock"]
BR --> |包含| THB["ThinkingBlock"]
BR --> |包含| TB["ToolBlock"]
BR --> |包含| IB["ImageBlock"]
CI --> |包含| MI["MessageInput"]
CI --> |包含| MS["ModelSelector"]
CI --> |包含| PM["PluginManager"]
end
subgraph StateLayer["State Management Layer"]
MST["Messages Store (Redux + Adapter)"]
MBST["MessageBlocks Store (Redux + Adapter)"]
MST <--> MBST
MST --> |Actions| MST_A["updateMessage() addMessage() removeMessage()"]
MBST --> |Block Types| MBST_T["MAIN_TEXT THINKING TOOL IMAGE TRANSLATION ERROR"]
end
subgraph ChunkSystem["Chunk System"]
CT["Content Types"]
FT["Function Types"]
LT["Lifecycle Types"]
CT --> |类型| CT_T["TEXT_DELTA TEXT_COMPLETE THINKING_DELTA THINKING_COMPLETE IMAGE_CREATED IMAGE_DELTA AUDIO_DELTA ERROR"]
FT --> |类型| FT_T["MCP_TOOL_CREATED MCP_TOOL_IN_PROGRESS MCP_TOOL_COMPLETE WEB_SEARCH_IN_PROGRESS"]
LT --> |类型| LT_T["BLOCK_CREATED BLOCK_COMPLETE LLM_RESPONSE_CREATED LLM_RESPONSE_COMPLETE ERROR"]
TS["TypeScript Union Type: Chunk = TextDeltaChunk | ThinkingDeltaChunk | ..."]
end
subgraph AICore["AI Core Layer"]
subgraph PR["Provider Registry"]
OAI["OpenAI Dynamic Import"]
ANT["Anthropic Dynamic Import"]
GOO["Google Dynamic Import"]
OAC["OpenAI-Comp Dynamic Import"]
end
subgraph PS["Plugin System"]
WSP["Web Search Plugin Tavily, Searxng, Exa"]
MTP["MCP Tools Plugin Protocol, Tool Call, Recursion"]
RP["Reasoning Plugin o1 Model, Thinking, Time Track"]
TP["Translation Plugin Multi-Language, Auto Lang"]
end
subgraph PF["Prepare Fetch"]
CET["createexecutor"]
CET --> |创建model| CBM["createBaseModel"]
CET --> |创建插件| LMV["PuginEngine"]
LMV --> |注册| SP["MiddleWare"]
end
subgraph Middleware["Middleware Registy"]
M1["Stream Transform"]
M2["..."]
end
subgraph Fetch["Fetch"]
end
LMV --> PS
PR --> PF
SP --> PS
SP --> Middleware
CBM --> |Streamtext| Fetch
CBM --> |GenerateText| Fetch
end
subgraph Legacy["Legacy Model (fallback) "]
AP["Xxx ApiClient"]
--> EAS["Legacy Middleware"]
--> AICP["Leagcy Fetch"]
--> SRC["Stream<RawChunk>"]
end
subgraph MiddlewareLayer["Middleware Layer"]
EHM["ErrorHandler Middleware"]
SAM["StreamAdapter Middleware"]
AHM["AbortHandler Middleware"]
EHM --> MTCM["McpToolChunk Middleware"]
SAM --> TTEM["ThinkingTag Extraction Middleware"]
AHM --> TCM["TextChunk Middleware"]
MTCM --> |功能| MTCM_F["Tool Detection Recursive Call Depth Control"]
TTEM --> |功能| TTEM_F["<think> tags Tag Boundary State Machine"]
TCM --> |功能| TCM_F["Text Delta Streaming Completion"]
DF["Data Flow: ReadableStream<Chunk> -> TransformStream -> ProcessedStream"]
end
UILayer --> StateLayer
StateLayer --> AICore
EAS --> |创建、注册| MiddlewareLayer
AICore --> Legacy
DF --> SRC
Legacy --> ChunkSystem
AICore --> ChunkSystem
ChunkSystem --> StateLayer
StateLayer --> UILayer
