diff --git a/ai_knowledge_base_v2/development_records/2026-07-08-concurrency-optimization-plan.md b/ai_knowledge_base_v2/development_records/2026-07-08-concurrency-optimization-plan.md index 4e80625..b263e79 100644 --- a/ai_knowledge_base_v2/development_records/2026-07-08-concurrency-optimization-plan.md +++ b/ai_knowledge_base_v2/development_records/2026-07-08-concurrency-optimization-plan.md @@ -225,3 +225,25 @@ 1. 飞书 token、wiki node、children、docx/file 文本缓存需要与阶段 4 Redis 缓存一起设计。 2. async DB session 是否引入,需要结合 SQLAlchemy 连接池和迁移成本单独评估。 3. 如果短期不引入 async DB session,飞书/RAG 可以先使用独立的异步外部请求层,DB 读写仍保持同步但缩短持有时间。 + +## 阶段 3A 实施计划 + +目标:把模型真实流式阶段中的上游长连接调用改成异步 `httpx.AsyncClient.stream`,减少模型生成期间对同步 worker 线程的占用。 + +实施范围: + +1. `/chat/completions` 改为 async SSE 生成器。 +2. `ChatStreamService` 增加 async 流式入口,保留原同步入口作为兼容和回退。 +3. `ModelStreamService` 增加 async 流式入口: + - OpenAI 兼容协议使用 `AsyncClient.stream`。 + - Anthropic Messages 协议使用 `AsyncClient.stream`。 + - mock、未命中知识库、关闭流式、MiniMax/Gemini 等仍走安全降级输出。 +4. SSE 事件格式保持不变,用户端无需改动。 +5. 队列兜底先保持当前进程内逻辑不变,Redis 全局队列仍放到阶段 4。 + +风险控制: + +1. 不修改飞书检索、RAG 排序、段落截取和知识库召回逻辑。 +2. 不修改数据库 schema。 +3. 不把当前工作区已有的 5 个后端未提交文件混入阶段 3A 提交。 +4. 如果 async 模型流式验证失败,保留同步流式入口,便于快速回退。