88sequenceDiagram
99 autonumber
1010 participant User as 用户
11- participant UI as ChatInput.vue
11+ participant UI as ChatInput/ChatView.vue
12+ participant Store as chatStore.sendMessage()
13+ participant IPC as presenter:call (IPC)
1214 participant AgentP as AgentPresenter.sendMessage()
1315 participant MsgMgr as MessageManager
1416 participant StreamGen as StreamGenerationHandler
@@ -19,7 +21,9 @@ sequenceDiagram
1921 participant EventBus as EventBus
2022
2123 User->>UI: 输入内容并点击发送
22- UI->>AgentP: sendMessage(agentId, content)
24+ UI->>Store: handleSend(message)
25+ Store->>IPC: presenter:call(agentPresenter.sendMessage)
26+ IPC->>AgentP: sendMessage(agentId, content)
2327
2428 Note over AgentP,MsgMgr: 1. 创建用户消息
2529 AgentP->>MsgMgr: sendMessage(agentId, content, 'user')
@@ -76,7 +80,7 @@ sequenceDiagram
7680 else permission 事件
7781 AgentLoop->>EventBus: send { tool_call: 'permission-required' }
7882 AgentLoop->>AgentLoop: needContinue = false (等待用户响应)
79- break 退出循环等待用户批准
83+ Note over AgentLoop: 退出循环等待用户批准
8084 end
8185
8286 alt stop event
@@ -85,7 +89,7 @@ sequenceDiagram
8589 Note over AgentLoop: 继续循环
8690 else end/max_tokens
8791 Note over AgentLoop: 结束循环
88- 需要 break
92+ Note over AgentLoop: 需要 break
8993 end
9094 end
9195 end
@@ -119,7 +123,46 @@ sequenceDiagram
119123- StreamGenerationHandler.startStreamCompletion: ` src/main/presenter/agentPresenter/streaming/streamGenerationHandler.ts:54-179 `
120124- agentLoopHandler.startStreamCompletion: ` src/main/presenter/agentPresenter/loop/agentLoopHandler.ts:145-668 `
121125
122- ## 2. Agent Loop 详细流程
126+ ## 2. 渲染与流式更新流程(含 Minimap)
127+
128+ ``` mermaid
129+ sequenceDiagram
130+ autonumber
131+ participant UI as ChatInput/ChatView (Renderer)
132+ participant Store as chatStore (Renderer)
133+ participant IPC as presenter:call (IPC)
134+ participant AgentP as AgentPresenter (Main)
135+ participant StreamGen as StreamGenerationHandler (Main)
136+ participant LLM as LLMProviderPresenter (Main)
137+ participant LLMH as LLMEventHandler (Main)
138+ participant Sched as StreamUpdateScheduler (Main)
139+ participant Cache as messageRuntimeCache (Renderer)
140+ participant List as MessageList/Minimap (Renderer)
141+
142+ UI->>Store: send(message)
143+ Store->>IPC: presenter:call(agentPresenter.sendMessage)
144+ IPC->>AgentP: sendMessage(agentId, content)
145+ AgentP->>StreamGen: generateAIResponse + startStreamCompletion
146+ StreamGen->>LLM: startStreamCompletion()
147+ LLM-->>LLMH: stream chunks
148+ LLMH->>Sched: enqueueDelta(content/tool_call/usage)
149+ Sched-->>Store: STREAM_EVENTS.RESPONSE (init/delta)
150+ Store->>Cache: cacheMessage/ensureMessageId
151+ Cache-->>List: messageItems/minimapMessages
152+ LLMH-->>Sched: flushAll(final)
153+ Sched-->>Store: STREAM_EVENTS.RESPONSE (final)
154+ LLMH-->>Store: STREAM_EVENTS.END/ERROR
155+ ```
156+
157+ ** 关键文件位置** :
158+ - chatStore.sendMessage + stream handlers: ` src/renderer/src/stores/chat.ts `
159+ - Presenter IPC: ` src/renderer/src/composables/usePresenter.ts ` , ` src/main/presenter/index.ts `
160+ - AgentPresenter.sendMessage: ` src/main/presenter/agentPresenter/index.ts `
161+ - StreamGenerationHandler.startStreamCompletion: ` src/main/presenter/agentPresenter/streaming/streamGenerationHandler.ts `
162+ - LLMEventHandler + StreamUpdateScheduler: ` src/main/presenter/agentPresenter/streaming/llmEventHandler.ts ` , ` src/main/presenter/agentPresenter/streaming/streamUpdateScheduler.ts `
163+ - MessageList/Minimap: ` src/renderer/src/components/message/MessageList.vue ` , ` src/renderer/src/components/message/MessageMinimap.vue `
164+
165+ ## 3. Agent Loop 详细流程
123166
124167``` mermaid
125168sequenceDiagram
0 commit comments