From a5f11cc00350e067d12ddf894220033cdc6dc266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Tue, 2 Jun 2026 23:41:49 +0800 Subject: [PATCH] Add files via upload --- internal/multiagent/eino_transient_retry.go | 6 +----- internal/multiagent/eino_transient_retry_test.go | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/multiagent/eino_transient_retry.go b/internal/multiagent/eino_transient_retry.go index ca7b214c..7311a0f7 100644 --- a/internal/multiagent/eino_transient_retry.go +++ b/internal/multiagent/eino_transient_retry.go @@ -3,7 +3,6 @@ package multiagent import ( "context" "errors" - "io" "strings" "time" @@ -24,10 +23,6 @@ func isEinoTransientRunError(err error) bool { if err == nil { return false } - // io.EOF 常见于流式正常收尾,不应触发分段重试。 - if errors.Is(err, io.EOF) { - return false - } if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { return false } @@ -66,6 +61,7 @@ func isEinoTransientRunError(err error) bool { "tls handshake timeout", "stream error", "unexpected eof", + `": eof`, // net/http: Post "url": EOF (often wraps io.EOF) "unexpected end of json", "status code: 406", "status code: 502", diff --git a/internal/multiagent/eino_transient_retry_test.go b/internal/multiagent/eino_transient_retry_test.go index 7ba15afd..1ca8cf58 100644 --- a/internal/multiagent/eino_transient_retry_test.go +++ b/internal/multiagent/eino_transient_retry_test.go @@ -3,6 +3,7 @@ package multiagent import ( "context" "errors" + "fmt" "io" "testing" "time" @@ -21,6 +22,8 @@ func TestIsEinoTransientRunError(t *testing.T) { {"nil", nil, false}, {"io eof", io.EOF, false}, {"plain eof text", errors.New("EOF"), false}, + {"post chat completions eof", errors.New(`Post "https://token-plan-cn.xiaomimimo.com/v1/chat/completions": EOF`), true}, + {"post eof wraps io.EOF", fmt.Errorf(`Post %q: %w`, "https://token-plan-cn.xiaomimimo.com/v1/chat/completions", io.EOF), true}, {"429", errors.New("HTTP 429 Too Many Requests"), true}, {"rate limit", errors.New(`{"error":"rate limit exceeded"}`), true}, {"connection reset", errors.New("read tcp: connection reset by peer"), true},