- Fixed three key defects in multi-turn dialogue handling: improved RAG to utilize merged messages, enhanced intent classification with recent memory, and ensured proper merging of chat and consultation memories. - Closed five existing test bugs unrelated to the current round, including parameter adjustments and assertion corrections in various test files. - Finalized adjustments in the F-β selection process to align race condition handling in test cases, ensuring all relevant tests pass successfully. This update enhances the coherence of multi-turn dialogues and improves the reliability of the testing framework.
3.3 KiB
3.3 KiB
2026-09-14 · 多轮对话三缺陷修复 + 既存测试 bug 收口 + F-β 选A
起因:用户「看看其他 agent 里的构造有没有类似缺陷」。结论:三缺陷是节点函数设计选择, 非 LangGraph 架构问题;全仓唯一历史感知路径是交易续轮(
_trade_context_window/_resolve_advisor_tool)。
做了什么
| 项 | 职责 | 改动要点 |
|---|---|---|
| 缺陷① RAG 只用当前消息 | visitor_service / customer_service |
各加 _merged_items / _merged_memory_text / _rag_query,从已加载 state 合并 consult+chitchat(按 ts 排序),不再回 Redis 重取 |
| 缺陷② 意图分类只用当前消息 | customer_prompts 等 |
INTENT prompt 注入 {memory}(合并后的近期记忆) |
| 缺陷③ 闲聊+咨询记忆割裂从不合并 | 同上 + tool_service / kb_tools |
RAG query 拼接近期原文(解「那申购呢」省略指代)· run_tool 给 search_knowledge 转发 context_window(原死管道:tool_node 注入但 run_tool 丢弃)· search_knowledge 加 context_window 参数拼接进 query |
| 既存测试 bug 收口(5 处) | tests/ + trade_action_service.py |
均非本轮三缺陷引入,git stash 取证为 pristine HEAD 即失败(见下) |
| F-β 选A 收口 | tests/test_convert_accept.py |
竞态用例抢占者份额 100→50 对齐 L1 四元组 |
问数线 analyst_agent 排除:单发 NL→SQL,无 RAG/意图/记忆,不适用本修法。
5 处既存测试 bug(非本轮引入 · 已取证)
| # | 文件 | 问题 | 修法 |
|---|---|---|---|
| 1 | tests/test_wave3_customer_service.py |
fake_suit 缺 user_message 形参 |
补形参 |
| 2 | tests/test_kb_tools.py |
test_query_injected 断言缺 _context_window |
断言补 "_context_window": "" |
| 3 | tests/test_wave2_prompts.py |
VALID_INTENTS 断言 13,实际 14(含 trade_action) |
13→14 |
| 4 | app/service/trade_action_service.py |
真 bug:looks_like_trade_execute 把「我上个月申购了啥」误判 trade_action |
_TRADE_QUERY_MARKERS 补过去问法(了啥/过啥/了什么/过什么/了哪些/过哪些) |
| 5 | tests/test_chat.py |
test_chat mock 返 4 元组,现 run_customer_chat 返 5(+pending_trade) |
补 None |
F-β 选A 收口
test_convert_confirm.py 的 28 条其实已在 f856ab4(客户 C3→C4)修掉;仅剩
test_convert_accept.py::test_accept_uk_idem_race_falls_back_to_idempotent 1 条:
L1 同键异体→409 后,竞态用例「抢占者」份额 100≠50 四元组不匹配误走冲突 → 抢占者份额改 50。
验证
pytest tests/test_trade_gateway.py tests/test_trade_flow_service.py \
tests/test_trade_action_service.py tests/test_convert_accept.py \
tests/test_convert_confirm.py -q # 99 passed / 0 failed
仍开放
- git:
merger工作区大量未 commit(本轮三缺陷修复 + 测试 bug 收口 + F-β 收口,由用户确认提交)。 docs/memory/MEMORY.md§0 已落账本轮;docs/memory/TODO.md§进行中 已勾选;docs/memory/ITERATION.md已补 09-13/09-14 行。
记忆同步
MEMORY.md§0 交接清单(多轮三缺陷 + 5 测试 bug + F-β)TODO.md§进行中ITERATION.md表(09-13 补录 + 09-14 三行)- 本日志