feat(agent): use native parallel nodes and early reply streaming

This commit is contained in:
Eric Wang
2026-10-27 00:29:14 +08:00
parent e6a96ed135
commit 666dda4dba
14 changed files with 635 additions and 180 deletions
+7 -1
View File
@@ -370,7 +370,7 @@ docs/langgraph/
| 5. 拍照与核实 | ✅ 完成 | 真实模型 4/4 + 12/12 + 2/2(20261021 基准) |
| 6. 四接口业务状态 | 已实现 | 应用服务、异步 repository、字段别名、会话串行与接口回归 |
| 7. 持久化 | SQLite/PostgreSQL 初版已实现 | `src/storage/`;真实两库集成、进程退出恢复、幂等和版本冲突;见 [agent-storage.md](agent-storage.md) |
| 8. 真流式 | 已实现核心路径 | 模型增量、前缀校验、取消与提交回调;流式终止事件回归 |
| 8. 真流式 | 已实现核心路径 | 原生 astream_events / Runnable 流、采集并行节点、回复校验后提前刷新;见 [agent-streaming.md](agent-streaming.md) |
| 9—10 | 未完成 | 生产访问边界、容量验证与双后端等价性验收继续保留 |
数据库实现阶段全量测试 315 通过,包含真实 SQLite/PostgreSQL 集成测试。
@@ -380,6 +380,11 @@ docs/langgraph/
提示词来源和逐字比对见 `test/agent/test_workflow_prompts.py`。下方真实模型
黄金评测结果是此前轮次,数据库开发和本次模型适配迁移均未重新运行 46 条评测。
原生并行/流式更新:采集回复与字段提取通过图条件边并行并原生汇合,
人员核实保留依赖回复的串行提取。validated_reply 的原生结束事件触发
最后一句刷新,业务提交成功后才发送字段差量与 done。取消、失败和
SQLite 快照恢复有独立回归;详见 [agent-streaming.md](agent-streaming.md)。
### 已落地的架构决策
1. **LLM 提议、代码校验(propose-validate)**:所有 stage_code 由节点内 LLM 产出(提示词即程序),代码只做前缀解析、白名单校验(含 clientMode 出口)和落库;曾尝试的代码强制推进/短促词守卫已按此分工移除。
@@ -420,6 +425,7 @@ src/agent/
confirm.py 核实节点(字段提取按 person_index 隔离)
llm.py LLMService Protocol / Fake / ChatOpenAI(超时重试温度) / workflow fake
chat_model.py ChatOpenAI 流式迭代器的显式关闭与并发上下文隔离
reply_stream.py 原生 RunnableGenerator 的前缀校验流
fields.py 字段三态校验;clock.py 可控时钟
prompts/ 七份版本化提示词(来源 nodeId + 逐字原文)
```