- 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.
53 lines
3.3 KiB
Markdown
53 lines
3.3 KiB
Markdown
# 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。
|
||
|
||
## 验证
|
||
|
||
```text
|
||
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 三行)
|
||
- 本日志
|