一、整体链路
sequenceDiagram
autonumber
actor U as 用户
participant UI as 首页向导/文章阅读器
participant JS as theme.js + A2UI Adapter
participant R as Gin Router
participant MW as AI Effects Middleware
participant A as readingAssistantProxy
participant C as 会话内存
participant P as 语义规划器
participant LLM as OpenAI兼容模型/Ollama
participant H as HandlerRegistry
participant E as EvidenceRetriever
participant SC as SiteCatalog
participant DB as 数据库/搜索索引
participant S as Interaction Store
U->>UI: 输入问题或点击预设
UI->>JS: submit / preset click
JS->>R: POST /api/v1/site-agent/query
protocol + surface + article + conversation R->>MW: captureRequestEvent MW->>A: askHandler A->>A: 校验协议、输入长度、surface、scope A->>A: 创建/校验匿名 Session Cookie A->>A: IP + Session 限流 A->>C: beginConversation C-->>A: conversationID + rolling memory + 最近消息 opt 文章场景 A->>DB: FindPublicByID(articleID) DB-->>A: 标题 + Markdown 正文 end A->>A: 获取并发槽位 A->>P: recognizeReadingTask(input, article) alt 首页预设可确定 P-->>A: preset TaskRequest else 普通问题 P->>P: 上下文指代消解 + 规则 fallback P->>LLM: 结构化规划请求
JSON Schema, temperature=0 alt 模型成功 LLM-->>P: TaskRequest JSON P->>P: sanitize + normalize + validate else 超时/错误/非法 JSON P->>P: 使用确定性 fallback TaskRequest end P-->>A: 标准语义任务 end A->>H: Prepare(TaskRequest, current article) H->>E: Retrieve(EvidenceQuery[]) E->>SC: Overview / Query SC->>DB: 文章、标签、分类、页面查询 DB-->>SC: 公开资源或检索结果 SC-->>E: PublicResource[] E-->>H: EvidenceBundle
E1, E2... + status H-->>A: PreparedTask alt 无须模型生成 A->>A: 使用确定性答案 else 需要生成 A->>LLM: system prompt + memory + evidence + question LLM-->>A: 完整答案 A->>A: ValidateGrounding alt 引用不合格 A->>A: GroundedFallback end end A->>A: BuildTaskA2UI A->>S: 保存 interaction + evidence A-->>JS: SSE ready
TaskResult + A2UI + interactionID A-->>JS: SSE delta
当前为整段答案 JS->>UI: 前端逐字 reveal + Markdown/引用渲染 A->>C: completeConversation A-->>JS: SSE done JS-->>U: 最终答案、资源卡片、反馈入口
protocol + surface + article + conversation R->>MW: captureRequestEvent MW->>A: askHandler A->>A: 校验协议、输入长度、surface、scope A->>A: 创建/校验匿名 Session Cookie A->>A: IP + Session 限流 A->>C: beginConversation C-->>A: conversationID + rolling memory + 最近消息 opt 文章场景 A->>DB: FindPublicByID(articleID) DB-->>A: 标题 + Markdown 正文 end A->>A: 获取并发槽位 A->>P: recognizeReadingTask(input, article) alt 首页预设可确定 P-->>A: preset TaskRequest else 普通问题 P->>P: 上下文指代消解 + 规则 fallback P->>LLM: 结构化规划请求
JSON Schema, temperature=0 alt 模型成功 LLM-->>P: TaskRequest JSON P->>P: sanitize + normalize + validate else 超时/错误/非法 JSON P->>P: 使用确定性 fallback TaskRequest end P-->>A: 标准语义任务 end A->>H: Prepare(TaskRequest, current article) H->>E: Retrieve(EvidenceQuery[]) E->>SC: Overview / Query SC->>DB: 文章、标签、分类、页面查询 DB-->>SC: 公开资源或检索结果 SC-->>E: PublicResource[] E-->>H: EvidenceBundle
E1, E2... + status H-->>A: PreparedTask alt 无须模型生成 A->>A: 使用确定性答案 else 需要生成 A->>LLM: system prompt + memory + evidence + question LLM-->>A: 完整答案 A->>A: ValidateGrounding alt 引用不合格 A->>A: GroundedFallback end end A->>A: BuildTaskA2UI A->>S: 保存 interaction + evidence A-->>JS: SSE ready
TaskResult + A2UI + interactionID A-->>JS: SSE delta
当前为整段答案 JS->>UI: 前端逐字 reveal + Markdown/引用渲染 A->>C: completeConversation A-->>JS: SSE done JS-->>U: 最终答案、资源卡片、反馈入口
Conversation
评论