From ed31c54961a17642e1c2a840ea74cb8b731e8904 Mon Sep 17 00:00:00 2001 From: yangjianbo Date: Sat, 14 Feb 2026 09:59:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(openai):=20=E6=8B=92=E7=BB=9D=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95=E5=8E=9F=E5=A7=8B=20User-Agent=20?= =?UTF-8?q?=E4=BE=BF=E4=BA=8E=E6=94=BB=E5=87=BB=E7=A0=94=E5=88=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/service/openai_gateway_service.go | 17 +---------------- ...penai_gateway_service_codex_cli_only_test.go | 5 ++--- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/backend/internal/service/openai_gateway_service.go b/backend/internal/service/openai_gateway_service.go index 3f02a8f5..2a878eba 100644 --- a/backend/internal/service/openai_gateway_service.go +++ b/backend/internal/service/openai_gateway_service.go @@ -332,7 +332,7 @@ func appendCodexCLIOnlyRejectedRequestFields(fields []zap.Field, c *gin.Context, zap.String("request_host", strings.TrimSpace(req.Host)), zap.String("request_client_ip", strings.TrimSpace(c.ClientIP())), zap.String("request_remote_addr", strings.TrimSpace(req.RemoteAddr)), - zap.String("request_user_agent", buildDetailedUserAgent(req.Header.Values("User-Agent"))), + zap.String("request_user_agent", strings.TrimSpace(req.Header.Get("User-Agent"))), zap.String("request_content_type", strings.TrimSpace(req.Header.Get("Content-Type"))), zap.Int64("request_content_length", req.ContentLength), zap.Bool("request_stream", requestStream), @@ -351,21 +351,6 @@ func appendCodexCLIOnlyRejectedRequestFields(fields []zap.Field, c *gin.Context, return fields } -func buildDetailedUserAgent(values []string) string { - if len(values) == 0 { - return "" - } - result := make([]string, 0, len(values)) - for _, value := range values { - v := strings.TrimSpace(value) - if v == "" { - continue - } - result = append(result, v) - } - return strings.Join(result, " | ") -} - func snapshotCodexCLIOnlyHeaders(header http.Header) map[string]string { if len(header) == 0 { return nil diff --git a/backend/internal/service/openai_gateway_service_codex_cli_only_test.go b/backend/internal/service/openai_gateway_service_codex_cli_only_test.go index ed6b1167..d7c95ada 100644 --- a/backend/internal/service/openai_gateway_service_codex_cli_only_test.go +++ b/backend/internal/service/openai_gateway_service_codex_cli_only_test.go @@ -131,8 +131,7 @@ func TestLogCodexCLIOnlyDetection_RejectedIncludesRequestDetails(t *testing.T) { rec := httptest.NewRecorder() c, _ := gin.CreateTestContext(rec) c.Request = httptest.NewRequest(http.MethodPost, "/v1/responses?trace=1", bytes.NewReader(nil)) - c.Request.Header.Add("User-Agent", "curl/8.0") - c.Request.Header.Add("User-Agent", "Codex/1.2.3 (cli)") + c.Request.Header.Set("User-Agent", "codex_cli_rs/0.98.0 (Windows 10.0.19045; x86_64) unknown") c.Request.Header.Set("Content-Type", "application/json") c.Request.Header.Set("OpenAI-Beta", "assistants=v2") @@ -144,7 +143,7 @@ func TestLogCodexCLIOnlyDetection_RejectedIncludesRequestDetails(t *testing.T) { Reason: CodexClientRestrictionReasonNotMatchedUA, }, body) - require.True(t, logSink.ContainsFieldValue("request_user_agent", "curl/8.0 | Codex/1.2.3 (cli)")) + require.True(t, logSink.ContainsFieldValue("request_user_agent", "codex_cli_rs/0.98.0 (Windows 10.0.19045; x86_64) unknown")) require.True(t, logSink.ContainsFieldValue("request_model", "gpt-5.2")) require.True(t, logSink.ContainsFieldValue("request_query", "trace=1")) require.True(t, logSink.ContainsFieldValue("request_prompt_cache_key_sha256", hashSensitiveValueForLog("pc-123")))