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
+12
View File
@@ -90,6 +90,18 @@
## 流式、并发与字段一致性约定
- 事故采集的回复与抽取为独立 LangGraph 节点,通过原生条件分支并行,
`add_edge(["collect", "extract_accident_fields"], "merge_collect")` 汇合;
分支各写独立通道,参考时间在 normalize_input 固定,合并后统一提交。
人员抽取依赖本轮模型回复,暂保留串行,不改变其提示词和人员切换语义。
- 模型文本与生命周期由原生 `astream_events` / `RunnableGenerator` 驱动,
不再自行维护图后台任务、队列或 custom event bus。原始模型 token 先经过
业务前缀校验;只有受控回复 Runnable 的文本流能映射为 TextDelta。
`validated_reply` 的正常 chain-end 映射为内部 ReplyFinished,立即刷新
分句缓冲;它不会对外新增 SSE 事件,也不表示字段已提交。
即使本轮无 formUpdate 或 needFormUpdate=false,最后一句也不等待抽取结束。
业务提交失败仍发 error,不能发 formUpdate/done 冒充成功。
- 阶段前缀先缓冲并按当前节点的转换规则校验,非法前缀不推送;
未输出时仍可使用一次修复预算。已开始输出后,全文格式或时间依据
校验失败会以错误终止,不在同一流中拼接修复答案,不提交本轮业务字段。