From 7560ce1976add1577b3e1f2ec0ea1a5bd9f74fd8 Mon Sep 17 00:00:00 2001 From: cexll Date: Fri, 26 Dec 2025 14:51:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E6=9C=AA=E7=9F=A5?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=A0=BC=E5=BC=8F=E7=9A=84=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=99=AA=E5=A3=B0=20(#96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - codeagent-wrapper 在处理 Claude Code 等其他后端的事件流时 - 对无法识别的事件格式(turn.started/assistant/user)打印警告日志 - 造成输出噪声,影响用户体验 修复: - parser.go:274 - 移除对未知事件的 warnFn 日志打印 - 改为静默 continue,直接跳过这些事件 - 添加注释说明这些事件来自其他后端,无需处理 测试: - 新增 parser_unknown_event_test.go 回归测试 - 验证未知事件不产生 "Agent event:" 日志 - 确保 Codex/Claude/Gemini 事件解析不受影响 - 所有测试通过 Closes #96 Generated with SWE-Agent.ai Co-Authored-By: SWE-Agent.ai --- codeagent-wrapper/parser.go | 4 +-- .../parser_unknown_event_test.go | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 codeagent-wrapper/parser_unknown_event_test.go diff --git a/codeagent-wrapper/parser.go b/codeagent-wrapper/parser.go index 0718d21..1d37563 100644 --- a/codeagent-wrapper/parser.go +++ b/codeagent-wrapper/parser.go @@ -271,8 +271,8 @@ func parseJSONStreamInternal(r io.Reader, warnFn func(string), infoFn func(strin continue } - // Unknown event format - warnFn(fmt.Sprintf("Unknown event format: %s", truncateBytes(line, 100))) + // Unknown event format from other backends (turn.started/assistant/user); ignore. + continue } switch { diff --git a/codeagent-wrapper/parser_unknown_event_test.go b/codeagent-wrapper/parser_unknown_event_test.go new file mode 100644 index 0000000..386d921 --- /dev/null +++ b/codeagent-wrapper/parser_unknown_event_test.go @@ -0,0 +1,33 @@ +package main + +import ( + "strings" + "testing" +) + +func TestBackendParseJSONStream_UnknownEventsAreSilent(t *testing.T) { + input := strings.Join([]string{ + `{"type":"turn.started"}`, + `{"type":"assistant","text":"hi"}`, + `{"type":"user","text":"yo"}`, + `{"type":"item.completed","item":{"type":"agent_message","text":"ok"}}`, + }, "\n") + + var infos []string + infoFn := func(msg string) { infos = append(infos, msg) } + + message, threadID := parseJSONStreamInternal(strings.NewReader(input), nil, infoFn, nil, nil) + if message != "ok" { + t.Fatalf("message=%q, want %q (infos=%v)", message, "ok", infos) + } + if threadID != "" { + t.Fatalf("threadID=%q, want empty (infos=%v)", threadID, infos) + } + + for _, msg := range infos { + if strings.Contains(msg, "Agent event:") { + t.Fatalf("unexpected log for unknown event: %q", msg) + } + } +} +