新增 Pipecat Flows 兼容性 spike 结论
交接文档规定"未经 spike 结论,不进入 Phase 3"。本次完成 Phase 1 spike, 7 项验证全部通过,并给出可进入 Phase 2 的结论。 新增 P1-Flows兼容性Spike结论.md 核心结论: - **不装 pipecat-ai-flows**。Pipecat 1.10 内置 Flows(pipecat.flows), 装独立包会报错提示卸载;独立包 1.4.0 会把 pipecat 降到 1.4.0 - **复用 DeepSeekLLMService**,不写 FallbackProvider 适配器。它自带 DeepSeekLLMAdapter 处理 reasoning_content 回传(P0 踩过的坑), thinking 默认 disabled。代价是失去本地 vLLM 降级 - 实测:中文流式 14–22 块/回复、工具参数无重复拼接、回灌后出最终回答、 worker.cancel() 立即终止、role_message 生效 定位了 5 个坑(4 个 Flows 相关 + 1 个环境): 1. FlowManager.initialize 是协程但签名显示 -> None,漏 await 静默失效, role_message/task_messages/工具全部不生效而 LLM 照样回复,极易误判 2. 必须用 PipelineRunner 跑 worker;直接 run() 会让工具执行失败, 异常被转成通用错误串,handler 从不执行,默认日志看不到 3. respond_immediately 默认 True,initialize 会立刻触发一轮回复, 做归因测试时不清空观察窗口会归因错 4. role_message 与 task_messages 各产生一条 system 消息, 两者不要同时用(切回本地 vLLM 时会 400) 5. NLTK punkt_tab 本地也需预装,否则 setup 超时卡住 对现有功能的影响:分句 TTS、RTVI、记忆身份不受影响; SearXNG 工具需迁移;本地 vLLM fallback 会失去。 第四节给出 Phase 3 的最小生产集成 diff 要点。
This commit is contained in:
@@ -122,6 +122,21 @@ metrics 与 interruption,不重写已有的记忆、身份、LLM/TTS 适配。
|
||||
- **不做 AEC、不做播放参考、不做打断**——那些要真实声卡和硬件
|
||||
- 它是 N5095 客户端的雏形,不是产品代码
|
||||
|
||||
## 八点五、2026-09-16 后续架构补充
|
||||
|
||||
媒体传输闭环不等于 Agent、长期记忆和实时打断已经闭环。真人网页测试后确认:
|
||||
|
||||
- 姓名档案已经能跨连接恢复,但通用“记住/偏好”仍写 candidate,默认不会召回;
|
||||
- 当前 `SimpleVAD` 能判断 700ms 尾静音,助手说话时检测到用户声音却只记日志;
|
||||
- `InterruptionFrame` 和异步任务取消能力存在,但没有由 user-started-speaking
|
||||
可靠触发,也没有保证清空浏览器已经缓冲的音频;
|
||||
- 当前只有 `web_search` 的手写工具循环。
|
||||
|
||||
后续 Agent 层选择 **Pipecat Flows 渐进集成**,继续坚持 A 方案,不重写已经验证的
|
||||
传输层。因为 Flows 使用 Pipecat `LLMService` 与 context aggregator,而项目当前
|
||||
使用自有 `ConversationEngine`,必须先做独立兼容性 spike,并保留 legacy feature
|
||||
flag。详细交接见 [[P1-Pipecat Flows Agent化与记忆改造交接]]。
|
||||
|
||||
## 八、复现
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user