From dff745cde2bf16e5311e1e749c080e3bb8301d79 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Fri, 30 Oct 2026 17:21:51 +0800 Subject: [PATCH] =?UTF-8?q?test(rtchild):=20rt=5Fchildren=20stop=20?= =?UTF-8?q?=E5=88=A4=E6=8D=AE=E6=94=B9=E4=B8=BA=E7=AD=89=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=85=A5=E8=B4=A6=EF=BC=8C=E4=B8=8D=E7=AD=89=20Rounds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 判据偶发红(实测约 1/12):`stop 没有告诉模型用 rt_transcript 取回原文`。 根因是**判据自己等早了**,不是产品缺陷: - `Rounds` 在 ChatStream 被调用时就自增(请求刚构建完) - assistant 那条消息是**流结束后**才追加进 history 的 于是 stop 可能读到 n==0,走"本次通话没有上下文需要交接"分支 —— 而那个分支**本来就该**不提 rt_transcript(真没内容可取)。 改为等 RTTranscript 非空。 ★ 这是同一类坑的第二次复发(第一次在 rtchild_r7b_test): 判据等"请求已发出"而不是"结果已落库"。 """ --- internal/agent/core/rtchild_route_test.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/agent/core/rtchild_route_test.go b/internal/agent/core/rtchild_route_test.go index 4885f3e0..7775aef6 100644 --- a/internal/agent/core/rtchild_route_test.go +++ b/internal/agent/core/rtchild_route_test.go @@ -381,9 +381,16 @@ func TestRTChildrenTool_FullLifecycle(t *testing.T) { if !strings.Contains(out, "打断") { t.Fatalf("send 没说明打断语义:%q", out) } - waitFor(t, "rtchild 跑了一轮", func() bool { - st, ok := host.RTChildStats("call-1") - return ok && st.Rounds >= 1 + // ★ 必须等**历史入账**,不能等 Rounds。 + // + // Rounds 在 ChatStream **被调用时**就自增(请求刚构建完),而 assistant + // 那条消息是**流结束后**才追加进 history 的。等 Rounds 的话,随后的 + // stop 可能读到 n==0,于是走"本次通话没有上下文需要交接"分支 —— + // 判据就会怪 stop 没提示 rt_transcript,而其实是它自己等早了。 + // (同 rtchild_r7b_test 的坑,实测约 1/12 概率。) + waitFor(t, "rtchild 跑了一轮并写入历史", func() bool { + tr, ok := host.RTTranscript("call-1") + return ok && len(tr) > 0 }) // ④ stop:回收并交接